Subscribe via RSS

Introducing b

A Lightweight Distributed Bug Tracker

June 25th, 2010
Posted in: b, bug-tracking, mercurial

I've been using Mercurial for my version control software for the past few months, and I absolutely love it. It allows me to track my code changes without a central repository server - a hassle to set up - with almost no effort setting up or using. I find it especially useful as there are multiple computers I may be working on at any given time, and it allows me, again painlessly, to trust that changes I make on one computer can easily be migrated to the others, without needing to be concerned that every computer is absolutely up to date.

In addition, for a couple years now, I've been using Eventum for bug tracking. I appreciated that it was fairly easy to install, and it's served me quite nicely, especially on larger projects; but I find I often shy away from creating a new project in Eventum because it takes a bit of effort to set up and I end up with this long list of projects to filter through to get to what I want. Minor complaints perhaps, but it ultimately means that many of my projects don't get the benefits of bug tracking. When I discovered how easy it was in Mercurial to work with source control, I imagined how easy it would be to use bug tracking using a similar model - keep your bugs in the repository, update and fix bugs in tandem with code fixes, one commit locks in both bug and code changes, and the bug history is tracked in time with the source code. Revert back to last month's version, and you can see the state of all the bugs at that time as well.

Doing some research I found Bugs Everywhere, a project seemingly aimed to accomplish exactly that. Unfortunately, at the time, and as of this writing, there hasn't been a release of BE, and it still seems a ways away from being in a stable and usable state. I bookmarked the site and pushed my idea to the back of my mind.

Then I came across Steve Losh's t program a very elegant, very lightweight task manager, which among other great features is designed to work well in a DVCS as a light bug tracker. It went a lot of the way towards being exactly the program I had envisioned, but it was lacking in a few minor but critical ways. In order to keep all your bugs tracked in the same place, you'd need to manually navigate to the repository root before filing your bug. Not terrible, but easy to fix. Additionally, there was no way to reopen a bug once it had been closed.

With these two features initially in mind, I set out to make a small wrapper for t which would make it just that little bit better for bug tracking that I needed. But I recognized that while it would work for simple issues, often you need to be able to add more details than just a title to a bug, and without that ability whatever I built would only be useful for very simple projects. So I added functionality to view and add details, as well as comment on bugs.

Now it was starting to look somewhat like a real bug tracker, but it was still of limited use, for you couldn't divide the work up amongst different people, meaning that it really didn't make sense in a truly distributed environment with multiple people contributing asynchronously. But like I said, t was very elegantly built, and Steve had built right into the program the ability to add metadata to tasks, so I set about implementing a user system to allow bugs to be assigned to different people.

With these additional features - repository centric tracking, issue details, and users - in addition to the already powerful t, this was starting to look more and more like a real tool. As bug trackers are concerned, it still lacks many of the features of centralized products like Eventum or Bugzilla; for instance there is very little metadata tracked (date, owner, and open/closed, that's it), there's no web interface nor any detailed statistics or tracking of bug patterns. However in my experience, many projects are only hampered by such extra features. Like I said, I avoided Eventum for small projects for some of those exact reasons.

And so now, after several evenings and a few weekends scraping this all together, I have built b, a lightweight distributed bug tracker for Mercurial. I am releasing it as version 0.5, for while it is feature complete and I have been testing it, there are likely kinks and workflow issues to resolve which will only show up in some real world usage. I invite you to try it out, it's very easy to get started, and scales well from a temporary one person project all the way up to multi-person long term projects with thousands of bugs. If you have feedback, you can leave it here, or send me an email, I'd be very glad to hear from you.

Download b

You can get more information and download b from the projects page.

New Comment

Your email address will never be displayed or shared. Your comment will appear once approved.