=====================
KID RELEASE CHECKLIST
=====================

These notes describe the general procedure for releasing new version of
Kid. 


Pre-requisites
--------------

Make sure the following packages are installed on your system:

  * Python 2.3 and Python 2.4
  * setuptools <http://peak.telecommunity.com/DevCenter/setuptools>
  * docutils <http://docutils.sourceforge.net/>
  * buildutils <http://buildutils.lesscode.org/>
  * pudge <http://pudge.lesscode.org/>

Most of the utility packages can be installed using ``easy_install``. For
``buildutils`` and ``pudge``, it's recommended that you grab the latest
revisions from subversion:

  # easy_install http://lesscode.org/svn/pudge/trunk
  # easy_install http://lesscode.org/svn/buildutils/trunk

You shouldn't need to install Python2.3 versions of the utility packages.

Release Procedure
-----------------

1. Run Tests

  Check that all tests are passing:

    $ make test

  The tests run these configurations:
   
    a) Python 2.3 / ElementTree
    b) Python 2.4 / ElementTree
    c) Python 2.3 / cElementTree
    d) Python 2.4 / cElementTree
   
  I generally run tests on the following systems when possible:
   
    * Debian
    * Fedora Core 4
    * Mac OS X / 10.4+
    * FreeBSD (when possible)

2. Bump version number in ``kid/release.py``.

3. Update and build documentation

   Edit ``doc/index.txt`` and modify version numbers under the Download 
   section. The rest of the document is release-independent.

   Update ``doc/notes.txt`` with release notes. I haven't done this since 
   0.6 but it's definitely helpful.

   Build the docs using buildutils/pudge:

     $ pbu pudge
     
   Files generated by pudge are placed under the ``doc/html`` directory. 


4. Commit / Tag
   
   After committing release related changes, make a note of the current changeset
   revision and then tag it:
   
   $ svn cp -m 'tagging [changeset] for VERSION release' \
               svn://lesscode.org/kid/trunk \
               svn://lesscode.org/kid/tags/VERSION
   

5. Build Distributables

   Make sure you have recent versions of setuptools and buildutils installed 
   for both Python 2.4 and Python 2.3.
   
     $ pbu -i2.3,2.4 sdist bdist_egg
   
   You should now have ``dist/kid-VERSION.tar.gz``, 
   ``dist/kid-VERSION-py2.3.egg``, and ``dist/kid-VERSION-py2.4.egg``. This 
   is generally all I release.
   
   I like to scan the file contents just to make sure nothing funny made its way
   into the dist process:
   
     $ tar tzf dist/kid-VERSION.tar.gz | less
     $ unzip -l dist/kid-VERSION-*.egg | less
   

6. Generate Checksums
   
   This is important for package maintainers. Most package repositories hold
   the policy that upstream distributables MUST include checksums and many 
   require checksums to be signed.
   
     $ pbu checksum --sign
   
   (Leave off the --sign option if you're not setup with GPG.)
   
   This generates a `dist/kid-VERSION.sha` file and a
   `dist/kid-VERSION.sha.asc` file if the checksums are signed.
   

7. Publish Distributables

   [this is where I left off. will update with information on pushing changes
    up to lesscode.org when I get the processes worked out]   

