Release should be done on branches from the trunk so that the package version in CVS can always be date-generated and core hacking isn't discouraged during the release cycle. Note: commands used to make a new branch are as follows: (for example, for version 0.3.3) cvs tag BRANCH-RELEASE-0_3_3-ROOT cvs tag -b BRANCH-RELEASE-0_3_3 cvs update -r BRANCH-RELEASE-0_3_3 Release TODO ------------ * make distcheck should pass * rpms should build * debs should build Packaging issues will hopefully be less difficult in the future as the build system stabilizes. * after a release, we move in cvs mode and use a .1 nano version number * close to the next release, we make prereleases by upping the nano version * update web site release notes * add release notes to cvs -- why? * take a FRESH cvs checkout * make distcheck should pass * test suite should pass * rpms should build and install * autotools have latest config.{guess,sub} This is needed in order to support newer platforms. On Debian install the autotools-dev package to get these. * depending on how the API has changed update the libtool versioning in configure.ac. Look at the libtool info page about versioning for guidelines. * update package version * roll a preliminary distribution tarball, make sure that it installs fine, registers fine, runs the media tests fine, and uninstalls as well * tag tree http://gstreamer.net/dev/cvs.php add tag to above page * relink current and cvs in the redhat dir and copy the symlinks from the current to the new release treee * update web site release notes: added to cvs - change the releases/current symbolic link - text version of release announcement can be made from lynx -dump http://gstreamer.net/releases/current/notice.php?clean=1 * update web site docs - release-specific docs should go in CVS - change docs/current symlink * update status table cvs status and then click on the release link http://gstreamer.net/admin.php is the portal to all of this * update web site news items for release again, the admin.php page * upload to sourceforge - should we md5 the tarballs? * announce to: freshmeat gstreamer-{devel, announce} linux-audio-dev (if it's a big release) gnome lists (?) lwn (if it's a big release) Should work: * autoconf feature to allow building outside source dir Package version policy ---------------------- Use major.minor.micro versioning Before 1.0.0 Update micro until code and API are fairly stable, then update minor. After 1.0.0 Update major when code and api hit new level of stability or major features. Update minor on API changes. Update micro on API-compatible changes.