# Releasing Twisted

## Pre-release

### Test

- run the unit tests.

      ./admin/runtests

- Get someone to run the tests on Windows for win32eventreactor and default reactor.

- run the accepttests. It's important that you run the accepttests with a non-relative command line (stupid bug that still isn't fixed. Too easy to work around :)). I use:

      WEBBROWSER='galeon -n' IRCCLIENT=epic4 ~/Projects/Twisted/admin/accepttests -b

- kill your regular personal server on pyramid, if you have one.

- run the pre-release tests, on pyramid. When `less' comes up, check for errors.

      ./admin/prereleasetests

- Restart your personal server. :-)

### Documentation

- ChangeLog.
  - Browse through twisted-commits; if you see any updates that are significant but weren't mentioned in ChangeLog, retroactively add them
  - Add an entry: * .: Releasing Twisted $VERSION
- README: Add a new Quote of the Release.

## Release

### win32

Run win32/bdist_wininst.bat.

### Unix

- If you are working from a CVS version of Twisted which you want to release, make sure it is named `Twisted.CVS`, and in the directory immediately above it there is nothing else (that can be done via symlinks), and run:

      ./Twisted.CVS/admin/release-twisted -V $VERSION -o $LASTVERSION \
      --release=/twisted/Releases --upver --tag --exp --dist --docs \
      --balls --rel --deb --debi

- If you want to release the latest CVS version of Twisted, have a reasonably recent checkout of Twisted in $SOMEWHERE, and in an empty directory do

      $SOMEWHERE/admin/release-twisted -V $VERSION -o $LASTVERSION --checkout \
      --release=/twisted/Releases --upver --tag --exp --dist --docs --balls \
      --rel --deb --debi

## Post-release

### Upgrade pyramid

- Restart the main Twisted web server:

      sudo /etc/init.d/twisted-web stop
      sudo /etc/init.d/twisted-web start

- If necessary (only when distributed web changes protocols; this is very rare any more), restart snibril's server.

      su jh; ~jh/bin/stop; ~jh/bin/start; exit

### Distribute

Upload to Sourceforge

    $SOMEWHERE/admin/release-twisted -n $SFNAME -v $VERSION --sourceforge \
                      --release=/twisted/Releases

### Update Website

- If everything's cool, edit WebSite/twistedmatrix.com/news.html, index, products/get-current.epy and products/download.html
- cvs commit those

- deploy changes:

      cd /var/www/WebSite/twistedmatrix.com
      lore --docsdir . --config template=template.tpl --config ext=

### Announcements

This is usually done by Itamar.

- Freshmeat
- comp.lang.python
- comp.lang.python.announce
- parnassus
- Linux Weekly News (email lwn at lwn.net)
- PyPI

### Notify Packagers

- Debian: Moshe Zadka moshez (at) twistedmatrix (dot) com
- FreeBSD: Johann Visagie wjv (at) freebsd (dot) org
- Win32: Cory Dodt corydodt (at) yahoo (dot) com
- Gentoo: lordvan (at) gentoo (dot) org