Chapter 18. Issue Tracking


BUG REPORTING

A recipe used to install an application should offer the "report" target.
This is the standard way for a user to report a problem.  The recipe should
then help the user with reporting a problem as much as possible.

An example is to send the developer an e-mail.  All useful information is put
in the message by the recipe, so that the user only has to fill in his
specific problem.  Example:

	report:
		tmpfile = `tempfname()`
		:print >$tmpfile  program version: $VERSION
		:print >>$tmpfile system type: `os.name`
		@if os.name == "posix":
			:print >>$tmpfile "      " `os.uname()`
		:do email {subject = 'problem in foobar'}
				{to = bugs@foobar.org}
				{edit}
				{remove}
				$tmpfile

When a web form is to be filled in, give the user hints about what information
to fill in certain fields and start a browser on the right location.  Example:

	report:
		:do view {async} http://www.foo.org/bugreport/
		tmpfile = `tempfname()`
		:print >$tmpfile   use this information in the bug report:
		:print >>$tmpfile  program version: $VERSION
		:print >>$tmpfile  system type: `os.name`
		:do view {remove} $tmpfile


BUG FIXING

One a bug has been fixed, the developer needs to update the related bug
report.  The "tracker" target is the standard way for a developer to get to
the place where the status of the bug report can be changed.

Since trackers work in many different ways the recipe has to specify the
commands.  Example:

	tracker:
		:do view {async} http://www.foo.org/tracker?assigned_to=$USER

This is very primitive.  The developer still has to locate the bug report and
change the status and add remarks.  The above example at least lists the bug
reports for the current user.