NetBeans New Features

$Revision: 1.2 $
author:

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:

  1. Overview
  2. How to write features for your module
  3. XSL styles
  4. 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:
  • Generated module list:
    • features.html file for every module. This file is located in /www/plans/ directory of every module. Examples: vcscore, debugger, java
  • Instructions:

2. How to write features for your module

  • Use any example and modify it for your module: vcscore, debugger, java , nbbuild
  • Use this DTD if you prefer: https://netbeans.org/dtds/module_features-1_0.dtd The DTD is commented!
  • Each proposal is formated in xml.
  • Check if the xml is well-formed.
  • Check if the xml is valid with the DTD
  • The file is stored in the same place for every module: /<yourmodule>/www/plans/plan.xml

Three Examples

  • Example storing all information in Issuezilla
  • Example extending information from Issuesilla
  • Example overwriting information from Issuezilla

Example fully generated from IssueZilla

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:

    <taskdef name="noplans"
                classname="org.netbeans.nbbuild.NoPlans"
                classpath="${nbbuild_root}/nbantext.jar"
    />

    <!-- For those behind firewall. -->
    <property name="http.proxyPort" value="..." />
    <property name="http.proxyHost" value="..." />

    <target name="generate-plans">
        <noplans target="plans.xml"
                    query="component=mycomponent&target_milestone=4.0&status_whiteboard=mykeyword&status_whiteboard_type=allwords"
                    group="MyPlan"
        />
    </target>
where:
target
points to plans file to be generated,
query
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="https://netbeans.org/release33/">NetBeans - Release 3.3 Homepage</req-link>
        <req-link href="https://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="https://netbeans.org/release33/">NetBeans - Release 3.3 Homepage</req-link>
        <req-link href="https://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.

 

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2016, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo