Release management of SigScheme
===============================

Acknowledgement
---------------

A part of this document is based on
http://lists.freedesktop.org/archives/uim/2005-November/001381.html[Release
Manual for uim (draft)] contributed to http://uim.freedesktop.org/[uim project]
by Jeroen Ruigrok van der Werven. Thank you for cooperation.


Versioning scheme
-----------------

A SigScheme version number is built up as follows:

----------------------------------------------------------------
  major.minor.patchlevel
----------------------------------------------------------------

The 'minor' number is incremented for every stable release. As an example:
1.2.3 will become 1.3.0 upon a new release.

There's no limit to the 'minor' version's number, it will continue past 9 with
10, in other words: after release 1.9.2 we will see release 1.10.0.

The 'patchlevel' number will only be increased in the case of a bug fix or a
security fix.

There is no separate versioning for unstable versions, this is simply the
source control's trunk revision with development snapshots being called
`sigscheme-snapshot-YYYYMMDD`. With `YYYYMMDD` standing for the year in four,
the month in two, and the day in two digits when the snapshot was taken.

And no 'alpha', 'beta' or 'RC' versions are released for now since the source
codes are still drastically changing and no profit can be obtained from a
feature freeze.


Release procedures
------------------

Declaration
~~~~~~~~~~~

Let all SigScheme developers know that a release is emerging, and make sure
that no developer is having a problem on the release.

Versioning
~~~~~~~~~~

Confirm the version number written in `AC_INIT()` of the `configure.in` prior
to a release. The number should immediately be incremented once a release has
been finished.

And do not forget updating `src/libtool-version.mk` if `libsscm` ABI has been
altered from previous version.

Tagging
~~~~~~~

A release must be tagged for development management.

----------------------------------------------------------------
$ svn cp -r33xx svn+ssh://svn.freedesktop.org/svn/uim/branches/r5rs/sigscheme \
                svn+ssh://svn.freedesktop.org/svn/uim/tags/sigscheme-x.y.z
----------------------------------------------------------------

If the release is a snapshot, tag as follows:

----------------------------------------------------------------
$ svn cp -r33xx svn+ssh://svn.freedesktop.org/svn/uim/branches/r5rs/sigscheme \
                svn+ssh://svn.freedesktop.org/svn/uim/tags/sigscheme-snapshot-YYYYMMDD
----------------------------------------------------------------

Packaging
~~~~~~~~~

SigScheme's `make dist` needs a tagged source tree freshly checked out to
generate `ChangeLog` for the release properly. `svn export`-ed tree does not
work.

----------------------------------------------------------------
$ cd /tmp
$ svn co http://anonsvn.freedesktop.org/svn/uim/tags/sigscheme-x.y.z
$ cd sigscheme-x.y.z
$ ./autogen.sh
$ ./configure --enable-maintainer-mode
$ make distcheck sum
----------------------------------------------------------------

It produces:

----------------------------------------------------------------
sigscheme-x.y.z.tar.gz
sigscheme-x.y.z.tar.bz2
sigscheme-x.y.z.md5
----------------------------------------------------------------

Publishing and announcements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

FIXME
