Bug Trackers: Do They Really All Suck?
Pages: 1, 2
Integration with Source Control
Another question that is often hard to answer with existing bug tracking systems is: "Which files were affected by this bug?" The integration need to answer this question is becoming more commonplace in bug trackers. It usually happens by parsing comments in commit messages. For instance, when a developer is committing changes for bug 2345, he enters a commit message such as "Bug #2345, partial fix in the bounds checking," and this is connected in the bug tracking system to bug 2345.
There are two approaches to parsing such commit messages. The faster, but less reliable, approach is to scan them at commit time, and to record the information in the bug tracker using whatever API is available. This approach runs into problems if the bug tracker is not available at commit time, or the wrong bug number was used in the comment.
The second approach is to periodically download the history and commit messages of all possible source files, and to scan the commit messages in the downloaded file. This approach means that errors in the messages only have to be corrected in one place (the source repository), but the time between committing a change and the information appearing is longer. The amount of information for a large or long-lived project can also be substantial.
It seems to me that bug numbers ought to be associated with source files, however they are kept. Then, bug tracking systems could query the source control system for the information as needed.
Cleaning Up
As with many a filesystem, removing information is harder than adding it. The addition of a new user or release version to a bug tracking system is an obvious decision: when it has to happen, you just do it. However, realizing when the same information can be safely removed means defining a removal policy and regular action to make it happen.
One common place where this kind of problem appears is with web-based tools and their drop-down lists of release versions. It only takes a few new test releases per week to soon create lists that are too long to use without scrolling awkwardly to look for the right release. Removing releases entirely from the system isn't going to work, since there may well be bugs that refer to the older release.
A similar problem is removing users from a system. The information about who has worked on a bug is useful, even if that person is no longer part of the project. So making it as though they had never been involved is not a good idea, much as you might want to do this with some people.
What is needed is a way to deactivate these values. They should continue to exist, but new or changed bugs can't use them. They don't appear in drop-down lists or as valid entries in text fields. Deactivating a user should also guide an administrator or manager through the process of reassigning active bugs, recording a departure date, and making sure that no more email is sent to the user.
Most bug tracking systems provide ways to search bugs, but no way to do a "search and replace." Sure, you can probably do it in the back-end database, but that's not usually easy. Removing text from lots of bugs at once can be useful when someone starts overloading a field by adding "standard" text such as "CRITICAL" to the description, instead of using the field provided for that purpose. Public systems are also vulnerable to having spam added as comments to bugs, which then sends email containing the spam to the people associated with the bugs.
Automation Woes
The process of creating a release involves much more than just building the product from source files. One common requirement is an automatically produced list of the bugs that have been fixed in the new release, so that QA knows what to retest. The steps to produce such a list often include:
-
Adding a new release version to the list of releases.
-
Finding all the bugs that are marked as fixed.
-
Marking all of these fixed bugs as available in the new release.
Automated steps such as these have to use the tool's API to add metadata, such as release versions, to search the bug data and to change the returned bugs. However, many bug tracking tools' APIs seem to be less full-featured and less well-tested than their graphical interfaces. This is somewhat ironic, since UIs are usually harder to test than APIs. Bug tracking APIs should also be available on multiple platforms, and work with multiple languages.
Nitpicks
Then there are the nitpicky things, the minor annoyances that keep on reappearing in different bug tracking tools.
Entering XML into a comment field for many web-based bug trackers will produce odd effects the next time that you try to view the bug. Sometimes you can't even see enough of the problem to delete the offending XML! There are plenty of ways to recognize and display XML as text rather than interpreting it as part of the HTML for the page. Telling users that they have to add their few lines of XML data to a bug as an attachment is a poor substitute for doing it right in the first place.
Another problem with web-based bug trackers is when a button is placed in the middle of a column in an HTML table. When a long line of text without spaces is entered in the column, the column width may expand off the edge of the screen, and the button will go with it. This leads to cries of "Where's that button gone?" and "I have to scroll sideways every time just to click one button?" Buttons aligned to the left may not be as pleasing, but at least you can find them.
Finally, tools with a fixed color scheme irritate me and at least five percent of all men. That's the percentage of men who have non-standard color vision. This "color-blindness" simply means that we find certain colors hard to distinguish. This is one reason why UI designers recommend that color should only be used to emphasize differences, not as the only way of detecting differences. For instance, mail from a bug tracking tool that shows what changed in a bug by coloring the changed fields red is just not good enough: the tool should make the changed text (or field names) italic, and use a color such as blue that is more distinguishable from black in small numbers of pixels. If in doubt, ask around, and you'll soon find someone qualified to test your color choices.
Conclusion
Rather than just leaving this article as a free-standing rant about bug tracking tools, why not speak up about what other bugs you've found in the bug tracking tools that you use? Even better, tell us your ideas about how some of the problems with bug tracking systems could be fixed.
Matt Doar is the author of Practical Development Environments.
Return to the O'Reilly Network
You must be logged in to the O'Reilly Network to post a talkback.
Showing messages 1 through 14 of 14.
-
New ajax/bugzilla ticket on b.m.o
2006-02-01 16:20:39 douglascalvert [Reply | View]
https://bugzilla.mozilla.org/show_bug.cgi?id=325501
-
Why not JIRA?
2005-12-27 19:29:25 sergek@lokitech.com [Reply | View]
JIRA can handle all of your and isn't very expensive. Free for open source projects.
-
Matching change requests to source revisions
2005-12-22 04:10:14 Chris Adamson |
[Reply | View]
It seems to me that bug numbers ought to be associated with source files, however they are kept. Then, bug tracking systems could query the source control system for the information as needed.
Yeah, it seems like that should be the case. But...
A company I worked at changed from CVS (free, open-source, multi-platform) to StarTeam (expensive, proprietary, Windows-only) largely for the sake of the "match change requests to the source revisions that resolved them" feature. In the three years I worked there, nobody ever used this feature.
IMHO, this is the most overrated bug tracking concept out there, but most people won't believe that until they try it and realize that it's vastly more trouble than it's actually worth.
-
bugtracker TRAC rocks
2005-12-12 11:04:03 masp [Reply | View]
We use TRAC, http://www.edgewall.com/trac/ and it simply rocks. Uses Subversion, so merging bugfixes between branches is easier. Try for yourself and you will never look back! :-) -
bugtracker TRAC rocks
2006-10-27 06:01:05 joedayney [Reply | View]
Hi There,
New to all of this and have got SubVersion set up and TortoiseSVN and have Trac set up and would like to integrate Trac to SubVersion ... looked at the Docs but would be greatful for info on the steps to set up. Thanks.
Joe -
bugtracker TRAC rocks
2005-12-28 12:04:51 ttriche [Reply | View]
You set up the Trac commit hook, and it parses your log messages.
Then when you write "fixes bugs #123 #456 and #789" in your commit message, that changeset gets hyperlinked to the bug and the bug is automatically closed. Trac's integration with SVN is very tight and well executed. If you already have svn2rss or email commit messages set up, adding another commit hook is trivial. If not, read the instructions.
Trac owns. If you haven't tried it, you won't understand. This article displayed an amazing amount of ignorance considering the wide uptake of Trac among popular projects. There is a Ruby version underway (Collaboa) which basically mirrors Trac with some Rails-ish integration, although FWIW, Rails uses Trac. But lately the development of Trac has progressed to refactoring and modularizing everything, rather than massive new features. To me, that is a very good sign.
There are things that suck about Trac, but compared to every other bugtracker I have ever used (bugzilla, mantis, jira) they are so miniscule as to be almost irrelevant. -
bugtracker TRAC rocks
2006-10-27 06:02:41 joedayney [Reply | View]
Hi There,
New to all of this and have got SubVersion set up and TortoiseSVN and have Trac set up and would like to integrate Trac to SubVersion ... looked at the Docs but would be greatful for info on the steps to set up. Thanks.
Joe -
bugtracker TRAC rocks
2005-12-12 11:47:45 jeremiah.jahn [Reply | View]
But how does it integrate with SVN? I see that you can use it view an SVN repository, but how do you say that you have fixed bug X in a particular commit? How do source updates and issues get associated? -
bugtracker TRAC rocks
2005-12-28 12:07:15 ttriche [Reply | View]
I meant to reply to your message. See my reply above -- Trac integrates with SVN in the same manner that FogBugz does. It would not blow me away to discover that one was "inspired" by the other, although this is a pretty obvious insight once you start using CVS or SVN commit log actions (eg. the ever-popular "mail out the changes" script).
Having seen Joel's writings, I suspect FogBugz is excellent too. -
bugtracker TRAC rocks
2005-12-15 06:08:07 bazzargh [Reply | View]
We use FogBugz, which ships with integration to subversion:
http://www.fogcreek.com/FogBugz/docs/40/Articles/SourceControl/SubversionIntegrationScri.html
actually the integration is pretty simple (Matthew's 'first approach'), and works the same as the their cvs integration did: if you mention the bug# in the commit message, a trigger script tells FB the files that changed in that commit.
In the FB UI you see links to those files. We've set it up to link to viewvc. Actually this integration could be better with svn, because instead of linking to dozens of files (which is what it does) it could just link to the page for that commit in viewvc.
The api is pretty trivial (and hopelessly insecure too...hmm) so if we felt the need, it would be easy to do a 'method #2' scan of commit messages to see if anything was missed.
I'm not suggesting FB is without fault; the prefix for linking to commits isn't per-project, for example, so doesn't scale to multiple repositories.
A few unrelated points:
#1 - I've tried some commercial solutions with integrated bug tracking (Continuus/CM). Nothing but pain. I'd far prefer something with an open integration story than a closed we-do-everything featureset.
#2 - git-bisect is a pretty damn cool feature for bug hunting, I'd love to have this in other tools:
http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html
#3 - The insistence of bug trackers on categorization is wrong; you end up with a proliferation of dropdown lists for project, platform, subsystem, release, customer...with inevitable clashes over which list a label should go in (is a customer-specific build a project or a release?) I'd like to see a system which lets you add and remove tags instead. -
bugtracker TRAC rocks
2005-12-28 12:11:10 ttriche [Reply | View]
> #3 - The insistence of bug trackers on categorization is wrong;
> you end up with a proliferation of dropdown lists for project,
> platform, subsystem, release, customer...with inevitable clashes
> over which list a label should go in (is a customer-specific build
> a project or a release?) I'd like to see a system which lets you add
> and remove tags instead.
Finally, a useful task for tags! ;-)
This is an excellent idea and (as with the most elegant solutions) obvious once someone mentions it. With a capable database (SQLite or PostgreSQL are supported by Trac, I'm sure FogBugz has some sort of DB backend too) a simple many-to-many table would suffice (and eliminate dupes if you stemmed and soundexed the entries upon creation).
It would be easier for users and for developers (eg. to aggregate and perform meta-analyses to determine the highest-impact direction for new development or refactoring). I think I will search the Trac list, and if it hasn't been suggested, I will bring it up.
-
3rd party bug tracking systems do all suck.
2005-12-12 09:38:35 jeremiah.jahn [Reply | View]
We orginally tried to use bugzilla for our bugtracking software. This lasted about 4 hours. We now have one employee who's main function is to handle our bug tracking software (and company web site), but mostly the bug tracking software. We are still lacking any integration with CVS, other than having the programmers be religious about their versioning.
Over the past two years, we have taken the ideas of bugzilla and added, workflow, patching and posting of updates, relase management, crm functionality, test management, and voting to the system. What was once based on bugzilla, has become the hub of our entire organization. We handle about 40 different projects, and a few hundred different clients through this system. Recently it even got connected to our fax server.
Bugzilla couldn't even come close to handeling our needs. We find that our system is the best example of feature creep we have to deal with. I think that bugzilla [bg], could be a lot better than it is, but having looked at the code behind it, it is an unmaintainable mess. Changes can be made, but no one wants to do them. Yet, every one and their brother seems to use it, and deal with its limitations.
I guess my point here, is that the OS world needs better BT software, and the only way to get it is to write it in house to meet your organization's needs. Or someone needs to take BZ and rewrite the damn thing, and make it into a plugable framework for extension.
Sorry for the rather rambaling train of thought. -
3rd party bug tracking systems do all suck.
2005-12-28 12:21:49 ttriche [Reply | View]
It sounds like you have written better commit hooks (test-on-commit) and better user interfacing (crm, voting, release management) to Bugzilla, taking it to where Trac, FogBugz, etc. are and perhaps beyond.
Have you looked at the other packages out there, and at Subversion? You might be pleasantly surprised to discover that many others have shared your pain and attempted (as you observed) that Bugzilla's complexity made it difficult to maintain without starting from scratch.
Sometimes you have to expect to throw away the prototype :-). Oh, wait, ALL THE TIME you have to expect that (cf. Fred Brooks).
Take a look at the Trac project sometime, it would benefit from your critical eye and your experience. I came from Mantis and promptly began hacking on my Trac installation (right into the core mod_python handler -- I admit it, I like to fix things NOW).
Ideas like AJAX integration (below) and better SVN/DB integration (above, though Trac already is tightly integrated with SVN) are more easily implemented in a decoupled framework. The critical difference I see between Bugzilla and Trac et al. is the decoupling of the latter, more modern systems. Having proper templating (although I find ClearSilver somewhat annoying, it's not hard to eg. add prototype.js to the headers, or use AJFORMS for form processing) is a huge plus.
Consider whether Subversion's changeset-centric versioning model might benefit your organization. It should not be overly difficult to migrate your existing hooks to SVN's hook system (almost trivial in fact), and the Perforce-like changeset notion makes groups of errors easier to track down (per-changeset). "Gee, this started happening around 11/19/05... what changed that day? And who submitted it? (narrows down time window)" ... "Oh for fuck's sake, THAT broke the config?!?"
Anyways. Bugzilla has too much baggage. It was the prototype. I submit to you, that the current generation has built upon its strengths and tried to address its weaknesses, and those who are just starting a project yet want a good OS solution, should consider Trac. You might want to give it a look too, if only to see whether there are any ideas they added that work for your organization's Bugzilla creation.
-
Bugzilla needs AJAX...
2005-12-11 22:10:26 douglascalvert [Reply | View]
If bugzilla had some neato AJAX it would be a lot easier to use. I love bugzilla but I hate to hear new users complain about all the glitches. Attention AJAX wizards, people will pay for an AJAXed up version of bugzilla:
http://www.decrem.com/bart/2005/10/bugzilla-wish-list/
And with catalyst+prototype+templatetoolkit it seems like it might not be impossible...
http://dev.catalyst.perl.org/
http://prototype.conio.net/





