How to make a BlueJ release
---------------------------

PART I - BUILDING BLUEJ
-----------------------

Before start building, check the copyright years, which is usually needed only once every year.
The line to be updated is 'menu.help.copyright.line0', which is in the 'lib/english/labels' file.

 1. Set the right BlueJ version number in bluej/build.xml and run: ant update-version-number
 
    This updates the version number in the Boot class and the README.TXT file.

 2. No longer necessary:
    Make sure to build the submitter extension (using 'buildall' from the
    extension ant build file). This places submitter.jar into bluej/lib/extensions.
    
    NOTE: submitter.jar is now under version control. If changes are made to the submitter
    extension, the submitter.jar file should preferably be re-built and committed to the
    repository at that time.
     
 3. Make sure you have a reasonably clean project folder as almost everything
    will be included in the source bundle.
    
    Do a clean to ensure a clean build:    ant clean
    (Compile and) build the release with:  ant dist
    (make sure the JDK version used for the build is the lowest
     compatible JDK for BlueJ)
    This will create 
        bluej/package/bluej-dist.jar            -- the core jar for building release bundles
        bluej/package/BlueJ-generic-VERSION.jar -- the cross platform installer
        bluej/package/BlueJ-source-VERSION.zip    -- the source bundle
    NOTE: for some mysterious reason, distributions are larger when
    built on Windows. Preferably build on Solaris or Mac.
    
 4. Run "sudo ant debian-dist" to build the Debian/Ubuntu ".deb" package. You can only do this
    on a system which has the "dpkg-deb" utility installed. It is necessary that this build
    target runs as root.

 5. See HOWTO.make-win-version for building the Windows release bundle.
 
 6. See HOWTO.make-mac-release for building the Mac release bundles.

 7. Rename (usually by adding a release candidate string like "BlueJ*rc1.???").
 
 8. The release should be tagged in the version control repository at this point.
    (If another release candidate is built later, the tag can be reset).

 9. Test. When okay, rename to final distribution name.
 

PART II - RELEASING BLUEJ
-------------------------

 8. Move the distribution files and the source to the public 
    server (currently www.bluej.org/download/files/).

 9. Update the BlueJ web site to announce the new version (available in SVN as trunk/www-bluej):
     - update the front page (index.html)
        - change version, date, and download links 
     - update the versions page (versions.html)
        - add section with version, date, changes and download links
     - update the Raspberry Pi page (raspberrypi/index.html)
        - change file name and download links

        
10. Update the file www.bluej.org/version.info
    The real location currently is: bluej:/home/bluej/www/version.info

11. Intentionally left blank

12. In the bugs database (http://bugs.bluej.org/trac/bluej),

   1. Add a future release milestone ("Roadmap", "New Milestone").

   2. Mark the new release milestone as completed.  Use the option that
      Trac provides to retarget open bugs to the future milestone.
      ("Roadmap" -> click on milestone -> "Edit milestone";
       do not go through the Admin panel!).
   
   3. Also check that there are no bugs against the current release which are marked as
      FIXED but for which the milestone isn't set. Set the milestone to the new release
      for such bugs.
      
   
13. Also in the bugs database, add the new version so that bugs can be reported against
    it.
    
14. Update the support form at http://www.bluej.org/help/supportform.html - the drop-down
    version field should have the new version added as an option.

15. Send a mail message to bluej-announce@bluej.org, announcing the release.

16. More public announcements. See HOWTO.announce-release.

