Unstable releases vs stable releases
Any packages released from the trunk are considered 'unstable'. They are not meant to be broken, but fewer steps are taken to produce it, skipping the ones that often catch bugs, which also makes them easier and faster to make, so they are better suited to make it easier to test new features quickly. The process is simply to make a package for general distribution from source of the trunk.
To make a stable package, first a separate branch must be created in the source tree, by copying the current trunk to a branch, as a 'release candidate'(RC), named with the version number plus the RC number, for example, 0.3rc1. Afterwards, only bug fixes are committed to that branch (unless we all agree to introduce a feature) on this release candidate; neither major changes in other areas of the game, thought documentation and artwork updates are fine. If we decide we need more testing after doing all the modifications to the release candidate, the same RC should be renamed to reflect the new number scheme (e.g. 0.3rc1 would be renamed to 0.3rc2). This allows easy access to the history of all files, and keeps the SVN structure clean (it might be worth adding a tag for previous RCs).
The final release is copied from the RC branch to the tag directory (using the release number as name). The branch will be removed to reflect the release number (e.g. 0.3rc2 -> 0.3). For now the branches should be kept in place, since it helps finding problems which might get reported for the release (if they can't be reproduced in the trunk anymore). We might decide on a delete-branch policy later, if this directory gets too full. Also, the license under which STK is released requires us to provide the source code for at least 3 years for any binaries we provide.
Committing changes during the preparation of a stable release
- Any bug fixes to the RC branch should be independently committed to the trunk as well, just as they should be committed to the RC branch if it's meant for the trunk, but it applies to the RC. While this adds a bit overhead of committing a change (since it has to be committed twice), it saves the time and complexity of merging all bug fixes into the trunk when the release is done, and keeps the trunk free for further development.
- Any new patches not related to the RC or release should be committed to the trunk only.
Checklist for stable releases
- Give a deadline to translators
- Run data/po/update_pot and make sure transifex has the latest pot file for translations.
- This should involve two steps: first contact translators and make them aware that a string freeze will happen in the near future, and ask them for feedback. They might find issues (e.g. incorrect strings, untranslatable strings, typos) that went undetected before. Once some feedback was received, announce the official string freeze.
- Creating a quick (~1min30) video showcasing new features/tracks/etc
- After creating a source package, try to build from this package. Sometimes, files are missing.
- Document the assets svn version in doc/assets_version (so that we can keep track of which assets version was used for which stk release, we don't have branches directories for assets due to their size).
- Create a 'tag' for the assets under https://svn.code.sf.net/p/supertuxkart/code/stk-assets-release/
- Run optimize_data.sh.
- Update ChangeLog file.
- Update data/CREDITS.
- Don't forget the donations section in CREDITS.
- Make sure data/CREDITS is still in UTF (not ascii).
- On Unix systems, make sure all files have appropriate read permissions.
- Update translations from Transifex (after the publicized deadline has been reached).
- Install the transifex client ( http://docs.transifex.com/developer/client/setup ). On windows place it in the data/po folder. Run ./data/po/pull_from_transifex.sh
- Run data/po/update_po_authors.py on all(!) .po files to update the credit sections for translators.
- Make sure to update the version number:
- src/windows_installer/supertuxkart.nsi (two locations)
- Create a file data/supertuxkart.VERSION (same as 'supertuxkart.' + STK_VERSION from constant.cpp) - and delete any previous file. This file is used by stk to make sure it is reading the correct assets input data.
- Check that the addon server has all achievements defined (data/achievements.xml should be in sync with table v2_achievements).
For binary packages (esp. linux):
- Don't include INSTALL, it confuses people
- Do not include the .ilk file, it's only used for linking and otherwise useless.
For source package:
- Copy stk-assets into stk-code/data
- Check that make install works as expected
Upload packages, then :
- Update the Downloads Page
- Update the default file settings at sourceforge
Naming scheme for packages
All files released on the STK web page should use the following naming scheme:
- Release candidates: the version number of the next stable release + "-rc" + release candidate number. Examples: 0.3-rc1 or 0.3.1-rc2
- Stable release examples: the version number. Examples: 0.3, 0.4
- Source packages: src
- Windows binary packages: win
- Mac OS X binary packages: macosx
- Linux x86 packages: linux + required processor type. Examples: linuxi586, linuxi686, linuxppc
- Depends on the file type. Examples: tar.gz, tar.bz2, dmg, zip, ...
Examples of full package file names: supertuxkart-0.3-linuxi586.tar.bz2, supertuxkart-git2110-macosx.dmg, supertuxkart-0.4-rc1-win.zip
Where to advertise a new release
This page collects web pages that should be informed about a new SuperTuxKart release. If you add a note to a board, blog, web page, please add the URL here, and add your name (hoping that in upcoming releases you can contact the same pages again).
Mark what's done with File:Done.png.
- STK home page
- STK blog
- Upload the trailer on our youtube channel
- Sourceforge page (news entry and to slashdot firehose)
- addons.supertuxkart.net (in-game news)
- http://freegamer.blogspot.com (was picked up from freegamedev forum)
- http://forum.freegamedev.net/ (hiker)
- Update the game to https://supertuxkart.itch.io/supertuxkart
- Update the game to http://gamejolt.com/