Release check list
==================

When releasing a new version
----------------------------

1. Tasks in the elinks module (part 1):

 - Go over the changes since the last release. Use git-shortlog as a template.
   Write a small changelog highlighting the most important changes. Changes
   by new contributors are always important!
 - Update NEWS file and commit. Remember to add the new version number!
   Don't add the release date yet though; you will add it in a later step.
 - Change VERSION in the top of configure.in to hold the new version number.
 - Update the manpages so the will have the new release number by first
   building the source, followed by making the `update-man' target in doc/.
 - Update po files by running `make update-po` in po/`.
 - Commit these changes.
 - Create a signed tag having the version ("ELinks X.X.X") as the subject and
   using the changelog create above as the body. Use something like:

	$ git tag -s -F changelog.file elinks-X.X.X

 - Run script to create new tarballs (both .gz and .bz2).

	$ contrib/mkdist -g "$PWD/.git" -r elinks-X.X.X -l X.X.X

   This step also builds the elinks binary and documentation based on
   the label, and that might fail because of some bug, so it's best to
   do this before pushing anything.

 - Create ASCII armored signature files.

	$ gpg -b --armor elinks-X.X.X.tar.bz2
	$ gpg -b --armor elinks-X.X.X.tar.gz

 - Append ".GIT" to the VERSION variable in the top of configure.in.
 - Commit only this change.
 - Push these changes plus tag using:

	$ git push
	$ git push tag elinks-X.X.X

2. Tasks on http://elinks.cz/ (part 1):

 - Wait until the tag etc. has been synced or force a sync of the repository
   at http://elinks.cz/elinks.git/.

3. Tasks on localhost:

 - Copy the elinks-X.X.X.tar.* files to http://elinks.cz/download/.
 - Send announcement to elinks-users mailing list.  Do not format it
   as multipart/signed because the linuxfromscratch archive does not
   display such messages properly.
 - Wait for the announcement to hit the elinks-users mailing list archive.

4. Tasks in the elinks module (part 2):

 - Add the release date from the mailing list archive to NEWS.
 - Commit and push that change.

5. Tasks in the elinks-web module:

 - Change the version and release data in the start of website.conf.
   Also change download.txt if necessary.
 - Add paraphrased version of the first paragraph of the release announcement
   as a news entry in news/latest.txt. Make the entry link to both the
   archived announcement from linuxfromscratch.org and gmane.org using the
   "magic numbers" expanded by the macro. Possibly, move the cut-off markers
   that control which news entries to display on the front page.
 - Rebuild index.html, download.html, news.html, news.rss, and release.html.
 - Update bugzilla/milestones/elinks.html if the release corresponds
   to a reached milestone.
 - Commit the updates HTML and asciidoc files.
 - Push the commits.

6. Tasks on http://elinks.cz/ (part 2):

 - Wait until the elinks-web module has been synced or force a sync of the
   repository.
 - Checkout the new updated webpages.

7. Tasks on http://bugzilla.elinks.cz/:

 - Add the new version.
 - Add a comment to each bug fixed in this version.  If some of them
   are already VERIFIED, change them to CLOSED, unless they are also
   waiting for a release in another branch.

8. Tasks external sites and resources:

 - Add a new release to the freshmeat.net page.
 - Change topic of #elinks
 - (Request update of FSFs free software directory).
 - (Update current version on wikipedia).

When releasing a new stable branch
----------------------------------

(I only vaguely remember this process. --jonas)

1. Tasks on localhost:

 - Locally clone the freezed repository to a new repository that will contain
   the new stable branch.
 - Unfreeze the repository that was cloned by changing the VERSION variable in
   configure.in to the version of the new unstable branch (remember the
   ending ".GIT"), commit, and push.
 - Add new remote branch that will track the new stable "trunk". It should
   basically be the push URL of the cloned repository with "#elinks-X.X"
   appended.
 - Push to this new remote branch to create it.
 - Perform the normal version release tasks described above in this new
   repository.

2. Tasks on http://elinks.cz/:

 - Update http://elinks.cz/download/*-current-* tarball links to point to the
   correct versions.

3. Tasks external sites and resources:

 - Add a new branch to the freshmeat.net page.
