Release Process

Release Manager

 * Each release has a designated Release Manager, one of the Technical Leaders. The Release Manager
 * Manages the whole process, announcing dates, managing freezes, etc.
 * Has final say on when a release candidate is good enough for actual release.
 * Release Manager (and occasionally other Technical Leaders) are the only people allowed to change this page during the release cycle. Others should only add suggestions between release cycles, and not change the basic process definition.

Policies

 * "Freeze" for code/translations/manual means that the only allowed changes are to fix release-blocking issues discovered in testing release candidates. That includes not modifying/upgrading the underlying software infrastructure for the manual because it can affect manual retrieval.
 * We have a firm policy of never providing for download two files with the same name and different contents, i.e., a "hotfix" to an installer will have a new name.
 * Release Manager decides what to do if we post a bad download, and what to do regarding testing and posting hotfixes. (Sometimes, they may not require the same testing cycle as true releases get, since that delay reduces their value.)

Process

 * 1) Tech Leaders designate a Release Manager. Release Manager announces he/she is RM.
 * 2) RM proposes freeze date, checks that we are ready to go, and confirms that any long-lead-time tasks will be started early. Ready to go means: No known release blockers and/or all P1's (and possibly some P2's, at RM's discretion) have commitments to fix in time. No blocking issues around documentation or translation, or have commitments to fix in time. At each step, doer reports completion to RM. Before proceeding, need:
 * 3) commitments to build Release Candidates ("RCs") for all platforms:
 * 4) Win exe (installer) and zip
 * 5) Mac dmg and zip
 * 6) Linux 'minimal source tarball'
 * 7) commitment to do audacity.pot
 * 8) commitment to do Release Notes
 * 9) commitment to update website, including checking using http://validator.w3.org/checklink or similar, and reporting errors/warnings
 * 10) commitment to Wiki changes
 * 11) commitment to make the Manual ready for builders (see Create Local Manual)
 * 12) RM decides and specifies string/code freeze date and time. As far ahead of this as possible, update and post audacity.pot, as specified below.
 * 13) Immediately before the code/string freeze:
 * 14) In Audacity.h, set IS_ALPHA to 0.
 * 15) Prepare and commit README.txt, creating new "Changes in version" text and moving the old text to the top of Section 6 "Previous Changes". The list of Known Issues at time of release is now prepared in the Wiki Release Notes for that version, so just link to that page in README.txt.
 * 16) After string freeze, the audacity.pot file needs to be updated with the frozen strings, and posted to audacity.sourceforge.net. Batch update the .po files with the updated messages from the .pot file. See Translating Audacity.
 * 17) Manual freeze happens ASAP after string/code freeze, usually about 24 hours later. Only the Windows installer and Mac DMG RCs (next step) need to wait for this; all other RCs can proceed and be posted in parallel.
 * 18) Bump the version number on the front page of the Manual.
 * 19) Once manual is frozen, follow Create Local Manual.  Eventually we want to have a cross-platform script that will do it all, including the zipping.
 * 20) Release Candidates: Details in Release Candidates section, below. Code is frozen and testing takes place for 48 hours, iteratively, until we achieve an RC that we agree is final. The 48-hour countdown starts with RM announcement that all RCs are posted. RM announces each subsequent RC, as needed.
 * 21) * If any release-blocking bugs are discovered, they are fixed and the next RC builds will be done after the end of that 48 hours (including dependency on new version of the manual). For each new RC series, deprecate the previous set.
 * 22) *Iterate on this process until the final RC is tested for 48 hours with no release-blocking bugs discovered. Note that the step below, 'Release Announcements', can be done in parallel from this point.
 * 23) This and the next two steps should be expected to take about 24-36 hours.
 * 24) Post final builds/installers (including manual.zip) to audacity.googlecode.com > Downloads.
 * 25) Delete the RCs including the manual (don't forget deprecated ones) to avoid user confusion and to conserve space.
 * 26) Set all the previous version files to "Deprecated".
 * 27) Set all the new version files to "Featured".
 * 28) Post final builds/installers/manual zip to SourceForge. It is important to keep posting to SourceForge, because Google Code is blocked by some ISP's/countries, plus some users still look for Audacity releases on SourceForge, for historical reasons.
 * 29) Set the default download for each platform. For each, click on the 'i' button for the file, then check the appropriate checkbox(es) in the "Default Download For:" section. This means that on the SourceForge Audacity project page, the big green download button offers the Windows installer, on Mac the DMG, and on Linux, BSD, and Solaris the minsrc tarball.
 * 30) Upload the manual from which the final manual.zip was created to manual.audacityteam.org to provide an online version of the released manual. The internal structure of the manual is complex, but currently the best option for future releases is to open the dumped manual at audacity-src/help/manual, copy the four folders (images, m, man, manual) and three files (quick_help.html, index.html, favicon.ico) to the "htdocs/o" directory on the server.
 * 31) Do the Release Announcements per that section, below.
 * 32) Tag the release, per that section, below.
 * 33) Lift code/translations/manual freezes.
 * 34) Release is complete.
 * 35) In src/Audacity.h, set IS_ALPHA to 1.
 * 36) Increment the version number in audacity.dox, src/Audacity.h, and win/compile.txt.

