= Standard schedule 1. Day 0: Feature freeze 1. Day 3: String freeze 1. Day 6: Translation freeze 1. Day 6: Commit freeze 1. Day 7: Packaging 1. Day 9: Release = Phases || Name || Tasks to complete || || Development || [ReleaseProcessDraft#Startreleaseprocess Start release process], [ReleaseProcessDraft#Announcestringfreeze Announce string freeze] || || Feature freeze || [ReleaseProcessDraft#Organizestaffmatchtesting Organize staff match (testing)] || || String freeze || || || Translation freeze || [ReleaseProcessDraft#Confirmtranslationfreeze Confirm translation freeze], [ReleaseProcessDraft#Translationcheck Translation check] || || Packaging || [ReleaseProcessDraft#Prepareforpackaging Prepare for packaging], [ReleaseProcessDraft#Packaging:Windows Packaging: Windows], [ReleaseProcessDraft#Packaging:MacOSX Packaging: Mac OS X], [ReleaseProcessDraft#Packagetesting:Linux Package testing: Linux],[ReleaseProcessDraft#Packagetesting:Windows Package testing: Windows],[ReleaseProcessDraft#Packagetesting:MacOSX Package testing: Mac OS X], [ReleaseProcessDraft#UploadtoSourceforge Upload to Sourceforge] || || Release || [ReleaseProcessDraft#Writereleaseannouncement Write release announcement], [ReleaseProcessDraft#Createreleasevideo Create release video], [ReleaseProcessDraft#Release:Downloadredirects Download redirects], [ReleaseProcessDraft#Release:Publishannouncement Publish announcement] || = Release progress table Put your name into the "Accepted by" column to take over a task and agree to completed it in time (according to the "Deadline" column). Update the status column regularly enough to keep team member informed. Especially note if you are waiting for input or are otherwise prevented from working on the task. Next release: Alpha 17 || Task shortname || Accepted by || Deadline || Status || || [ReleaseProcessDraft#Startreleaseprocess Start release process] || || || || = Task descriptions = == Start release process '''Description:''' [[BR]] The team decides that there are enough new features and that it's time to release a new alpha version. Usually in a team meeting, we decide when the regular schedule starts and if there are any differences to the predefined schedule. [[BR]]'''Can be completed in phase:''' Development [[BR]]'''Candidates:''' Whole team (usually at the meeting) == Announce string freeze '''Description:''' [[BR]] Translators should be informed about the planned String freeze date and the Translation freeze date. The idea is to give them some time to polish the final translations for the release. During development, they probably don't always update translation within a few days after something has changed. Also upload updated .pot files and make sure you update them if original strings change or get added in the next days. [[BR]]'''Can be completed in phase:''' Development [[BR]]'''Candidates:''' Gallaecio, Leper, Sanderd17, Yves == Organize staff match (testing) '''Description:''' [[BR]] If possible a staff match should be organized before the release. Often important bugs get discovered in such staff matches. Organizing the match means finding a good date and time and informing the other team members (or community members). [[BR]]'''Can be completed in phase:''' Development [[BR]]'''Candidates:''' Whole team == Confirm translation freeze '''Description:''' [[BR]] You make another announcement on the translation platform at the specified and announced Translation freeze date (assuming it hasn't changed in the meantime). After that, you regenerate the translation templates via [source:ps/trunk/source/tools/i18n/updateTemplates.py updateTemplates.py] and the translations (for backup purposes) via [source:ps/trunk/source/tools/i18n/pullTranslations.py pullTranslations.py]. [[BR]]'''Can be completed in phase:''' Translation freeze [[BR]]'''Candidates:''' Gallaecio, Leper, Sanderd17, Yves == Translation check '''Description:''' [[BR]] Check the translations for "vandalism". It's really just checking if there are any strings that were added in bad intent and not about trying to improve translation quality. There's a script to check the translation files for URLs (TODO: where?), but this task also involves manual checking. Obviously we can't carefully read through all strings in all translations. [[BR]]'''Can be completed in phase:''' Translation freeze [[BR]]'''Candidates:''' Whole team == Multiplayer lobby adjustments '''Description''' [[BR]] * Change the MUC room for the lobby on the server and maybe reset rankings. * Change the bot's welcome message to notify users that a new version is available. [[BR]]'''Can be completed in phase:''' ??? [[BR]]'''Candidates:''' Leper, Josh, Scythetwirler == Prepare for packaging '''Description''' [[BR]] * Ensure Alpha name and number have been updated in [source:ps/trunk/binaries/data/mods/public/gui/session//top_panel/label.xml label.xml], [source:ps/trunk/binaries/data/mods/public/gui/pregame/mainmenu.xml mainmenu.xml], and [source:ps/trunk/source/lobby/XmppClient.cpp#L107 XmppClient.cpp]. * Edit the [source:/ps/trunk/source/tools/dist/build.sh build.sh] script to include all languages that need to be in the release (Include only >90% languages supported by our fonts and font system - see progress [https://www.transifex.com/projects/p/0ad/ on Transifex]) * Change the MUC room for the lobby in [source:ps/trunk/binaries/data/config/default.cfg default.cfg] * Check that SVN compiles and runs on Linux * Check that SVN compiles and runs on Linux (Gentoo) with `--without-pch` * Check that SVN compiles and runs on Windows * Check that SVN compiles and runs on OS X * Run Windows autobuilder (or build manually with VS 2008 if autobuild is down - update [source:/ps/trunk/build/svn_revision svn_revision.txt] first!) [[BR]]'''Can be completed in phase:''' ??? [[BR]]'''Candidates:''' Whole team == Setup packaging '''Description''' [[BR]] These are common tasks that need to be done for all packaging on all systems. * Update public trunk checkout * Ensure it is clean (`svn st --no-ignore`) [[BR]]'''Can be completed in phase:''' Packaging [[BR]]'''Candidates:''' People doing packaging == Packaging: Windows '''Description''' [[BR]] * Complete the steps in [ReleaseProcessDraft#Setuppackaging Setup packaging] * Run [source:/ps/trunk/source/tools/dist/build.sh source/tools/dist/build.sh] * Upload releases to http://releases.wildfiregames.com/ * Verify sha1sums on server [[BR]]'''Can be completed in phase:''' Packaging [[BR]]'''Candidates:''' Whole team == Packaging: Mac OS X '''Description''' [[BR]] * Complete the steps in [ReleaseProcessDraft#Setuppackaging Setup packaging] * Build OS X app bundle: * Requires OS X and Xcode * Read documentation in [source:ps/trunk/build/workspaces/build-osx-bundle.sh build-osx-bundle.sh], update options if necessary (defaults work with Xcode 4.2+ and Lion) * Run `build-osx-bundle.sh`, by default it creates a 64-bit 10.6+ compatible bundle, `build/workspaces/0ad.app` * Optionally build a 32-bit 10.5+ bundle, following [source:'ps/trunk/build/workspaces/Cross-compiling a 32-bit Leopard bundle.txt' Cross-compiling a 32-bit Leopard bundle.txt] * Package app into DMG (as outlined [http://mac101.net/content/how-to/how-to-create-dmg-art-for-fancy-application-installations/ here] and [http://el-tramo.be/guides/fancy-dmg/ here]) * Use Disk Utility to create an uncompressed DMG large enough to hold `0ad.app` * Set background image, `build/resources/dmgbackground.png` * Copy `0ad.app` and Applications shortcut, arrange icons, set folder view options as desired * Create a bzip2-compressed DMG with [http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man1/hdiutil.1.html hdiutil]: `hdiutil convert 0ad.dmg -format UDBZ -o 0ad-[version]-alpha-osx64` * Upload releases to http://releases.wildfiregames.com/ * Verify sha1sums on server [[BR]]'''Can be completed in phase:''' Packaging [[BR]]'''Candidates:''' Historicbruno, Wraitii == Package testing: Linux '''Description''' [[BR]] * Delete `~/.cache/0ad` * Extract release * Build with `config=debug`, run `test_dbg`, run game, run editor * Build with `config=release`, run `test`, run game, run editor [[BR]]'''Can be completed in phase:''' Packaging [[BR]]'''Candidates:''' Whole team == Package testing: Mac OS X '''Description''' [[BR]] * Delete `~/Library/Caches/0ad/` * Mount release DMG * Run 0ad and test that it works on e.g. Snow Leopard and Lion * Test Atlas (main menu > Tools & Options > Scenario Editor) * Delete `~/Library/Caches/0ad/` * Optionally test 32-bit bundle if available [[BR]]'''Can be completed in phase:''' Packaging [[BR]]'''Candidates:''' Whole team == Package testing: Windows '''Description''' [[BR]] * Delete `%localappdata%\0ad\cache` * Extract release * Run `pyrogenesis.exe`, check everything seems to work * Run `Atlas.bat`, check everything seems to work * Delete `%localappdata%\0ad\cache` * Build Debug version, check everything seems to work * Run `test` project [[BR]]'''Can be completed in phase:''' Packaging [[BR]]'''Candidates:''' Whole team == Upload to Sourceforge After all packages are created and tested, they can be uploaded to sourceforge. {{{ rsync -v --progress -e ssh 0ad-${SVNREV}-*.{exe,gz,xz} philiptaylor,zero-ad@frs.sourceforge.net:/home/frs/project/z/ze/zero-ad/releases/ }}} [[BR]]'''Can be completed in phase:''' Packaging [[BR]]'''Candidates:''' Philip == Write release announcement '''Description''' [[BR]] * Write a release announcement that will be published on the website and other places like Moddb. * Describe new features, content and major bugfixes. If necessary ask people to provide descriptions. * Create one or more unique screenshots that fit well for this Alpha release (or find someone to create these). * Write a short description of the Alpha name and the reasons why we have chosen this name (historical term around the timeframe of 0 A.D.). [[BR]]'''Can be completed in phase:''' Feature freeze [[BR]]'''Candidates:''' Jeru == Create release video '''Description''' [[BR]] An Alpha release video showcases the new features, content and major bugfixes of this version. It focuses more on the features that can be shown well in a video. Remember to upload the video on the play0ad youtube channel. [[BR]]'''Can be completed in phase:''' Feature freeze [[BR]]'''Candidates:''' Brynn == Release: Download redirects '''Description''' [[BR]] * Update release redirects to point to SF * Update release pages (links, file sizes, checksums?): * LatestReleaseWindows * LatestReleaseMac * LatestReleaseLinux [[BR]]'''Can be completed in phase:''' Release [[BR]]'''Candidates:''' Philip, ...? == Release: Publish announcement '''Description''' [[BR]] * Official website http://play0ad.com * Forum * Update Alpha version on official website (Settings > General > Tagline) * Update download pages on official website (http://play0ad.com/download/mac, http://play0ad.com/download/win, http://play0ad.com/download/source) * Official social media platforms ([http://www.facebook.com/play0ad Facebook], [https://twitter.com/play0ad Twitter], [https://plus.google.com/105243244628275530704/posts Google+].) * ModDB/IndieDB * Freecode * Freegamer * E-mail regular bloggers/reporters [[BR]]'''Can be completed in phase:''' Release [[BR]]'''Candidates:''' Feneur, Jeru, Leper == Update release progress on Trac Description:[[BR]] Remove all content from the Release progress table and replace "Next release" with the right version number. [[BR]]Can be completed in phase: Development [[BR]]Candidates: Everyone