Patching TRAC

Posted on

At work-work, I maintain a Trac installation for our project management stuff. Well, PM is probably a too-big word for it, it’s mostly a list of tickets (bug reports) that get sorted through as and when we have time to do so, and a wiki for documentation. There’s a timeline in Trac, too, showing what has happened recently: wiki edits, commits, and ticket changes. This week we got a ticket asking for an improvement in the ticketing system — asking for a filter to suppress commits to trunk (in SVN) so that only the fixes to the released branches are visible. For an application administrator who want to see whether there are relevant fixes for their installation, that’s a useful feature.

So for the first time in ages, I’ve ended up sort-of being paid to work on some Free Software (Trac is BSD 3-clause licensed, with  no-endorsement). Well, since it was a fun kind of project, I did it on the train home. A downside to that is that I wrote a hack to add a specific filter to the timeline, with specific settings for our SVN. That makes the patch — only two dozen lines — unsuitable for publication. When I got home I went looking for existing implementations (one might say that this is backwards, but really, what else is there to do on the train between Utrecht and Nijmegen?), and found that timeline filters are much-requested and rather fiddly to get just right. There was a plugin for older versions of Trac, but it no longer works with Trac 0.12.2 and is unmaintained. And now I’ve got a replacement that works, but only works for one particular setup. This is unsatisfactory for me personally, but it’ll take a bunch more train trips to massage it to a point that it might work elsewhere.
So that was a brief, but fun, excursion into some other code base than our own, and I found it quite refreshing to be reading Python code done in a different style for once.