The general practice is to open a bug when some task needs to be done, even if there is no "bug" involved; it's really a "task tracker", not a "bug tracker". The idea is to provide a "thread" of discussion and a place to track development.
That way, when a developer is later reading the code, and wondering why a certain database design is used (for example), they can look up a bug number referenced in a comment, and see the entire discussion thread for that design decision.
BTW, this is different from other ASF projects, who prefer discussion on mailing lists and bugs on the bugzilla. That's OK, we're different!
Bugzilla also offers a more persistent way of storing things like patches and votes; these are less likely to get lost than they would be if they were posted on the mailing lists. Plugins that are likely to be frequently downloaded by third parties and users, should probably go on the wiki – e.g. the CustomPlugins page – but stuff that is intended for inclusion in the main distro, Bugzilla is best.
(consider this an example of how the milestones are used, assuming that in this example we are somewhere between the 3.0.x and 3.1.0 releases. there's no need to update this example for every future release...)
Here is how you handle bug triage:
Severity describes the impact of the bug, and is often set by the submitter. The only really important value here is 'blocker' or 'critical', both of which indicate that the bug should block further releases until it's fixed.
If the developer doesn't agree with the Sev setting, they can go ahead and change it – but it doesn't really matter anyway, since the Priority is what actually affects the operation of Bugzilla (sort order etc.). In theory, the developer working on the bug can use Priority to indicate how important
they think the bug is. In practice, we don't use it much.
We do use the milestones a lot. Developers are always going to tweak those, but I think we could come up with a procedure to allow those to be set fairly accurately in a first pass triage. Something like:
if (bug) set severity appropriately if needed if (bug affecting current svn head) assign to next release off of svn head elsif (bug affecting current stable release) if (bug affects both svn head and current stable) # I'm still not entirely happy with how we handle this case... assign to next release off of svn head, make note in bug else assign to next stable release else set severity to "enhancement" if (pie-in-the-sky) assign to "Future" else assign to next major release
Requests for new features should have a Sev of 'enhancement', and optionally have a title beginning with 'RFE:'.
When taking a bug in Bugzilla (i.e. assigning it to yourself), please go ahead and make sure email@example.com is in the CC list. That way bug discussion is out in the open.
Generally in addition to using Keywords, we use the "Status Whiteboard" field to give a quick overview of what the status of the bug is.
Bugs that need peer review are usually tagged with \[review\] in the subject as this makes it more obvious when reading the dev list that a bug needs review. This should maybe be a keyword also?
Nah, leave it a subject tag, since that appears in mail. no need to have it twice! – JustinMason
We also use 'needs N votes' in the Status Whiteboard field. However, as far as I can see whenever we're in a situation that votes are needed, the voting population are never reading this anyway, so I think it may be superfluous. – JustinMason
When you commit a fix for some bug, the number of the bug should be stated in the commit message.
JustinMason: a tip on referring to bugs – the convention is "bug NNNN: blah blah" simply because Bugzilla has the smarts to automatically turn "bug NNNN" into a hyperlink, and it's easily greppable.
JustinMason: also 'bug NNNN comment NN' gets turned into a hyperlink to a comment.
Deleting a bug that is spam can only be done by someone who has Administrator access to our Bugzilla. See RemovingBugzillaSpam.