Difference between revisions of "Development Team/Release"
m (DevelopmentTeam/Release moved to Development Team/Release: deCamel casing) |
|
(No difference)
|
Revision as of 15:45, 17 March 2009
Goals and modules proposal
At the beginning of each release cycle, maintainers will work on a set of goals, document them and assign owners.
New modules proposal
The time period available to make a proposal is indicated on the schedule. To propose a new activity send mail to the sugar-devel@lists.sugarlabs.org, providing the following informations:
- Short description of the features.
- Screenshots or screencasts.
- Are you willing to follow the Schedule?
- Are you willing to provide regular source releases? (releases need to be done as well when there are only changes in translations)
- System components the activity depends on.
- Maintainer and members of the developer team, with links to a User page on the wiki or their homepage on the web.
- Status of internationalization.
- Code repository.
- Bug tracking system.
- Homepage.
Criteria for approval will be:
- Supports internationalisation and localisation.
- Does not duplicate the functionalities of other activities.
- Provide functionality that the community judges as important for reaching the goals of the project.
- Maintainer responsiveness and willingness to provide regular releases.
Module release
For both intermediates and final releases module maintainers are responsible to announce the module release and make the sources available. Note that the release number of the module does not need to match the Sucrose release number. More in detail:
Glucose
- Build a source tarball
make distcheck
- In git add a tag to reference the release. The tag name should be in the vXXX form (for example v0.81.9).
- test it carefully and make it available in a stable location. You need a developer account with Sugar Labs to be able to upload there. The preferred location for glucose modules is:
shell.sugarlabs.org:/upload/sources/sucrose/glucose/(module_name)/
which translates to:
http://download.sugarlabs.org/sources/sucrose/glucose/(module_name)/
- Send an announce mail to sugar-devel@lists.sugarlabs.org, with [RELEASE] in the subject. The form will be decided by each maintainer but it should at least include a reference to the source code tarball and an high level, user oriented list of changes.
Fructose
- Build a source tarball
If your activity uses bundlebuilder you can use the dist_source command to generate a source tarball. Note, use a clean checkout of the repository - due to how bundlebuilder works at the moment files you would place in the directory e.g. x.patch would be included in the tarball as well.
python setup.py dist_source
The tarball will be generated inside the dist directory.
- In git add a tag to reference the release. The tag name should be in the vXXX form (for example v20).
- Test it carefully and make it available in a stable location. You need a developer account with Sugar Labs to be able to upload there.
The preferred location for fructose components is:
shell.sugarlabs.org:/upload/sources/sucrose/fructose/(module_name)/
which translates to:
http://download.sugarlabs.org/sources/sucrose/fructose/(module_name)/
- Send an announce mail to sugar-devel@lists.sugarlabs.org, with [RELEASE] in the subject. The form will be decided by each maintainer but it should at least include a reference to the source code tarball and an high level, user oriented list of changes.
Using the release script
For both, fructose and glucose components you can use the release script in sugar-tools to do the above tasks in one go.
You can check out the available commands (Note, the script does try to release the software of the directory you are currently in):
./release --help
Sugar release
Each release cycle will include development, beta, release candidate and final releases. The release team is responsible to coordinate with module maintainers, pull the updated modules together, perform basic QA and announce it. More in detail:
- Ensure that all the module releases are available by the scheduled date.
- Construct a sugar-jhbuild moduleset out of them. Run automatic and manual QA on it.
- If issues arise coordinate with the relevant module maintainers to solve them.
- Announce the release on sugar-devel@lists.sugarlabs.org, including a reference to the sugar-jhbuild moduleset, references to each source module and a global list of changes.
Feature freeze
The feature freeze affects all the modules included in the release and comprise also strings and ABI for public libraries. Exceptions might be considered by the release team but they will be extremely rare. To request an exception send mail to sugar-devel@lists.sugarlabs.org, referencing the patches you would like to land. It will have to be granted by two members of the release team, on the base of community feedback. For string changes please also copy localization@lists.laptop.org. As soon as the change is committed in git, notify the localization list about it.
Hard code freeze
When the hard code freeze is in effect, each and every code change should be approved by the release team. Only critical fixes will be considered. To request approval send mail to sugar-devel@lists.sugarlabs.org, including the patch and a detailed description of the changes, the benefits and the risks. Approval will have to be granted by two members of the team.
Branching
After the final release of a module, a branch should be created to host further stable development. Please use a name in the form: sucrose-XXX (for example sucrose-0.84). Each module maintainer is responsible to inform the sugar-devel@lists.sugarlabs.org and localization@lists.laptop.org lists about the branch.
A new branch is created on the Pootle server, e.g., Fructose-0.82 and Fructose-0.84. The Localization team (the coordinator of a translation team) may push translations to any or all of the corresponding branches of your project. Changes to your master branch are not necessarily intended for the release branches as well.
You can create a remote branch like this (in your repository):
git branch sucrose-0.84 git push origin sucrose-0.84
And to work on it (in your repository):
git checkout -b sucrose-0.84 origin/sucrose-0.84 git pull
Roadmap
The DevelopmentTeam/Release/Roadmap is updated at the beginning of each release cycle by the release team. It includes:
- Detailed schedule of release dates and freeze points.
- List of modules and external dependencies.
- Reference to all the tickets considered for the release.
- References to the new feature proposals.
Bug triaging
Module maintainers should ensure that their plans for the release are clearly reflected in the bug tracking system. They are responsible to set milestones and priorities accordingly, in cooperation with the release and the QA teams.
Each commit or set of commit should have a ticket associated. The ticket number should be always mentioned in the git log and is used to automatically build the list of module changes for the releases.
Automation
TBD Many of the steps described in this document can be easily automated for maintainers which are using the Sugar Labs infrastructure and for the release team. Though as a first pass we want to get the workflow right, even if it involves more manual step than strictly required.