For the past seven months or so, I’ve been using the issue tracking system Trac to publicly document tasks and defects related to my game, Epic of Thalia. Other than the painful install process, Trac has a lot going for it: it has a wealth of plugins available to it, it’s easy to skin, and it’s very simple and minimalistic. However, I don’t much care for its Python API. Also, when I installed Trac, there was no stable MySQL support that I knew of, so I used the SQLite backend. Now, I love SQLite as much as the next developer, but since all my other data are in MySQL, I’d like my issue tracking data to be there too to make backing things up even easier. I just finished writing a bug reporting frontend for EoT, which will submit bug reports to our server via a CGI script. Having dabbled in Roundup a bit in the past, and knowing about its wonderfully simple API, I decided to convert.
Like Trac, Roundup is also written in Python, and is used by projects such as Darcs, Mercurial, and even Python itself. Also like Trac, it’s very skinnable and minimalistic. The initial install process was simple; it was a matter of running two shell commands along with modifying the configuration file, the database schema file, and the initial data file. For a default installation, the latter two are normally not necessary, but since I was importing data from Trac and I like the component and milestone attributes, I modified the schema and default data to accomodate my needs. That’s one thing that I really like about Roundup: it’s willing to go wherever you want to lead it.
After installation, I modified the HTML templates to add the category, component, and milestone attributes to each page. The templating language that Roundup uses is a little daunting at first glance, but it’s simple to pick up if you just throw yourself into it. After a little bit of work, I was ready to log in as admin to try things out. Only to encounter an error. After checking my e-mail, I found out that Roundup was attempting to operate on a closed database connection. Long story short, I ended up having to downgrade my version. After that, things went smoothly. I wrote a quick Python script to import my tickets from Trac into Roundup, and viola!
Another feature that I should mention about Roundup is its “nosy list” feature. This feature essentially makes every ticket a miniature mailing list. People can subscribe to the nosy list for an issue and receive updates via e-mail whenever anything happens. Granted, this isn’t a novel feature at all; I just found it very nice.
I should mention that there is one area where Roundup is a bit lacking in comparison to Trac: the community. A Trac user can easily find plugins to add to their installation, and even though the installation was a pain for me, I searched the Internet and found articles that helped me through it. A Roundup installation, in contrast, is more of an island; there’s no real way to manage plugins that I’ve found. All personalized changes seem to be directly integrated into the Roundup source and not easily packagable for distribution. I also fixed my closed database issue through sheer luck; my Google search didn’t turn up with anything useful.
I guess that’s about all I to say. I’d like to thank Trac for seven months of good service, and here’s to hoping that Roundup will continue to meet my high expectations!
-Rob