special thanks to
for the xsl and ant scripts and
for original ideas.
Abstract:
This document proposes the format of New features plans and describes how they
can be used.
Changes: available in release33/features/infrastructure/index.html CVS
Contents:
Overview
How to write features for your module
XSL styles
Strenghts and Weaknesses
1. Overview
The main reson of this proposal is to simplify the work with new features
proposals and plans in NetBeans. It will allow to write xsl files, which will generate the
exact collection of features you need (e.g. only significant features for the
whole release). An example can be the generation of "WhatIsNew.html"
file at the end of release cycle.
The features will be collected per module in one plan.xml file.
Using xsl it is possible to generate html files for every module and also
features for whole release. In order to to track the implementation
progress during different phases of release the features can and are suggested
to link into an issue in issuezilla.
The actual information (progress, status, target version, responsible persons) will be extracted from the
associated issue and updated dynamically each time the pages are regenerated.
The whole infrastructure consists of the following parts:
Source data for each module:
plan.xml file for every module. This file is located in /www/plans/ directory of every module. Examples:
vcscore,
debugger,
java
Source data for whole release:
/nbbuild/plans/modules.xml - The list of modules collected to projects.
/nbbuild/plans/all_features.xml - Features for all modules included in one xml file - used for transformation.
XSL styles for transformation:(stored in nbbuild module)
/nbbuild/plans/nb33-features-overview.xsl - Style for generation the main features overview.
/nbbuild/plans/nb33-features-module.xsl - Style for generation features for one module.
Build script for transformation:
/nbbuild/plans/build.xml - ANT script.
Plan.xml generator (nbbuild/antsrc/org/netbeans/nbbuild/NoPlans.java) - and Ant task that creates draft plan.xml file to be postprocessed by:
/nbbuild/antsrc/org/netbeans/nbbuild/PlansPreprocess.java
- an ANT task that connects to issuezilla and updates the the features with values from issuzilla
Generated overview of features for whole release:
nb33-features-overview.html - List for projects (one or more modules), only features which has high impact on users
Generated module list:
features.html file for every module. This file is located in /www/plans/ directory of every module. Examples:
vcscore,
debugger,
java
Fill planned issue into IssueZilla. There is conventionally
introduced status whileboard attribute named "duration" that
maps directly to plan.xml's 's duration attribute.
Usage duration=5 means that given issue takes 5 responsible developer
days. (More status whileboard attributes may be introduced if needed).
Mark somehow issues that you have planned. I used a "mykeyword"
placed in status whiteboard.
Create a build script that will generate plan.xml draft:
selects issues that you want to include in your plan
(it can go over multiple modules if needed)
group
names generated plan, it must be module name
for module plans.
Let PlanPreprocess task genereates all requirement details from Issuezilla connection.
Example of one requirement that uses connection with issuezilla
<requirement issue="14234" duration="5" user-impact="high">
<short-description>
Create list of planned features for NetBeans release 3.3.
</short-description>
<long-description>
<body><p>Make features list for NetBeans 3.3.</p><p>
All modules will have own list in $modulehome/www/plans/plan.xml
This features will be collected to one list for whole NetBeans 3.3</p></body>
</long-description>
<req-link href="http://www.netbeans.org/release33/">NetBeans - Release 3.3 Homepage</req-link>
<req-link href="http://www.netbeans.org/release33/features/infrastructure/index.html">Instructions</>
</requirement>
Another example that overrides name, roles and percentage-complete
<requirement issue="17132" name="Features list" percentage-complete="90" user-impact="high">
<short-description>
Create list of planned features for NetBeans release 3.3.
</short-description>
<long-description>
<body><p>Make features list for NetBeans 3.3.</p><p>
All modules will have own list in $modulehome/www/plans/plan.xml
This features will be collected to one list for whole NetBeans 3.3</p></body>
</long-description>
<roles>
<person nickname="Petr Hamernik">
<e-mail>petr.hamernik@czech.sun.com</e-mail>
<role name="owner"/>
</person>
</roles>
<req-link href="http://www.netbeans.org/release33/">NetBeans - Release 3.3 Homepage</req-link>
<req-link href="http://www.netbeans.org/release33/features/infrastructure/index.html">Instructions</>
</requirement>
FAQs:
Use issue="number" to connect your requirement with issuezilla
Use user-impact="high" if you want the feature is listed in release features overview or
do not use the user-impact attribute and change type of your issuezilla issue to FEATURE
Use short-description as a description at features overview (just plain text 1-3 lines), if it is missing the first text description from
issuezilla is taken
Use long-description in plain text or in xhtml format starting with <body> element. xhtml is the same like html,
but all tags has to be coupled, for example: <p>text</p>. Long descriptions are used in per-module pages
Use percentage-complete to notify users, which feature is already implemented in dev build or leave it out to update it from issue,
if you do not use this attribute it will be automatically taken from issuezilla
XSL transformation are scheduled to run automatically every two hours.
3. XSL styles
Using xsl and ant scripts it is possible to generate the
output from plan.xml files
The scripts are stored in nbbuild module in /plans directory
The scripts are not finished yet, but are already available at /nbbuild/plans/ CVS.
4. Strengths and weaknesses
Strengths of this solution are:
Issuezilla can be used as the only data entry point.
The simple format of plan.xml (the same effort as features.html)
Possibility to generate more then just a collection of features - generation of whatisnew.html in the end of release cycle
Possibility tracking of implementation status
Allow future extension of xsl styles
Many others...
Weaknesses:
Extra work with filling the content to the plan.xml files which is now reduced by live integration with issuezilla.
Generated reports do not distinguish between subtasks and external dependencies.
Please send comments to
or to directly to me:
.
Thanks.