Development/release process

For information on how to build GridLAB-D on various platform, see Build page.

Development process


Code development is driven by the [ ticket system]. In general, a branch from the trunk version is created by the ticket owner when work begins. The branch is given the name ticket/id where 'id' is the ticket number. The branch remains active as long as the ticket is open.

When the work is completed and the changes are validated on all supported platforms, the cumulative revision (included recent updates from the trunk) is posted back to the trunk. What happens next depends on the kind of ticket that originated the branch work:


 * Enhancement : These branches are usually long-lasting, involve potentially major changes or capability expansions, and are most likely not applied to pre-existing release branches.


 * Defect : These branches are usually short duration, fairly minor changes that are most likely applied to every release version they are compatible with.


 * Task : These are not usually branches because they don't typically involve code changes. Instead they are for things like tree maintenance, svn properties, etc.

Creating a ticket branch from trunk
host% export svnroot=https://gridlab-d.svn.sourceforge.net/svnroot/gridlab-d host% svn copy $svnroot/trunk $svnroot/ticket/number

Checking out a ticket branch
host% mkdir -p ticket/number host% cd ticket/number host% svn co $svnroot/ticket/number . ... do your work here ... host% svn commit

Updating a ticket branch
host% cd ticket/number host% svn merge $svnroot/trunk . ... fix conflicts if any ... host% sudo make install host% gridlabd --validate ... fix validation errors and repeat''' host% svn commit


 * Note : Please do not commit to trunk until your work is validated on all platforms using the ticket branch. If you need assistance with this, please contact the.

Merging a working ticket from trunk

 * Important : Do not merge a working ticket into trunk until cross-platform validation is completed on the ticket branch

host% cd trunk host% svn merge $svnroot/ticket/number ... validate ... host% svn commit

Undoing a change
Sometimes it is necessary to undo a committed change, either because it doesn't work as expected or it was committed to the wrong branch. To remove a changeset, use the svn merge command with the -c -numberoption, where number is the changeset you wish to undo:

host% svn merge -c -number $svnroot/branch host% svn status ... check that the right files are unmodified ... host% svn diff ... check that the right modifications are undone ... host% svn commit -m "Undoing changes in changeset:number"


 * Note : Be very careful with the syntax, in particular noting the hyphen in front of the revision number.

Documentation
There are three kinds of documentation that you must attend to when creating or modify GridLAB-D:


 * Wiki pages : These are the pages located in Help:Contents, Index, etc.
 * Doxygen pages : These are the pages generated by the source code doxygen tags.
 * Troubleshooting pages : These are the pages generated by the source code troubleshooting comments.

Please see the Documentation Guide for details.

Release process
The following process is used for building and validating a release.

Nightly build
Every night a build for each platform that is supported is completed. The build is named gridlabd-platform-date-nightly. An installer extension is added that is platform dependent.

Release candidate
For each platform, if there is not current candidate release and the nightly build passes autotest, then the nightly build is renamed gridlabd-platform-major_minor-candidate-id and the availability of the candidate for that platform is announced to the news group.

Release failure
If a major, critical, or blocker reported bug for a candidate is found, the candidate is rejected and it is deleted from the server when a new candidate is released.

Release success
If a candidate survives for a few weeks without failing it is adopted as the final release for the version in question by being renamed 'gridlabd-platform-major_minor''_0.

Release patch
After a version is released, the process continues, but only as patches named 'gridlabd-platform-major_minor_patch''.

Platforms
Standard release platforms are


 * win32 : Windows XP, Vista, and 7 on 32bit Intel platforms (extension exe).
 * x64 : Windows XP, Vista, and 7 on 64bit Intel platforms (extension exe).
 * macosx : Mac OS X on 64-bit Intel platforms (extension dmg</tt>)
 * rhn : Redhat 32 and 64 bit Intel platforms (extension rpm</tt>).
 * source : All gnutools-capable platforms