|
|
Subscribe / Log in / New account

The SD distributed bug tracker

By Jake Edge
March 23, 2011

On last week's Development page we looked at the Fossil version control system, with one of its distinguishing features being the inclusion of distributed bug tracking as part of the tool. Another distributed bug tracker has recently come to our attention, and that is Simple Defects, or SD for short. There are a number of different distributed bug trackers out there, with Bugs Everywhere seeming to hold the role of "leader of the pack", but a brief introduction to SD seems in order.

So far, distributed bug tracking (DBT) hasn't taken off quite like distributed version control systems (DVCS) did, but there is still a fair amount of interest in the idea. In some ways, it feels like the DBT communities are still feeling their way, much like the pre-2005 DVCS world, and that at some point, the right combination of features will come about in one or more projects (much like the broadly similar feature sets of Git, Mercurial, and Bazaar did). Once that happens, DBT may find its way into more and more projects.

The basic idea of DBT is that centralizing bug tracking on one system makes it difficult for disconnected developers to easily handle editing bugs while they are fixing the code. There are (at least) two ways to approach the problem, either by somehow keeping the bug reports and code in the same repository (which is Fossil's approach) or by having a separate repository for bugs that can be synchronized in ways similar to that of a DVCS (the approach of SD and Bugs Everywhere). The latter approach has the advantage of being able to work with multiple version control systems, but it has the disadvantage of requiring developers to manage their code and bug repositories separately.

SD is written in Perl to sit atop the Prophet distributed database. Both Prophet and SD are available on the Comprehensive Perl Archive Network (CPAN), but the developers recommend getting them from the Git repositories if possible due to the rapid development pace. The development logs seem to bear that out as there hasn't been a release since Prophet and SD 0.7 in August 2009—though there seem to be more recent CPAN updates—while the Git logs show progress as recently as early March.

One thing that can't be said for SD (or Prophet) is that they are overly burdened with documentation. That may tend to chase away potential users, but the terse Using SD page does cover many of the topics that users are likely to be interested in. The basics should be familiar to anyone who has used a DVCS, as you clone a ticket repository with:

    $ sd clone --from http://example.com/path/to/sd
or initialize a new repository with:
    $ sd init

As with Git et al., you synchronize from a remote repository with a pull sub-command, and update remotes using publish (instead of Git's push). Bug tickets are created with the unsurprisingly named:

    $ sd ticket create
command, which opens your text editor with a template to create the bug. There are, of course, various commands to search and update bugs, as well. The browser sub-command will put SD into server mode and start up a web browser to search and edit bugs. SD also provides ways to synchronize its bugs with other systems like Trac, GitHub, Google Code, Hiveminder, RT, and others.

Overall, it seems like an interesting system for projects that are looking for a simple DBT that doesn't combine code and bugs into a single repository. That is one of the advantages of SD, at least for Lars Wirzenius, who made the blog post that introduced us to SD. He also notes that it seemed to him to be the most mature of DBT systems currently, which is a little surprising given the status of Bugs Everywhere. The ability to handle bugs from the command line is another advantage that he cites.

The lack of documentation is somewhat intimidating, and overall the projects could use a bit of work on their web sites. The wiki is largely a placeholder, and the project pages have just the bare essentials. In fact, for Prophet, even the bare essentials appear to be lacking, which is unfortunate as the description sounds intriguing: "Prophet is a new kind of database designed for the post Web-2.0 world. It's made to let you collaborate with your friends and coworkers without needing any kind of special server or internet provider." It sounds like something that might prove useful to projects like the Freedom Box.

While SD and Prophet may still have quite a ways to go before being ready to handle larger projects or ones with different needs, they do currently work for some projects. For Perl programmers with an interest in DBT (or a distributed database), they might provide a nice opportunity as a project to contribute to. For others who just want a simple DBT to use, its probably worth taking a peek at SD.



to post comments

The SD distributed bug tracker

Posted Mar 24, 2011 14:01 UTC (Thu) by nyfle (guest, #72967) [Link]

Quite an interesting concept, and not something I'd come across before reading this article. Thanks for the write-up!

The SD distributed bug tracker

Posted Mar 24, 2011 17:50 UTC (Thu) by criswell (guest, #40091) [Link]

I'm really glad to see someone taking the idea of a DBT and running with it. I actually started (and even had a working concept of) a DBT back in 2006/7 called Swarm (http://dev.samhart.net/swarm-dev/) but it never moved beyond proof-of-concept stage (largely because I was trying to use sqlite, which caused a number of problems that Prophet seems to solve).

To be perfectly honest, I'm shocked it's taken so long for the concept to "arrive". To me, it seemed to natural that centralized issue tracking was broken and problematic in 2006 that I could never understand why it was hard to convince people that a distributed issue tracker was needed.

The SD distributed bug tracker

Posted Mar 27, 2011 16:49 UTC (Sun) by liw (subscriber, #6379) [Link]

My blog post would be this one:
http://blog.liw.fi/posts/experiences-with-sd/

Bugs Everywhere seems to want to put the bugs in a directory .be at the root of my source tree, and have them versioned using the same version control system as the source code for the project I'm working on. That seems like it might work reasonably well for bugs related to the source code.

However, I'd like to file bugs about, say, the website of a project, and why on earth would I want to make a commit to my code about that? It's a distraction, at best, for anyone actually following how the code is being developed.

That's why I chose SD, which keeps the bug database entirely separate from my source tree.


Copyright © 2011, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds