|Version 13 (modified by sambloomquist, 7 years ago) (diff)|
Scrum Burndown in Trac
A plugin to enable burndown chart capabilities, a common part of Scrum and other agile development methodologies.
Installing this plugin is a five-step process.
- Add the 'integer' custom field type: http://projects.edgewall.com/trac/wiki/TimeTracking#Addingnewcustomfieldtypes
- Add custom ticket fields
- Install the egg
- Create a cron/pycron job to run a daily python script
- Add permission fields
Add custom ticket fields
Add the following to your trac.ini file:
[components] burndown.* = enabled [ticket-custom] orig_estimate = integer orig_estimate.label = Original Estimate (in hours) current_estimate = integer current_estimate.label = Current Estimate (in hours) time_spent = integer time_spent.label = Time Spent
Original estimate is not really used by the plugin, it's just common Scrum process to be able to see how the estimates have change throughout a given sprint.
Installing the egg
Install just like you would any other Trac plugin. Drop the egg into your plugins or site-packages folder and then try to access Trac in your browser. You will get an error message saying that the database needs to be upgraded and telling you the trac-admin command to do it. (I think it's something like 'trac-admin YourProjectName.db upgrade'). Perform the upgrade.
Download the this file: attachment:burndown_job.py and place it into a directory where you can run it with python. For example, "C:\Python23\Scripts\"
Set up a job to run the burndown_job.py script once a day. I personally am using Windows, so I used pycron. Here is an example pycron tab file to run the job at noon on weekdays: attachment:crontab.txt
This job totals up all the remaining time for given milestones and components and saves the information into the trac burndown table so that the plugin can use it to draw charts.
Assign permissions to users for 'BURNDOWN_VIEW' and 'BURNDOWN_ADMIN' The BURNDOWN_ADMIN permission gives users access to the 'Start Milestone' and 'Milestone Complete' buttons.
Using the plugin
At the beginning of a sprint, after the tickets have been inputted and estimated in Trac an admin user should click the 'Start Milestone' plugin. This inputs a datetime integer into the milestone table to indicate when the milestone was started. The daily burndown_job.py script will only record hours_remaining entries for milestones that have started, but have not been completed. It should be fairly obvious, then, that an admin user should click the 'Milestone Complete' button at the end of the milestone to prevent the burndown_job from continuing to collect data.
You can view different burndown charts, selectable by milestone and component by choosing from the dropdowns and clicking the 'Show Burndown Chart' button.
In order for this to work, it is imperative that developers keep the current_estimate and time_spent fields up-to-date on the tickets they are working. At my company, if we add a new ticket in the middle of the sprint, we input 0 for orig_estimate so that we can track our estimating abilities at the end of each sprint.
If you have any issues, create a new ticket.
Download the zipped source here.
Download the distributable Python egg here.
Download the pycron/cron job here.
Download an example pycron crontab.txt file here.
-  by rjollos on 2013-05-17 01:38:18
- Fixed incorrect package_data specification (regression from ).
- Renamed config.html to admin_burndown.html in order to better ensure that we'll meet the requirements that template names are unique.
- Changed url in setup.py to point to the trac-hacks site.
Thanks to Jun Omae (jun66j5) for these fixes.
-  by rjollos on 2013-05-16 01:40:27
- Removed Trac pre-0.11 compatibility code.
- Changed module names to follow Trac naming conventions.
- Updated source file headers and added where missing.
Note: If you enabled the plugin through the web admin, or by providing the full module name, you'll need to re-enable the plugin or edit the [components] section:
burndown.burndown_admin_milestones.burndownmilestonesadminpanel = enabled burndown.burndown.burndowncomponent = enabled
burndown.admin.burndownadminpanel = enabled burndown.burndown.burndownmodule = enabled
-  by rjollos on 2013-05-16 00:59:46
Refs #7066, #11069: Removed ClearSilver req.hdf variables.