07
Aug 11

Using Textile+Trac to Manage Backlogs

After two and a half days discussing features, estimating them as a team and preparing a decent backlog, it was time to decide how to publish it. The idea of e-mailing a spreadsheet around and trying to figure out what has been modified terrrorized me. I’d like to have it an a central place where everybody could edit it and the (properly versioned) changes would be immediately available.

Whilst Google Docs could have been a nice alternative, it’d take me some time (maybe forever) to convince the managerial ranks to endorse it. Time to look for an answer closer to our company’s chest, like some internal system for managing issues related to a project, with a coupled VCS, user-based access and… Oh, wait! We already had Trac-Wiki1 set on our project!

With an embedded VCS enabled on the wiki, the only missing feature was being capable of properly rendering backlog tables on it. The built-in wiki syntax wasn’t enough to create a functional table, however it had a WikiProcessor2 extension mechanism which let me use other markups. As maintaining the backlog in pure HTML would be a pain, the alternative was to experiment a very flexible markup called Textile3.

After researching a bit of textile syntax4 and trying some examples, the following snippet plus a tweak at the theme style sheet rendered something near to a backlog.

IDNameWeight
SW01Feature 1m
(acceptance criteria 1)
SW02Feature 2n
(acceptance criteria 2)

The acceptance criteria on a separate row was kind of lame, so lets try to join it with the story name.

IDNameWeight
SW01Feature 1 (acceptance criteria 1)m
SW02Feature 2 (acceptance criteria 2)n

Much better! Now, what about appending dependencies to each story? Even better, why not referencing them as links to the story itself?

IDNameWeightDeps
SW01Feature 1 (acceptance criteria 1)m 
SW02Feature 2 (acceptance criteria 2)n 
SW03Feature 3 (acceptance criteria 3)oSW01
SW04Feature 4 (acceptance criteria 4)p 
SW05Feature 5 (acceptance criteria 5)qSW01, SW02
SW06Feature 6 (acceptance criteria 6)r 

The   hack, used to prevent column spanning, may not be required in Trac as it is in my wordpress processor.

To finish a fancy and useful backlog we can add two classes to visualize the separation of stories per sprint. Those without a background color are still in the project’s pipeline.

IDNameWeightDeps
SW01Feature 1 (acceptance criteria 1)m 
SW02Feature 2 (acceptance criteria 2)n 
SW03Feature 3 (acceptance criteria 3)oSW01
SW04Feature 4 (acceptance criteria 4)p 
SW05Feature 5 (acceptance criteria 5)qSW01, SW02
SW06Feature 6 (acceptance criteria 6)r 

With this template and relatively simple syntax, it seems easier to create, delete and move stories around. Modifications can be figured out at Trac’s page history and things get associated by the hyperlinks. Good bye, nasty spreadsheets! ;-)

Other advantage is that if you don’t use Trac for your projects, the only thing you need is a textile processor to get it done. You may auto-generate it from build-scripts, use another bug-tracker or integrate into WordPress (as I did it here).

A downside in this alternative is the need to specify custom CSS rules outside of textile content. I had to hack it into WordPress current theme’s style sheet and into Trac’s too. Look at the complete excerpt below.

References

1 Trac Wiki webpage

2 Wiki Processors

3 Textile homepage

4 Hobix Textile Reference

UPDATE: better colors and avoid selecting spans after the first one.