Release Candidates
Our current policy is to ship no Modules (e.g., mod-nyq-bench), so for Windows and Mac, RC builders should make sure no Module is included in the RC.


 * 1) Build release candidate:
 * 2) Windows Installer (includes manual)
 * 3) Windows Zip (no manual)
 * 4) Mac DMG (includes manual)
 * 5) Mac Zip (no manual)
 * 6) Linux  Minimal source tarball
 * 7) Upload to Google Code so that people can download them for testing. Post the links to these on audacity-devel, audacity-quality, audacity-translation, and the Forum. Within the code freeze period, monitor the Forum, and report bugs to audacity-devel as well as in the Forum thread. Raise a Px Bugzilla issue if the problem is not to be fixed for release.
 * 8) Ensure that installers are tested as well as the zips.
 * 9) Test installers installing over an existing install.
 * 10) Test on non-developer machines (in case it relies on features found only on developer machines).

Release Announcements

 * 1) website changes
 * 2) new release announcement (htdocs/include/news.inc.php), summarizing most important points from the committed README.txt
 * 3) htdocs/latest/versions.inc.php
 * 4) wiki release notes
 * 5) Create new wiki release notes page, e.g., http://wiki.audacityteam.org/wiki/Release_Notes_2.0.4.
 * 6) Copy the new "Changes in version" text from the README.txt into the new wiki release notes.
 * 7) Go to http://bugzilla.audacityteam.org/buglist.cgi?cmdtype=dorem&remaction=run&namedcmd=Release%20Notes&sharer_id=5 to see the P1/2/3 bugs (including WONTFIX with those ratings).
 * 8) Export the CSV.
 * 9) Feed it through http://www.catalase.com/bugzilla2wiki.htm to convert (some) to Wiki formatting.
 * 10) Tidy up the bugs list so there are no duplicate categories/missing bullet points etc.
 * 11) *** And then what? Something is missing here. Does it go into release notes, "Known Issues at Release"? If so, it should be in the release notes section (previous bullet). ***
 * 12) Clear the text on http://wiki.audacityteam.org/wiki/Known_Issues.
 * 13) When the above are completed, commit the website changes to SVN and push to the website so that it goes into the audacity_website.pot file and is then available to translators.
 * 14) Make the Forum announcement.
 * 15) Announce the release to audacity-* mailing lists, SourceForge, and the Dreamhost list.

Tag the Release
Since 2.0.0, we tag both audacity-src and website.

This is the template SVN command to use, per Richard's advice; it performs a minimal copy server-side instead of copying the whole thing from your working copy and thus runs very quickly:

svn copy -m "Tag release of Audacity 1.3.x" https://audacity.googlecode.com/svn/audacity-src/trunk/ https://audacity.googlecode.com/svn/audacity-src/tags/Audacity_1_3_x

For TortoiseSVN, in the Branch/Tag dialog, use the HEAD radio button option to get this server-side copy.