Summary
This is a plugin for light-weight project tracking, in particular suited for XP projects. The original code was
written by
TWiki:Main.RichardBennett
, It was converted into this plugin by
TWiki:Main.MartinWatt
and enhanced. This plugin was further extended by
TWiki:Main.ThomasWeigert
. It is now maintained as a branch of the original
TWiki:Plugins/XpTrackerPlugin
. The focus of this branch was to support additional customizability of what is being tracked, as well as a low-overhead time tracking mechanism.
This is a branch of TWiki:Plugins/XpTrackerPlugin supporting additional needs of our organization. Please consult the description of the original plugin to decide whether you will need these additional features. |
Description
Layout
Projects are tracked in a hierarchy of information:
- Web - the TWiki web for project tracking. One web can be used to track multiple products.
- Project - A group of activities. Usually this will be major releases of a product. Each project has a page, which contains a generated summary of the project progress.
- Team - A team is a group of developers that work on one or more groups of activities. Each team has a page which contains a generated summary of the team's progress.
- Iteration - Work is divided into a series of short iterations. Each iteration has a page, the contents of which are also generated.
- Story - An iteration comprises a number of stories. Stories are pieces of related functionality that are owned by a lead developer but can be worked on by more than one developer. The story page contains information on the acceptance criteria, and also a list of tasks.
- Tasks - these are the atomic units of work. A story is usually broken up into a number of tasks. Tasks may be shared among more than one developer. Tasks details are entered on the story page.
Information is entered for Stories and their associated tasks, and for iteration dates. Information for all other levels in the hierarchy is generated.
Organizations typically decide on the hierarchy of their work items. While the terminology used above is that each
project is worked on by
teams which handle a set of
iterations, others may prefer a structure where a
team works on a set of
projects consisting of
iterations, or others.
The hierarchy is configurable via the
TEAMLABEL and
PROJECTLABEL variables. In this plugin, teams and projects are just organizational categories; their name can be configured by the above variables. Note, though, that the tags provided by this plugin follow the above order, so when configuring topics care has to be taken that no confusion results if an organization uses different terminology.
Example of hierarchy:
Usage
Creation of pages is recursive, each page has an html form that uses a template to create child pages:
- Projects/Teams. You can create a new team page using the html form on the home page for the tracking web. At each level of the hierarchy, additional lower level entities can be created. You can add additional content to these pages if desired, but do not delete the fields indicated below. This is used to provide high level overviews of schedule progress.
- Iterations Create new iterations from the project pages.
- Stories Create new stories from the iteration page. The story name can be any unique name, as long as it ends with the string "Story". Fill in the two tables for the story summary and task list respectively.
The content of these topics are determined by templates, having the name of the entity postfixed with
Template; there is usually a form attached, which is defined in the corresponding
Form. You should configure these to your need, in particular, the forms and templates defining stories. Please take care to not delete the fields indicating to which entity in the hierarchy a topic belongs (e.g., in the
StoryForm, the field
Iteration tells us which iteration this story belongs to). Do not delete the state field for stories. When creating a new instance of an entity, there may be a choice of templates, which is determined by the corresponding
TemplateOptions topic.
The iteration status page displays the stories and tasks currently allocated to that particular interation.
Stories are displayed in the order in which they are to be developed. Stories are completed when they are marked to be in the state configured to be the
STORYACCEPTEDINDICATION.
Tasks within a story are displayed in the order in which they are to be developed. Tasks are considered complete once their estimate until completion is 0 days.
Below are examples of the generated tables produced by parsing the story pages:
Show all iterations in a project -
XPSHOWPROJECTITERATIONS
| Team | Iter | Summary | Start | End | Est | Spent | ToDo | Progress | Done | Overrun |
| DemoTeam | DemoIter | One line summary | 16 Sep 2002 | 27 Sep 2002 | 7 | 4.5 | 3.5 | | 56% | 14% |
Show summary of iterations in a project -
XPSHOWITERATIONTERSE
| Story | StoryLead | Estimate | Spent | ToDo | Progress | Done | Overrun | Completion |
|---|
DemoStory Summary of story |
DevOne |
3 |
1.5 |
2.5 | | 37% | +33% | In progress |
SecondDemoStory Finish remaining tasks |
DevOne |
4 |
3 |
1 | | 75% | +0% | In progress |
| Team totals | | 7 | 4.5 | 3.5 | | 56% | +14% | |
Show details of iterations in a project -
XPSHOWITERATION
Story Tasks | Estimate | Who | Spent | To do | Status |
|---|
| DemoStory | 3 | DevOne | 1.5 | 2.5 | In progress |
| do the first task | 2 | DevOne | 1 | 2 | In progress |
| do the second task | 1 | DevTwo | .5 | 0.5 | In progress |
| |
| SecondDemoStory | 4 | DevOne | 3 | 1 | In progress |
| Do some more stuff | 3 | DevOne | 3 | 0 | Complete |
| Do other things | 1 | DevTwo | 0 | 1 | Waiting |
| |
| Team totals | 7 | | 4.5 | 3.5 | |
Developer velocity -
XPVELOCITIES
| Who | Ideals | Tasks |
|---|
| Assigned | Spent | Remaining | Assigned | Remaining |
|---|
| DevOne | 5 | 4 | 2 | 2 | 1 |
| DevTwo | 2 | 0.5 | 1.5 | 2 | 2 |
| Total | 7 | 4.5 | 3.5 | 4 | 3 |
|---|

