Before releasing Slash'EM, you should send an email to the slashem-devel mailing list at least a week in advance proposing a release date. This allows developers to request a delay and to plan their work around the freeze that occurs on release days.
On release day edit readme.txt and add the date (as Month day/year) of the release and your name as release technician. Commit this with a comment such as "Preparing for 0.0.6E4F8 release".
The next step is to create a tarball for final testing. This is done using the release scripts (contact Ali for details) or in the worst case you can wait for Ali's preview system to create a tarball (which uses the same scripts).
Check the diffs from the previous released version and make sure that no unexpected changes have been introduced. The release scripts also create a set of diffs which represent the automatic fixups which it believes should be performed. You can ignore diffs which only change RCS IDs. These don't represent real differences.
At the very least, you should check that the tarball builds correctly on at least one platform and that you can start a game, save it and restore again. Stable releases should be tested on as many platforms as practical and have a quick ascension in wizard mode to make sure they are not completely broken.
If you are able to put the release candidate up on a website somewhere and let people on #slashem on irc.freenode.org know so that anyone who wants can do their own tests at the same time, then that would be ideal.
Because release announcments are made in a number of different places and in a number of different formats, you may find it helpful to write some boilerplate that can be reused for these. I usually write the following:
A change log. This is the list of all changes made in the release and can be based on readme.txt in the release tarball. Example:
Changes made in 0.0.7E6F2: Fixed bug 910334: Vampire blood and foodless conduct Fixed bug 924384: Inconsistency with shoggoth corroding items Macintosh: Include fix-level in about-box version Fixed bug 924277: Monsters can retaliate against themselves Fixed bug 925892: Vampire corpse on early bones level Fixed bug 922320: Grenade thrown by soldier angered monster Fixed bug 929873: Crash while reading spellbook off floor Fixed bug 932788: Permanent inventory window not updated immediately Fixed bug 932791: Permanent inventory window not closed immediately Fixed bug 932800: [GTK] Changing hilite_pet from "more options" not immed. Fixed bug 932801: [GTK] Changing hilite_pet from options not immed. honoured Fixed bug 932816: Disabled radar window appears (but isn't updated) on startup Fixed bug 932818: [GTK] Can't close main window before starting game Fixed bug 932827: [win32] Session windows slowly creep right and down Fixed bug 932832: [GTK] Can't cancel at "Who are you?" prompt Fixed bug 932905: [GTK] Apparently random crashes NhExt: Added support for authentication (eg., for dgamelaunch) Fixed bug 938859: Rate of fire affected by non-launcher weapon Fixed bug 929876: Monsters can pass between Sokoban bars Fixed bug 934073: Spurious "don't seem to harm" messages for Drow Fixed bug 926829: Vampires "don't seem to harm" when draining levels Fixed bug 939133: dmonsfree error after exploding /WoPoly Fixed bug 911485: Monk techniques and vampire lords Fixed bug 935175: monsters cheating to use polearm Fixed bug 938871: Izchak does not appear Fixed bug 938864: Bad message when using flurry and limiting shots Fixed bug 931200: Gnolls in Gnomish Mines
A change summary. This is a one line description of the release followed by a short paragraph giving an overview of the changes made. Example:
Version 0.0.7E6F2 is the third beta release of Slash'EM Vampire. The NhExt protocol now supports authentication. This allows Slash'EM servers running something like dgamelaunch to provide NhExt facilities without losing password protection for users' games. Reading spellbooks off the floor no longer crashes the game. A number of annoyances in the GTK interface (including one crash) have been fixed. Several less serious bugs have also been fixed.
The announcment. Example:
Announcing Slash'EM version 0.0.7E6F2 (development) ... Version 0.0.7E6F2 is the third beta release of Slash'EM Vampire. Summary of changes made: Support for authentication in NhExt (to support dgamelaunch). Bug fixes including one crash and one panic fix. Slash'EM homepage: http://www.slashem.org/ Source is available from the main file download area: http://sourceforge.net/project/showfiles.php?group_id=9746
Once the release candidate has passed the various tests, the versions of the source files included in the tarball need to be tagged so that we could re-create the tarball if needed. This is done with the following command:
% cvs tag -R SLASHEM_0_0_7E6F2 .where
SLASHEM_0_0_7E6F2should be replaced by whatever tag is appropriate for the release you are making.
The tarball can now be released by uploading it to upload.sourceforge.net in the incoming directory (log in as anonymous).
Then go to the sourceforge file release system and add a release to the slashem-source package. The release name should be the bare version number, eg., 0.0.7E6F2
.
The release notes for sourceforge are normally just the first line of the change summary you wrong earlier. The change log can simply be uploaded.
Select the tarball from the list and add it.
Set the processor to Any
, the file type to Source .gz
and
update.
Send monitoring users a notice.
The next step is to update the Slash'EM web pages. For development versions this means adding the change log to devel.html and creating links to all the tracker artifacts. You should note at the bottom of the page which versions (if any) the new release is compatible with. Finally the summary line and the links at the top of the page need to be updated.
News from the homepage which is no longer current should be moved into the archive and an entry made for the new release.
The Slash'EM homepage may be found on shell.sourceforge.net in /home/groups/s/sl/slashem/htdocs
A news item should be posted to sourceforge using their
submit system. We normally use a subject like SLASH'EM 0.0.7E6F2 released
and a text of something like:
Announcing Slash'EM version 0.0.7E6F2 (development) ... Version 0.0.7E6F2 is the third beta release of Slash'EM Vampire.followed by the change log.
You should send an email to the slashem-announce mailing list. This can be identical to the news item submitted to sourceforge with a note at the end as follows:
Binaries and source are available from the development page: http://www.slashem.org/devel.htmlThe Reply-To header should be set to the slashem-discuss mailing list.
Send a post to rec.games.roguelike.announce and rec.games.roguelike.nethack containing the announcement you wrote above. The Followup-To field should be set to rec.games.roguelike.nethack
Follow the links from the Slash'EM page to announce a new version. Use the change summary you wrote earlier for the changes box.
Follow the links from the Slash'EM page to announce a new version. Use the change summary you wrote earlier for the changes box.
The final step is to set CVS up so that development can continue on the next version of Slash'EM. To do this, move the list of changes from readme.txt into history.txt, create a new entry for the next version in readme.txt. Example:
ver 0.0.7E6F3 [?] [Released by ?]Then change the version number in patchlevel.h (don't worry about port specific version numbers, they will be dealt with by the port maintainers). Use something like
Setup for version 0.0.7E6F3as a comment.