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 NEWS and RELNOTE

   $ vi NEWS
   $ vi RELNOTE

4. Increment libtool-version.mk too if API/ABI is updated.

   $ vi uim/libtool-version.mk

   Then push them.
   $ git push

5. Export a fresh tree from the Git repository.

   $ git clone git@github.com:uim/uim.git
   $ cd uim

   On an alpha release, create a branch

   $ git checkout -b x.y
   $ git push origin x.y

   On a beta release and a final release,
   create a tracking branch and check out the branch

   $ git checkout --track -b x.y origin/x.y

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. We should also do unit testing at this point.

   $ ./make-dist.sh

7. Tag uim-x.y.z

   Tag and push the tag.

   On an alpha release
   $ git tag uim-x.y.0-alpha
   $ git push --tags

   On a beta release
   $ git tag uim-x.y.0-beta
   $ git push --tags

   On a final release
   $ git tag uim-x.y.z
   $ git push --tags

8. Create the source tarball on a non-final release

   On an alpha release
   $ make distcheck distdir=uim-x.y.0-alpha
   $ make sum distdir=uim-x.y.0-alpha

   On a beta release
   $ make distcheck distdir=uim-x.y.0-beta
   $ make sum distdir=uim-x.y.0-beta

9. 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 x.y.z' -l 'Stable,Featured' \
                              uim-x.y.z.tar.bz2

   Alpha release:

     $ ./googlecode-upload.py -u yamakenz -p uim \
                              -s 'uim x.y.0-alpha' -l 'Unstable' \
                              uim-x.y.0-alpha.tar.bz2

   Beta release:

     $ ./googlecode-upload.py -u yamakenz -p uim \
                              -s 'uim x.y.0-beta' -l 'Unstable' \
                              uim-x.y.0-beta.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.

10. 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>

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

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

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

   <append RELNOTE here>

12. Increment the version numbers in configure.ac

   $ vi configure.ac

