In the begining, there was Excel…
As most of the new scrum practitioners, I started to make my burndown charts in a spreadsheet (Excel, OO Calc). Like all the tools made too generalistic, I don’t like it, and felt that something is terribly wrong in the universe.
Then I start a search for a tool that:
1- Can be used from the CLI
2- The graphic can be written / modified by the most quantity of tools possible.
3- Use a text-only format. Well, this wasn’t a requirement at first, but becames one when I find this tool
This excellent tool, found here was written by James S. Plank, at the University of Tennessee. In his own words, “Jgraph is a program that takes the description of a graph or graphs as input, and produces a postscript file on the standard output.”. This is an oversimplified description, and soon you will discover why.
Let’s get to work. In order to make a simple guide burndown chart to attach to the wall, for example, we will write a simple text file called burndown.jgr:
newgraph
newcurve 0 26 25 0 linetype solid
That’s it. This is a burndown chart that I can attach to my wall and complement with some color markers while the current sprint runs:
Well, that isn’t very impressive, right ? First, I will explain the parameters
Let’s add a caption for the graphic and the axes, and ajust a little the scale, so it becames really useful:
newgraph
title : Burndown Chart for project "My Project"
newcurve pts 0 26 25 0 linetype solid
xaxis size 9 label : Days
yaxis size 5 label : Story Points
This give us:

Well, it’s getting better. Now let’s add a real burndown line, and the line that represents the mean of work that have to be accomplished in the current iteration. The code is as follows:
newgraph
title : Burndown Chart for project "My Project"
newcurve pts 0 26 1 25 2 23 9 23 50 0 linetype solid
newcurve pts 0 26 50 0 linetype dotted
xaxis size 9 label : Days
yaxis size 5 label : Story Points
As you can see, we have a dotted line representing the mean work and the line that represent th actual work done in each day. Now, this is all that I need to print and attach to the wall.
Making the source file useful
We are missing the one characteritic that wil make this post useful: the ability to edit the source file with automated tools easily. For doing this, we must make some changes to our last graph file, splitting the newcurve lines like this:
newgraph
title : Burndown Chart for project "My Project"
xaxis size 9 label : Days
yaxis size 5 label : Story Points
newcurve
linetype dotted
pts 0 26
pts 50 0
newcurve
linetype solid
pts 0 26
pts 1 25
pts 2 23
pts 9 23
Note that we have splitted the lines representing the dots in the curve, and rearranged the file a little for automated edition purposes. This is a good time to explain the lines of the graph file:
- newgraph: Start a new graphic
- title: The title of the graphic, located below it
- xaxis: This keyword has two attributes now, the size in inches and the label of the axis.
- yaxis: Same as xaxis but for the vertical one
- newcurve: Start to plot a new curve in this graphic
- linetype: The type of line to plot, in this case a solid line
- pts: Each of this line represents a dot in the graphic. The dots are automatically connected with a line.
You’ll see that I’ve used two linetype keywords, one for each newcurve keyword. This means that I’ll represent the mean burndown time with a dotted line, and the real progress with a solid one. Having one dot per line allows me to edit this file using standard CLI tools. Attached to this post I’ve written a script to manipulate this file, it’s really more a proof of concept than anything else, but it can give you useful ideas.
In my case, I use Trac along with the agiletrac extension to control my process. I can write and attach a script triggered by the actual change in Trac, so the source .jgr file gets modified automatically, and the next day I just print the last version of the document again. I use two burndown charts in my wall: First, the Release burdown chart, with the sum of the agreed stories as the total and the estimated time. The second with *this* iteration burndown, showing tha ammount of work commited to do and the iteration length in the X axis.
Using the tool
If you have already intalled jgraph, go ahead. If not, download and build the source yourself or obtain a precompiled package for your OS. In my case (using Debian GNU/Linux 5.0) I just type:
root@casa:~# aptitude install jgraph
You will also need ghostscript, a printing command that understand it or the ps2pdf tool. Use your imagination, my way to do the charts is as follow:
charlie@casa:~$ jgraph -P -L burndown.jgr | ps2pdf - burndown.pdf
I will have then the burndown.pdf file containing the plotted graphic with it’s two curves. The -L parameter makes the grapic landscape, and the -P option outputs postscript code instead of encapsulated postscript.
Conclusion
If you are like my and love the CLI, then this is the tool for your scrum burndowns. It’s a little help for your process and one trouble less for the post-standup meeting hour.
If you want more information on the use of the tool, don’t hesitate to write me. Best regards!