The status.xml file in Forrest
Describing the project status
The project status and progress can easily be followed by maintaining the status.xml file, found at the project root, at the same location as forrest.properties. The purpose of this file is to communicate the technical progress and development of the project without forcing people to scrutinize our bug database. Also, it can be used to state progress, changes and whatever that is not related to the bug db at all.
Exactly what we put into the status file can vary, but the latest version of Forrest (0.7) has a mechanism to filter out entries with a certain property, such that one can get overview reports as well as detailed lists of bugs fixed.
If we look at how it is used in the Forrest project itself, each entry contains a very short description (typically one sentence) with reference to the bug report(s) it relates to. It is easy to automatically create links to the bug reports.
Format of the status.xml file
The status.xml file is heavily under-documented in Forrest, and the description below is based on what I have found in the XSL stylesheet processing status.xml, as well as the example status.xml found in $FORREST_HOME/plugins/org.apache.forrest.plugin.input.projectInfo/. The basic outline of the file is as follows:
<!DOCTYPE status PUBLIC "-//APACHE//DTD Status V1.3//EN" "status-v13.dtd"> <status> <!-- List developers here, the ID is used as reference further down --> <developers> <person name="Sjur N. M." email="xx(a)samediggi.no" id="SNM"/> </developers> <!-- List type of change here, the ID is used as reference further down --> <contexts> <context id="code" title="Changes to the Code Base"/> <context id="docs" title="Changes to Documentation"/> </contexts> <changes> <!-- Add new releases here --> <release version="0.1" date="25 May 2005"> <notes> <p>Notes pertaining to this release.</p> </notes> <action dev="SNM" type="fix" context="code" fixes-bug="85" due-to="Børre Gaup"> Short description of what was fixed. </action> <!-- Add more actions here --> </release> </changes> <todo> <!-- 'actions' can have priorities 'high', 'medium' or 'low' --> <actions priority="high"> <action context="code" dev="open"> Short description of feature request here. </action> </actions> </todo> </status>
Each of the main sections above will be described further below.
The format is straight-forward. The ID is used further down in the listed actions, to identify the developer behind that action.
Each context defines a logical domain of work. The ID is used in the actions to classify each action with respect to the defined domains, and the title is used as section titles for each domain in the generated page. The contexts predefined by the project-info plugin are the following:
<contexts> <context id="code" title="Changes to the Code Base"/> <context id="docs" title="Changes to Documentation"/> <context id="admin" title="Changes to Project Administration"/> <context id="design" title="Changes to Design"/> <context id="build" title="Changes to Build"/> </contexts>
This is a reasonable set, but we are of course free to add, remove or redefine this list at will.
All changes are found within the <changes> element, and further encapsulated in one or more <release> elements. The following attributes are available:
- If used, will give the title of the page. If not, the text "History of Changes" will be used.
- The version number of the release.
- The date of the release.
Within each release, action elements describe each change or action taken. The following attributes are available:
- One of the contexts defined earlier
- The type of change. By default, the following action types are recognised
- The ID of the developer behind the action.
- The name of an external person helping out with an issue.
- The e-mail of an external person helping out with an issue.
- The ID of the bug(s) fixed as numbered in Bugzilla, separated with commas. If forrest.properties is configured correctly (it is now), Forrest will automatically create links to the bugs listed. We only have to add the bug numbers.
All todo items are found within the <todo> element, and further encapsulated in one or more <actions> elements. The following attributes are available:
- If used, will give the title of the page. If not, the text "Todo List" will be used.
- An arbitrary string describing the priority. Will be used as section title for all contained actions.
Only the following attributes are available for <action> elements within the <todo> element:
- One of the contexts defined, or an arbitrary string.
- The developer responsible for the task.
by Sjur N. Moshagen