TopicsHowTo

Revision 5 as of 2009-11-24 18:24:53

Clear message

Work item tracking

Several teams now use burn down charts to track the progress of their work, so that they can see when they are falling behind, and decisions such as "this blueprint needs to be postponed" can be done as early as possible.

What is a work item?

A blueprint describes an entire goal or project, can sometimes take many weeks to complete, and can need more than just one person to implement it. For efficient tracking, these need to be broken down to several steps, each of which should not take more than two days. Items which need longer should be split either logically, or if that's impossible, artificially like "do something 1", "do something 2", etc.

One work item has :

  • precisely one assignee who is responsible for it
  • a status (todo, done, postponed)

Defining work items

Right now, the preferred and easiest method is to add work items to a blueprints' whiteboard. The start is indicated by a line "Work items:" (anywhere in the whiteboard), then exactly one line for each work item, and finally an empty line to end the work item list. Each work item is one line with the description, then a colon, and the status, and optionally has an assignee prefix in square brackets:

  • Work items:
    package gnome-monster: DONE
    write gnome-monster MIR: TODO
    [seb128] patch gnome-monster to support green monsters: POSTPONED
    
    pitti, 2009-11-27: can you please clarify the precise shade of green for the proposed patch?
    [.. further whiteboard discussion here... ]

Valid states:

state

possible aliases

TODO

empty string, INPROGRESS

DONE

POSTPONED

POSTPONE

(capitalization does not matter)

The default assignee for a work item is the blueprint assignee. Use the [assignee] description syntax for blueprints where several people are involved.

Please see desktop-karmic-network-ui for an example.

Reports

There are two scripts to process those work items:

  • workitems.py scans blueprints of a particular release, name pattern (desktop-lucid-*), and optionally, milestone, and puts them into a database, which stores the status of all work items on every date. It is capable of generating a HTML report with a by-blueprint and by-assignee list, and text/CSV/raw dump outputs.

  • py-burndown-chart generates a burn down chart from CSV data as produced by workitems.py.

The current reports are generated hourly by team, release, and milestone on http://piware.de/workitems/. The most interesting file is report.html which combines the textual reports with the chart (e. g. see the desktop team's karmic report), but if you want to use those scripts by yourself, you can also download the current sqlite database from those directories.

E. g. the current desktop and mobile alpha-2 reports are generated with those commands (please note that the desktop one additionally pulls work items from a wiki page):

  • 03 * * * * $HOME/bin/workitems.py -d data/desktop-lucid-workitems.db -r lucid -p 'desktop-lucid-' -m 'https://wiki.ubuntu.com/Kubuntu/Todo/Lucid?action=raw'; $HOME/bin/workitems.py -d data/desktop-lucid-workitems.db --csv --to 2010-04-01 | python ubuntu/py-burndown-chart/burndown.py --output=www/www/workitems/desktop/lucid/burndown.png --height=450 --title='Desktop Team Lucid Burndown' --title_y 400 -; $HOME/bin/workitems.py -d data/desktop-lucid-workitems.db --html > www/www/workitems/desktop/lucid/report.html
    
    15 * * * * $HOME/bin/workitems.py -d data/mobile-lucid-a2-workitems.db -r lucid -p 'mobile.*-lucid-' --milestone lucid-alpha-2; $HOME/bin/workitems.py -d data/mobile-lucid-a2-workitems.db --csv --to 2010-01-14 | python ubuntu/py-burndown-chart/burndown.py --output=www/www/workitems/mobile/lucid-alpha2/burndown.png --height=450 --title_y 400 --title='Mobile Team Lucid Alpha 2 Burndown' -; $HOME/bin/workitems.py -d data/mobile-lucid-a2-workitems.db --html > www/www/workitems/mobile/lucid-alpha2/report.html

Please contact Martin Pitt if you need updates to the cron jobs, or a new report.