The fields shown in the story summary can be customized via the ADDTLSTORYFIELDS preference variable.
Other tables available
This is a list of all the tables available. The names should be self-explanatory. Parameters are given in the form
param="value". The first parameter, if present, is also the default parameter, and its name can be omitted.
| Variable |
Parameters |
Comment |
| XPSHOWALLPROJECTS |
|
|
| XPSHOWALLTEAMS |
|
|
| XPSHOWALLITERATIONS |
|
|
| XPSHOWPROJECTTEAMS |
project |
|
| XPSHOWPROJECTITERATIONS |
project |
|
| XPSHOWPROJECTSTORIES |
project |
|
| XPSHOWTEAMITERATIONS |
team |
Shows a table summarizing the iterations assigned to a team. |
| XPSHOWITERATION |
iteration |
Shows a table summarizing the iteration, listing each story with each task and its status. |
| XPSHOWITERATIONTERSE |
iteration |
Shows a table summarizing the iteration. For each story, one line indicates the progress of this story. |
| XPSHOWPROJECTCOMPLETIONBYSTORIES |
project |
|
| XPSHOWPROJECTCOMPLETIONBYTASKS |
project |
|
| XPPIVOTBYFIELD |
iteration, field, split, skip |
Creates a pivot table of all tasks in the iteration. field is the field in the task which serves as the pivot. The Boolean split indicates whether the field should be split into its components (useful only when this is the developer field and more than one developer are assigned to a task). The Boolean skip indicates whether to omitt ongoing tasks in the table. |
| XPTEAMPIVOTBYFIELDREPORT |
team, field, split, skip |
Creates a pivot table of all tasks assigned to team. field is the field in the task which serves as the pivot. The Boolean split indicates whether the field should be split into its components (useful only when this is the developer field and more than one developer are assigned to a task). The Boolean skip indicates whether to omitt ongoing tasks in the table. |
| XPCREATETOPIC |
Team / Project / Iteration / Story (default: Story), Prompt |
Creates a form that will construct a new topic of the indicated kind, the prompt is a heading preceding the form (a heading level could be indicated by putting it into the prompt). |

