Release process
===============

1. Check CI (http://build.nanomsg.org/waterfall).

2. Check AppVeyor https://ci.appveyor.com/project/gdamore/nanomsg

3. Check Travis CI https://travis-ci.org/nanomsg/nanomsg

4. "make distcheck" to check whether the packaging process still works.

5. Bump ABI version as appropriate (see the docs on versioning). This happens
   in src/nn.h, check links there on which numbers to update.

6. Commit and push back to the public repo.

7. Tag the new version, e.g. git tag -a 0.3-beta.

8. Push the tag to the repo, e.g. git push origin 0.3-beta.

9. Clone a clean repo from GitHub.

10. Build the package (make distcheck).

11. Upload the packages to the github releases page.

12. Get the checksums (md5sum) of the packages.

13. Upload the "download" page on the website (see gh-pages branch of the
    repo).

14. Generate the docs (./configure --enable-doc; make).

15. In online docs (gh-pages) make a new folder (e.g. v0.3) and copy the HTML
    docs there.

16. Link the docs from "documentation.html" page.

17. Send the announcement about the release. These commands might be useful:
    git log --oneline 0.2-alpha..0.3-beta | wc -l
    git diff -U0 0.2-alpha..0.3-beta AUTHORS

18. Update the topic in the chatroom accordingly.
