
                     ngIRCd - Next Generation IRC Server

                        (c)2001-2010 Alexander Barton,
                    alex@barton.de, http://www.barton.de/

               ngIRCd is free software and published under the
                   terms of the GNU General Public License.

                            -- HowToRelease.txt --


I. Introduction
~~~~~~~~~~~~~~~

Creating a new ngIRCd release requires a few steps to follow: the source
tree must be in a releasable state (be up to date, include all required
patches, be tested on as many platforms as possible), a name for the new
release must be chosen, and all the files describing the release must be
updated accordingly.

Since ngIRCd release 13 (2009-12-25) we use "simple" release numbers for
major releases (e.g. "13", "17", "42", ...) introducing new features and
sub-releases for bug fixes only (e.g. "14.1", "22.3", ...).

When creating pre-releases or release candidates, please use the tilde ("~")
character to separate the "postfix" in the release number (e.g. "17~rc2"
or "123.4~rc6").

The release/version number of a build is automatically generated using the
GIT "describe" command, see git-describe(1). Therefore it is required that
a new release is tagged in the GIT tree and that the configure script is
up-to-date (e.g. using ./autogen.sh) before generating the archives!


II. How to prepare a new ngIRCd release?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

a) Make sure the source tree is in a releasable state ;-)

b) Make sure you have working versions of GNU autoconf and GNU automake
   installed on the system you use for generating the release:
   as of October 2010 we are using GNU autoconf 2.67 and GNU automake 1.11.1
   which seem to work just fine.

c) Update the files describing the new release:
    - ChangeLog
    - NEWS

d) Update the version numbers in the following files:
    - contrib/ngircd.spec

e) Generate a new Debian change log entry in the following file, e.g. using
   the Debian "dch" tool of the "devscripts" package:
    - contrib/Debian/changelog

f) Commit the above changes to GIT: "git add", "git commit"

g) Create a new signed GIT tag for the new release: "git tag -s".
   Please note that we don't use the tilde ("~") here, instead use a simple
   hyphen ("-") as delimiter: e.g. "rel-16" "rel-17-rc1", "rel-18-pre2", ...

h) Run "./autogen.sh" to update the ./configure script with the correct
   release number (autogenerated using "git describe", see above).

i) Run "./configure" to rebuild all generated Makefiles.

j) Run "make distcheck" to generate the distribution archives.

k) Sign the distribution archive(s) using GnuPG: "gpg -b <archivefile>"

l) Upload and distribute the newly generated ngIRCd release archive(s)
   and GnuPG signatures.

m) Write an announcement to the mailing list, freshmeat, Twitter, ...

n) Relax :-)
