Effective Use of agile-trac for (Distributed) Agile Development
Today I gave a talk about using agile-trac at JAX 2010 in London. This quote, from the JAX London site, sums the JAX conference up quite well, "JAX - it's all about Technology, Architecture, Agility".
I've uploaded the slides from the presentation as a PDF. There is an 'agile-trac In a Nutshell' section which actually provides quite comprehensive documentation.
Version 0.3.0 now available
NEW RELEASE - 0.3.0
The 0.3.0 release marks some significant back-end changes and some general improvements overall. It is recommended that all users upgrade to this latest release.
- Notably an important schema change was introduced to allow efficient mapping between tickets and iterations. This mapping is now visible on the Roadmap and on each Ticket where you can see which Iterations a ticket is associated with. This association is achieved through the addition of a new iteration_ticket table in the database.
- This release is up-to-date with the latest stable release of Trac, at the time of release that is Trac 0.11.5.
- Finally it important to note that this release would not have been possible without the help of dfraser who recently joined the development team and has already made a significant impact on the project. Long time users will remember his name from the 0.2.0 release where he provided at least one patch and other valuable feedback.
To Upgrade Your Installation
1. Upgrade the Agile-Trac plugin
Upgrade your plugin using easy_install as shown. Ensure you have administrative privileges, for example if using Linux you might need to run this as root or prepend the command with sudo.
easy_install -U http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/
2. Update the patch
You must also use svn to update your agile-trac patch.
Note: The location of your Trac install will depend on the version number, for example you might have Trac 0.11 or a newer version like Trac 0.11.1.
Windows
This will depend on your installation, for example with Trac 0.11, this may work.
cd C:\Python25\Lib\site-packages\Trac-0.11-py2.5.egg
Linux
Do these commands as a user of sufficient privileges, for example as root.
This will depend on your distribution. For example in Debian Testing for Trac 0.11 you might type:
cd /usr/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/
Now run svn update from the current location, for example,
svn update
3. Restart you web server
For example if you are using apache you might need to execute,
apache2ctl graceful
4. Upgrade your trac environment
Since this release includes a schema change you will need to run,
trac-admin upgrade /path/to/your/trac/project
so that the schema changes required can be applied.
Refer to Installing Agile-Trac for more details.
Version 0.2.0 now available
NEW RELEASE - 0.2.0
This is an important release with several noteworthy points.
- we've created a release branch starting with 0.2.0 to allow more aggressive changes to be made on the development branch. For those who don't mind the odd breakage then you are free to install and update from the development branch. Details for the release branch can be found on the installation page. Branch details are summarised at the end of this post.
- we've moved to a single unified patch for all 0.11.x trac installs. This will significantly reduce the overhead of making updates. We held off doing this as there were some version specific issues that are now all resolved. In essence the unified patch will be against the latest trac release on the 0.11 branch.
- we've fixed quite a few annoyances, some of which were considered critical. These are listed below. Some great community support has made these fixes possible.
- we've ironed out database back-end issues so that we work with both Sqlite and Postgresql (including 8.3). If you have an Sqlite install and would like to migrate to Postgresql then you can read more on the Migration from Sqlite to Postgresql page.
- we've added some improved documentation for the configuration options currently supported by Agile-Trac.
Some Stories and Defects addressed in 0.2.0
There have been more changes than those listed and some incremental changes for stories which are not yet complete, however some of the highlights are shown in the list below.
- #91 - Error when an iteration contains a story that does not belong to a milestone. Many thanks go to augustinus for reporting this and providing a patch!
- #101 - Previewing a ticket when progressing a completion stage resulted in an error. Many thanks go to dfraser for reporting this and providing a patch!
- #67 - Ticket changes were not being saved when a ticket had custom fields
- #75 - Workflow bug where a completed story because of resizing to 0 is not DONE
- #76 - No notification email sent when a story is partially complete
- #97 - Makes it possible to reset the calculation of points per iteration to account for large team size changes.
- #98 - Provides an indication what the date calculations on the Roadmap are based on.
- #105 - Documents and provides working support for custom completion stages
To Upgrade Your Installation
Upgrade your plugin using easy_install as shown. Notice the new URL for this release,
sudo easy_install -U http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/
You must also use svn to checkout the new unified patch, replacing your previous patch.
sudo svn co http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/patch/trac/ trac
Refer to Installing Agile-Trac for more details.
New Trac-0.11.x Agile-Trac Branches
There is now a development and release branch for the Trac-0.11.x version of Agile-Trac.
The URL for the development branch is:
The URL for the release branch is:
Starting with SVN revision 270 it is now possible to install Agile-Trac onto a trac install using Postgresql 8.3
svn update required
As many of you might know, using trac with an SQLite database on the back-end is not a very scalable solution. With a very large database and or many users you'll get a slow trac or even database lockups. Moving to PostgreSQL will address most of these problems. However, starting with PostgreSQL 8.3 type checking became stricter and many plugins do not work well. Included in those was Agile-Trac. However since r270 Agile-Trac now works as expected with PostgreSQL 8.3.
Patch for Trac 0.11.3 now available
Support for Trac 0.11.3 is now available.
For Trac 0.11.3 use,
svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11.3/trac/ trac
Starting with SVN revision 247 it is now possible to install Agile-Trac onto an exisitng environment
svn update required
Previously it was not clear how best to install Agile-Trac onto an existing trac environment - with existing tickets. After sufficient experience of Agile-Trac in the real world a simple strategy has been adopted to handle this scenario and has allowed ticket:44 to be finally addressed.
There are two key areas that have caused difficulties. First Agile-Trac relies on the data stored in the ticket_completion table to calculate information relevant to ticket groups (like milestones and iterations), and second, the milestones themselves have an additional priority field in Agile-Trac which is used to help order milestones on the Roadmap view.
Starting with SVN revision 247 ticket completion fields and milestone priorities are lazily created so it is not required that they exist in the database. For milestones this has actually not been an issue for some time now, but for ticket completion fields it was unclear what an appropriate default set of values were.
The approach taken is this:
- If a ticket does not yet have a status of closed then the initial size values are considered to be undefined.
- If a ticket has been resolved to a status of closed then the size values for the ticket are considered to be 0.
The reason for considering closed tickets to have a sizing of 0 is actually quite simple. We use the sizing only to associate the progress of a ticket with a time duration - an iteration, and since these tickets were closed previously that association does not exist. Hence we treat as having a 0 size. This aligns well with the notion of a fixed ticket being simply available. The recommendation in fact is to rename the fixed resolution to available and make another resolution, for example split or invalid the default resolution.
Brief Server Downtime Today (Feb 15th 2009) during Lenny Upgrade
We experienced some brief downtime (approx. 25 minutes) today while the server was upgraded to a shiny new Lenny install.
User Stories and Use Cases? Sure, it even makes sense.
I'm not sure why but somewhere along the way User Stories were branded 'agile' and Use Cases largely relegated to a high ceremony tool for non-agile methodologies. I gave a talk about this at Agile 2008 that set out to challenge that view by suggesting that both User Stories and Use Cases could, and should, co-exist as complimentary techniques in effective agile methodologies.
The terms User Story and Use Case are two pretty broad terms, so the first thing the talk does is to clarify just what I mean by each. It would of course be possible to adopt one term over the other. For example, we could call a User Story a Use Case Brief (a la Cockburn), but I believe it is helpful to keep a separation between the two terms. Another aspect of the talk was the idea that User Stories can be used to provide a uniform method of capturing functional requirements, as well as system constraints.
Having introduced the terms, I outline how, and when, User Stories and Use Cases can be used in a typical agile methodology, and importantly how one relates to (and compliments) the other. For example, typically User Stories are the technique of choice when Release Planning and Use Cases help a lot with Iteration Planning.
As User Stories and Use Cases can exist at different levels, from business use down to component interaction, I show how a User Story can relate to more than one Use Case, and how a Use Case can be related to more than one User Story. Similarly I also look at how Use Cases can sometimes provide a 'glue' between User Stories.
If you are an experienced agile developer you may not get a lot from this presentation, but I would hope it does get you thinking.
Agile Development in Globally Distributed Team
One of the great uses for tools like trac, and obviously agile-trac, is development in a distributed environment. Much of the initial design of agile-trac grew from an agile project where the whole team was distributed with team members on different continents and hence also in different time-zones. During that project a lot was learned about how to work effectively in a distributed setting.
A key observation is that the solution to distributed development is not co-location. You can effectively develop within a distributed team, and with reasonable tool support this can be quite pain free. I link to a presentation here that was first given at Agile 2008 in Toronto last year. It captures many of the lessons learned from several years of working in agile distributed teams. It turns out that going agile can really bring benefits in a distributed setting as it helps focus both the nature and the quality of communication.
Foundations of Agile Development
When I am introducing agile development within a company, or within a team, I find it useful to give a brief overview of what I actually mean by agile development.
The reasons for this are simple. Most people have heard of the term agile development but yet there appear to be many different perspectives on what is meant by that.
For example, many people are of the opinion that to be agile means practicing one of the many canned agile methodologies, like XP, FDD or Scrum. Others have a very practice oriented view of agile development. That is, they see agile development as nothing more than a collection of practices, like TDD, pair programming and so on.
As a result of that I typically introduce the idea of agile development with a quick presentation of what I feel are the foundations of agile development. I also try to tie into that discussion some of the terms with which most developers are already familiar with, such as use cases.
Of course agile-trac has been designed to support the foundations of agile development outlined in this presentation. Some of the screenshots in the presentation are from a heavily hacked wiki site which used perl scripts to try to simulate some of the functionality that is supported first class in agile-trac.
This presentation is a good starting point for understanding agile-trac and how it should be used. It is not intended as a replacement for documentation, but should nevertheless provide some useful insights.
Version 0.1.5 now available
NEW RELEASE - 0.1.5
Notable in this release:
- the addition of date-picker controls for iteration dates, complete stage dates and milestone due dates
- support for Trac 0.11.2
To upgrade your installation use:
sudo easy_install -U http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/
You must also use svn update on your patch using:
sudo svn update
from the trac folder in your Trac installation.
SVN update required for patches of revision 209 or less
svn update required
r210 contains a fix for ticket:73. Many thanks to sgissinger for the patch. Please use svn update to obtain the changes.
For Trac 0.11 use,
svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11/trac/ trac
For Trac 0.11.1 use,
svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11.1/trac/ trac
SVN update required for patches of revision 207 or less
svn update required
r208 contains a fix for ticket:65 where the Roadmap page would sometimes fail to load. Please use svn update to obtain the changes.
For Trac 0.11 use,
svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11/trac/ trac
For Trac 0.11.1 use,
svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11.1/trac/ trac
SVN update required for patches of revision 205 or less
svn update required
The file admin_iterations.html was missing from the patches, as mentioned in ticket:63. In addition ticket:64 resolved another issue with editing iterations from the admin page. Both fixes are in r206.
Please use svn update to obtain the changes.
For Trac 0.11 use,
svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11/trac/ trac
For Trac 0.11.1 use,
svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11.1/trac/ trac
Agile-Trac does not update tickets in existing Trac environments
WARNING
If you are trying to use Agile-Trac with an existing Trac environment bear in mind that this will not currently work correctly as Agile-Trac does not yet support updating existing tickets to have completion stages. There is an open ticket:44 to address this.
Upgrade to 0.1.4 required
IMPORTANT
A serious bug was found in version 0.1.3 of Agile-Trac. Please upgrade to 0.1.4 by using the following easy_install command.
sudo easy_install -U http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/

rss