2008-01-10

This text summarizes some points to pay attention to when a new release
of sane-backends is planned.

Timetable (approximate periods):

Day  0: Announcement of upcoming release on sane-devel including timetable
Day 14: Feature freeze (only bugfixes + documentation updates)
Day 28: Code freeze (only fixes for bugs that can destroy hardware, can cause 
        compilation problems or render a backend completely unusable, and
        documentation updates are allowed)
Day 35: Release

Before the release:

* Make sure that config.guess and config.sub are up-to-date (get them from
  savannah.gnu.org/projects/config)
* configure.in: increase version number (twice!)
* configure.in: remove -cvs from textual version number
* configure.in: set is_release=yes
* OPTIONAL: aclocal.m4: recreate by running aclocal
* OPTIONAL: include/sane/config.h.in: recreate (autoheader in root of checkout)
* DONT run automake, it will overwrite our custom ltmain.sh
* configure: recreate by running autoconf
* NEWS: update and enter date of release
* sane-backends.lsm: update
* ChangeLog: set release marker
* cvs commit
* tag CVS with release tag; e.g.: 'cvs tag RELEASE_1_0_15'

Making the release:

* make tar.gz, sane-backends-x.y.z.lsm, and .md5sum with "make sane-backends"
* unpack tar.gz in temporary directory
* make diff from last release by unpacking it also in temporary directory
  and running e.g. 
  diff -uNr sane-backends-1.0.14 sane-backends-1.0.15  > sane-backends-1.0.14-1.0.15.diff'
* check that the diff applies cleanly to the old version
* install devel headers required to build optional backends (1284,gphoto,etc)
* check that the new version .tar.gz can be compiled
* upload these files together with the .diff to the FTP/HTTP servers
  (at the moment: rpm.org and alioth.debian.org).
* copy sane-backends.html to sane-backends-"old-version".html,
  update sane-backends.html, sane-mfgs.html and sane-supported-devices.html 
  on sane-project.org
* update SANE standard and man pages on sane-project.org
* check and update platforms page on sane-project.org
* write announcements on sane-project.org and sane-devel, maybe others
  (e.g. freshmeat), include the md5 hash

After the release:

* move ChangeLog to ChangeLog-"version" and start a new ChangeLog
* add ChangeLog-"version" to DISTFILES in Makefile.in
* configure.in: add -cvs suffix
* configure.in: set is_release=no
* configure: regenerate