Remember that the actual display of the hierarchy of activities can be configured by settings and may differ from the terminology reflected by these tags.
Time Tracking
Developers often work on more than one task at a time. We do want developers to keep their information up to date, which becomes tediuos if a developer works on many tasks. The following two tags simply this effort:
| Variable |
Parameters |
Comment |
| XPSHOWDEVELOPERTIMESHEET |
who |
Shows a table of all tasks that are assigned to the given developer. |
| XPSHOWDEVELOPERESTIMATE |
who |
Shows a table of all tasks that are assigned to the given developer for which the developer has not yet given an estimate (i.e., the estimated effort and effort to do fields are blank or contain a question mark). |
| XPSHOWLOAD |
project, who |
Shows the work load by developer and iteration for the selected project. If who="all" or omitted, shows the work load for all developers. If project is omitted, shows all projects. |
Below the estimate or timesheet table is a button that puts the table into edit mode and allows the user to enter estimates or update the information about effort spent for all open tasks at once.
Updates to the tasks as well as estimates can be given either in hours or days, as the user selects (however, the units must be consistent for the table). In addition, the user can select to have a report generated of the results of the update (this is helpful in case some of the topics are locked by some other user and could not be updated; also, such report gives the user a record of the information entered).
When updating assigned tasks the user can update the units spent on a task or the units remaining on the task or both. For updating the effort remaining, the user can select to do so in units of effort, or in percent done. For ongoing tasks (i.e., tasks that do not have a defined finish, only the effort spent can be updated.
When updating estimates, the user can provide an estimate of the effort to be performed on a task.
After filling in the desired information, the user must click the button below the table to submit the information to be added to the appropriate tasks. If the generate report options was selected, the report is presented.
Plugin Settings
Plugin settings are stored as preferences variables. To reference
a plugin setting write
%<plugin>_<setting>%, i.e.
%EMPTYPLUGIN_SHORTDESCRIPTION%
- One line description, is shown in the TextFormattingRules topic:
- Set SHORTDESCRIPTION = Plugin supporting light-weight project management.
- Plugin-specific settings
- Set ADDTLSTORYFIELDS =
- Additional fields of a story that should be displayed in story summaries.
- Set ADDTLTIMESHEETFIELDS =
- Additional fields of a story that should be displayed in timesheets.
- Set STORYACCEPTEDINDICATION =
- The story status which indicates that a story is accepted as completed.
- Set ACCEPTANCELITERAL =
- Set TEAMLABEL =
- Set PROJECTLABEL =
- Set SORT =
- The field by which to sort stories in tables
- Debug plugin: (See output in
data/debug.txt)
Getting Started with XpTracking
The distribution contains a set of template files in directory
data/_default_XpTracker. The initial setup of a tracking web might be easiest if one starts from that example. Begin with GettingStarted.
When designing your own templates and tracking topics, there are a few rules that must be followed, lest the application will not work. (In the following, TEAMLABEL stands for what was configured to be the hierarchy for "Team", and PROJECTLABEL for "Project".)
- While templates instantiating the tracking topics may have any name, they must have attached the following forms:
- Stories: StoryForm
- Iterations: IterationForm
- TEAMLABEL: TEAMLABELForm
- You can use arbitrary fields in forms defining the tracking topics, but the following fields must be present, as they are internally used:
- Stories: Iteration, Submit Date, State, Story Summary
- Iterations: TEAMLABEL, Start, End, Actual, Summary
- TEAMLABEL: PROJECTLABEL
- The templates that can be chosen to instantiate tracking topics must be listed in the following topics:
- Stories: StoryTemplateOptions
- Iterations: IterationTemplateOptions
- TEAMLABEL: TEAMLABELTemplateOptions
- PROJECTLABEL: PROJECTLABELTemplateOptions
Due to a defect in Twiki 4.0 (fixed in TWiki 4.1) please copy the preference settings in the "XpTrackerPlugin" section of the WebPreferences sample topic into your the WebPrefernces topic of the tracking web.
To illustrate the customization of the work breakdown structure, in the sample tracking web the hierarchy of work is configured differently from the default.
Plugin Installation Instructions
Note: You do not need to install anything on the browser to use this plugin. The following instructions are for the administrator who installs the plugin on the TWiki server.
- This plugin works only with TWiki 4 and beyond.
- Download the ZIP file from the Plugin web (see below)
- Unzip
YetAnotherXpTrackerPlugin.zip in your twiki installation directory. Content: data/TWiki/XpTrackerPlugin.txt | |
lib/TWiki/Plugins/XpTrackerPlugin.pm | |
lib/TWiki/Plugins/XpTrackerPlugin/Functions.pm | |
lib/TWiki/Plugins/XpTrackerPlugin/HiddenTableDef.pm | |
lib/TWiki/Plugins/XpTrackerPlugin/WebDB.pm | |
templates/oopstimesheet.tmpl | |
templates/oopstimesheetreport.tmpl | |
lib/TWiki/Plugins/XpTrackerPlugin/build.pl | |
lib/TWiki/Plugins/XpTrackerPlugin/Business.pm | |
data/_default_XpTracker/PatternSkinTrackingviewTemplate.txt | |
data/_default_XpTracker/PatternSkinTrackingeditTemplate.txt | |
data/_default_XpTracker/PatternSkinTrackinggenericviewTemplate.txt | |
data/_default_XpTracker/PatternSkinTrackinggenericeditTemplate.txt | |
data/_default_XpTracker/IterationTemplate.txt | |
data/_default_XpTracker/IterationTemplateOptions.txt | |
data/_default_XpTracker/ProjectTemplate.txt | |
data/_default_XpTracker/ProjectTemplateOptions.txt | |
data/_default_XpTracker/StoryTemplate.txt | |
data/_default_XpTracker/StoryTemplateOptions.txt | |
data/_default_XpTracker/TeamTemplate.txt | |
data/_default_XpTracker/TeamTemplateOptions.txt | |
data/_default_XpTracker/TeamMembers.txt | |
data/_default_XpTracker/IterationForm.txt | |
data/_default_XpTracker/StoryForm.txt | |
data/_default_XpTracker/ProjectForm.txt | |
data/_default_XpTracker/TeamForm.txt | |
data/_default_XpTracker/ProjectTopics.txt | |
data/_default_XpTracker/TaskForm.txt | |
data/_default_XpTracker/ATeamMember.txt | |
data/_default_XpTracker/WebPreferences.txt | |
data/_default_XpTracker/AllIterations.txt | |
data/_default_XpTracker/GettingStarted.txt | |
- Download the other TWiki and CPAN modules that this plugin depends on.
- Alternatively, run
YetAnotherXpTrackerPlugin_installer.pl to automatically check and install other TWiki modules that this module depends on. Make sure that the DBCacheContrib from TWiki:Plugins.YetAnotherDBCacheContrib
is used.
- Visit
configure in your TWiki installation, and enable the plugin in the {Plugins} section.
Plugin Info