= String Freeze =
A string freeze should be announced about a week before each release, or longer if a large number of strings have changed.  This is a guarantee from the developers to the translators that no more strings will be added or changed so that the translators aren't trying to hit a moving target.
 1. In a clean workspace, cd into the po/ directory and run this command.  It will print warnings if there are files that need to be added to either POTFILES.in or POTFILES.skip:
{{{
intltool-update --maintain
}}}
 2. Send an email to translators@pidgin.im and devel@pidgin.im announcing the string freeze.

= Pre Release =
 1. Commit any [query:?status=new&status=assigned&status=reopened&type=translation&order=priority pending translation updates]
 2. Check there are no Blocker or Critical bugs targeted for this release
 3. Make sure the date and version number are correct in !ChangeLog, !ChangeLog.win32, !ChangeLog.API and po/ChangeLog
 4. Update NEWS
 5. Change version number at the top of configure.ac, set {{{purple_version_suffix}}} '''and''' {{{gnt_version_suffix}}} to {{{[betaN]}}} for betas and {{{[]}}} for a full release
 6. Check pidgin.spec.in, make sure that "%define beta 7" is commented/uncommented appropriately
 7. Run '{{{make distcheck}}}' and try to find crazy people to fix any problems it turns up
 8. Make a test tarball and RPM and test to make sure everything works

= Release =
 1. Tag the repository.
{{{
TAG=v2.0.2 # for example
mtn tag $REVISION $TAG
}}}
 2. Check out the tagged code
{{{
mtn -d $DATABASE co -r t:$TAG pidgin-$VERSION
}}}
 3. Run {{{./autogen.sh}}}
 4. Run {{{make dist}}}
 5. Run {{{gzip -d -c pidgin-$VERSION.tar.gz | bzip2 > pidgin-$VERSION.tar.bz2}}}
 6. Sign the two tarballs
{{{
gpg -ab pidgin-$VERSION.tar.gz
gpg -ab pidgin-$VERSION.tar.bz2
gpg --verify pidgin-$VERSION.tar.gz.asc pidgin-$VERSION.tar.gz
gpg --verify pidgin-$VERSION.tar.bz2.asc pidgin-$VERSION.tar.bz2
}}}
 7. Build the SRPM
{{{
rpmbuild -ts --sign --with avahi --with dbus --with meanwhile \
    --with sasl --with silc --with tcl pidgin-$VERSION.tar.bz2
}}}
 8. Upload the two tarballs, the two signatures, and the src.rpm
 9. Make RPMs for lots of distributions and upload them
  a. Install the src.rpm
{{{
rpm -Uvh pidgin-$VERSION-0.src.rpm
}}}
  b. Edit $rpmbuild/SPECS/pidgin.spec and append the distro name to the end of the Release line.  For example, ".fc5"
  c. Build
{{{
rpmbuild -bb --sign --with avahi --with dbus --with meanwhile \
    --with sasl --with silc --with tcl $rpmbuild/SPECS/pidgin.spec
}}}
 10. Wait a few hours and let people test.
 11. Update the Pidgin website
  a. Change inc/version.inc.php (only for full releases, not for betas)
  b. Update the ChangeLog
 12. Announce via sourceforge

= Post Release =
 1. Increment version number in configure.ac & set purple_version_suffix and gnt_version_suffix to [dev]
 2. Update freshmeat.net
 3. Update #pidgin topic and on-join message
 4. Update Trac Version field to include new version
 5. Add a new Trac milestone for the new version
 6. Bump the auto-close script to target auto-closed bugs to the new milestone
 7. Update "The Road to" on WikiStart to list tickets for the new version