[kepler-dev] impending beta release, cvs branch, and development process changes

Christopher Brooks cxh at eecs.berkeley.edu
Tue May 16 12:04:51 PDT 2006


Hi Matt,

Sounds good!

The Ptolemy II tree is in a pretty good state.  I've spent some time
cleaning up broken links and demo problems.  Now is as good a time as
any to have taken the snapshot.

For my part, I'll be more careful about breaking the build.  One
problem is that rebuilding Kepler takes time, so I've only been doing
it once or twice a day.  I'm now on the Nightly Build email 
(http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-nightly)
I added a link to the developer's page for the nightly build and
the current Kepler Bugs.

I'd like to refactor the DocViewer, but that can wait.
I'd still like to look at removing the duplicate
classes having to do with the DocViewer in Kepler.

Is the doccheck output available?  It might help to have people clean
up code?  Also, are there any code coverage stats available?
Maybe there needs to be a standdown where everyone cleans code,
writes tests and reviews code for a few days?  Just an idea, I'm not
sure it is at all practical.

I think this is probably the dark before the storm.  Of course, then
again, sometimes the light at the end of the tunnel is an oncoming
train. :-)

_Christopher

--------

    Our current roadmap calls for a beta1 release on April 28, which we 
    missed (again).  This necessitates delaying the 1.0 release again, as 
    its unrealistic to commit to the current code base for a production 
    release.  Stabilizing the code has been difficult, so it is 
    understandable, but some of it is a matter of getting the right people 
    focused on the task.  I am hopeful that we'll be able to buckle down and 
    focus over the next few months and get the release out.  Towards that 
    end we came up with some suggestions during a meeting of the SEEK 
    project the week before last.  The following proposals are from the SEEK 
    developers.
    
    We propose the following revised schedule:
       Beta 1: stabilize current features, 'preview' of 1.0
               I created a cvs branch for the release (KEPLER_1_0_0_BRANCH),
               new work will need to be checked into the HEAD and the
               branch if it is stable enough.  New features targeted for
               the branch should be discussed before checkin.  I tagged the
               ptII module at its current spot because it seems to be working
               with Kepler (KEPLER_1_0_0_MARKER), so we should be able to
               return to this spot in the ptII tree as needed.
               Freeze checkins for the beta on Friday, May 19 (this week!).
               Dan Higgins will build release on Monday, May 22.
               Will release on web later next week after testing.
    
        1.0.0: Aim for middle of this summer.  We identified a list
               of features that are still outstanding.  We also identified
               a number of bugs and stability problems.  We feel that an
               adequate testing regime is critical, and is not yet in
               place for a variety of reasons (see below).
               Freeze date for 1.0.0 to be determined during a
               Kepler conf call.
    
    We feel that many of the issues that have plagued the project are due to 
    a lack of formal structure and requirements in the development process. 
      Our general assessment was that the quality of the code could be 
    tremendously improved by requiring more of an emphasis on requirements 
    and design before coding, by requiring that developers write complete 
    tests that cover all public interfaces for classes before writing code, 
    and that all code that is checked into CVS be reviewed by another Kepler 
    project member before committing.  As a consequence, we propose the 
    following process changes to the Kepler development process:
    
    1) We will shift to a continuous integration build instead of a nightly 
    build.  Builds will be conducted on multiple platforms (Win/Mac/Linux) 
    in continuous fashion (ala Tinderbox).  Each time a build is run, the 
    tests for that build will be run too.  Web reports will show any broken 
    builds or failed tests, and will list the people who have committed code 
    since the previous successful build.  Those people will be responsible 
    for fixing any problems.  Any person who repeatedly breaks the build 
    will be reviewed by the project members and their write privileges will 
    be revoked if the members deem it necessary for project stability.
    
    2) The CVS system will be modified to perform additional checks upon 
    commit.  Whenever code is committed, the system will check to see if a 
    test exists for that class.  If not, the commit will be rejected by the 
    system.  Developers are strongly encouraged to write tests with complete 
    coverage for their classes, althogh we recognize that this is at times 
    impossible (e.g., for GUI classes) and therefore can not be strictly 
    required.  In addition to testing the public methods, each actor non-gui 
    class should have a test workflow that exercises its functionality and 
    verifies that its output is correct.  The CVS system will also check 
    that all methods have javadoc comments and reject any classes that are 
    undocumented.  Simply putting in placeholder documentation is 
    unacceptable, but as we have no way to automate quality assurance in the 
    documentation, the system will only check if Javadocs are present.  If 
    absent, the commit will be rejected.
    
    3) Developers are strongly encouraged to have another Kepler developer 
    review either the classes or tests for consistency with design goals, 
    quality of the implementation and documentation, and coverage of the 
    tests.
    
    4) Many stability problems in Kepler are due to the tight relatinship 
    beween the core system and the individual actors.  We propose to 
    separate the build for core Kepler and the actors so that it is clear 
    which source code and libraries are needed for the system and which are 
    only needed for actors.  The build will be revised to make it more 
    robust to failures in the actor tree, both at compile time and at 
    runtime.  Additions to the jar file list for core Kepler should be 
    discussed on the mailing list prior to committing.  Any additions of new 
    jars should be examined for conflicting classes/duplication with 
    existing jars, and only committed if no such problems exist.  When 
    duplications would be found, the kepler-dev mailing list should be 
    consulted to determine which version of the libraries should stay in the 
    build.  Any developer changing the version of a library (e.g., Xerces) 
    is responsible to be sure that all refactoring of code needed is done 
    and that all tests are still passed after the changes.
    
    We think these changes will help with our long term stability by simply 
    focusing more effort on testing and documentation.  Matthew Brooke is 
    working on implementing some of these changes in a new, more robust 
    nightly build system.  I will be working on making the CVS changes.  We 
    would appreciate any comments or additional suggestions to this 
    proposal.  Thanks.
    
    Matt
    -- 
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Matt Jones                                   Ph: 907-789-0496
    jones at nceas.ucsb.edu                    SIP #: 1-747-626-7082
    National Center for Ecological Analysis and Synthesis (NCEAS)
    UC Santa Barbara     http://www.nceas.ucsb.edu/ecoinformatics
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    _______________________________________________
    Kepler-dev mailing list
    Kepler-dev at ecoinformatics.org
    http://mercury.nceas.ucsb.edu/ecoinformatics/mailman/listinfo/kepler-dev
--------


More information about the Kepler-dev mailing list