Release manual for uim
======================

As of this moment, uim has three types of release of the same version.  They
are alpha, beta and final. Alpha may be an unstable release and it may be
untested. After the alpha release, any new big features may not be committed.

The beta release must be tested partially by the maintainer. In the ideal case
it will be well-tested by the maintainer. If a first beta (beta1) is too
unstable, a second beta (beta2) should be released to ensure the quality of
the final release. After beta release, new features may not be committed.

The final release is really the final release. It must be tested well.

For each release the following steps should be followed. To make the final
release, you have to repeat the following procedure at least three times.

1. Declare 'I will make a new release' to the mailing list.

   Committers must not add a new unstable feature if a new release has been
   announced.

2. Gather up details of the release from each committer.

   The ChangeLog of uim is very long, so making a release note from the
   ChangeLog is hard work. Therefore a committer should send details of their
   commit. Maybe we sould prepare a better way.

3. Update subpackage versions in make-dist.sh.

   SSCM_URL="${TAGS_REPOSITORY}/sigscheme-0.7.2"
   LIBGCROOTS_URL="${TAGS_REPOSITORY}/libgcroots-0.1.3"

   And set appropriate $RELEASE_SUFFIX.

   RELEASE_SUFFIX="-alpha"
   RELEASE_SUFFIX="-beta"
   RELEASE_SUFFIX=""

4. Export a fresh tree from svn.

   svn export http://uim.googlecode.com/svn/trunk

5. Do test.

   gosh -I. test/run-test.scm

6. Do a build test with make-dist.sh

   This test is not enough, but worth doing. It is especially useful when a
   new file is added. As a TODO, we should do unit testing at this point.

7. Increment the version numbers in:

   - configure.ac
   - uim.h
   - Project-Id-Version in po/*.po

   And increment libtool-version.mk too if ABI is updated.

8. Update NEWS and RELNOTE

9. Tag to tags/uim-x.y.z

   On an alpha release, branch the tree at first.

   svn cp https://uim.googlecode.com/svn/trunk \
          https://uim.googlecode.com/svn/branches/x.y

   And then tag.

   svn cp https://uim.googlecode.com/svn/branches/x.y \
          https://uim.googlecode.com/svn/tags/uim-x.y.z-alpha

10. Export the fresh tagged tree from svn.

   svn export http://uim.googlecode.com/svn/tags/uim-x.y.z-alpha

11. Make the distribution.

   cd uim-x.y.z
   ./make-dist.sh

   Release suffixes such as '-alpha' and '-beta' is automatically appended.

12. Copy the source tarball to the download site.

   Upload the file by the official uploading script:

     http://code.google.com/p/support/wiki/ScriptedUploads

   Don't forget adding appropriate tags as follows.

   Final release:

     googlecode-upload.py -u yamakenz -p uim \
                          -s 'uim 1.5.0' -l 'Stable,Featured' \
                          uim-1.5.0.tar.bz2

   Alpha or beta release:

     googlecode-upload.py -u yamakenz -p uim \
                          -s 'uim 1.5.0-alpha' -l 'Unstable' \
                          uim-1.5.0-alpha.tar.bz2

   Snapshot release:

     googlecode-upload.py -u yamakenz -p uim \
                          -s 'uim trunk-snapshot20070703' -l 'Snapshot' \
                          uim-trunk-snapshot20070703.tar.bz2

   And untag 'Featured' from previous final release files by the web
   interface.

13. Update the web pages.

   http://code.google.com/p/uim/
   http://code.google.com/p/uim/wiki/FrontPage

   Update FrontPage first and copy it into the project description
   (homepage).

   <obsolete>
   The checksums of the files must not directly be written into the
   anyone-rewritable wikipage, to prevent spoofings. It should be a link to the
   release announce which contain the checksum information.
   </obsolete>

14. Send a message to uim-en@googlegroups.com

   <write announcement here>
   
     http://code.google.com/p/uim/downloads/

   MD5 (uim-1.4.0-example.tar.gz) = cff14a6ad95a6a1303b527a86d27bff4
   MD5 (uim-1.4.0-example.tar.bz2) = b2e96af101a0c51df697990f6311f6f2
   SHA1 (uim-1.4.0-example.tar.gz) = 3f152c4aa77a3a44d9f74800a8b9d8d3b6c16771
   SHA1 (uim-1.4.0-example.tar.bz2) = c870c3e8585ce8e4200fe3247021802d922781c6

   <append RELNOTE here>

15. Update Freshmeat entry

   http://freshmeat.net/projects/uim-inputmethod/
