I used to have a long, detailed manual checklist here for making a release. Most of it has been replaced by using a CI system (ick). What remains here are the manual steps:

  1. Prepare README, NEWS, setup.py, debian/changelog for the release.
  2. Tag release: git -sam "Release version x.y" foo-x.y
  3. Run ick. This runs tests, builds release packages, and uploads them to code.liw.fi and Debian, as needed.
  4. Announce on the relevant forums.
  5. my blog
  6. the announcement mailing list, if any
  7. identi.ca
  8. twitter

On version numbers

By default, my projects use X.Y as version numbers, where X changes whenever there is a really good reason to do so, and Y increments for each new release.

If there is a bug-fix-only release, then X.Y.Z can be used as the version number.