2004-11-07

This text summarizes some points to pay attention to when a new release
of sane-backends should 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
  the latest autoconf release).
* configure.in: increase version number (twice!)
* configure.in: remove -cvs from textual version number
* configure.in: set is_release=no
* configure: recreate
* NEWS: update and enter date of release
* sane-backends.lsm: update
* ChangeLog: set release marker
* 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
* 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-deviced.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
* upload to mirrors that don't get the files automatically (ibiblio.org)

After the release:

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