canmove, Confirmed users
2,056
edits
(clarify what it means to regress tests and change interfaces) |
(incorporate update to version on dev after merge to stab; spin only test builds; and be compatible with current and upcoming Firefox releases. also note proposed three week offset from Firefox release) |
||
Line 1: | Line 1: | ||
This document describes the process (a.k.a. "flow") by which the Add-on SDK is developed. For information about the process by which versions of the SDK are released, see [[Labs/Jetpack/Release|Release Process]]. | |||
= Release Schedule = | |||
We ship a stable SDK release on a regular schedule every six weeks, at least as often as Firefox, to ensure we can accommodate incompatible changes to Firefox and remain compatible with it. Each release undergoes six weeks of development and six of stabilization, so a complete development cycle lasts twelve weeks, and cycles overlap by six weeks (while one release is stabilized, the next one is developed). | |||
We release each SDK version two ([https://groups.google.com/forum/#!topic/mozilla-labs-jetpack/e0RkE4zW9ew proposed: three]) weeks before each new version of Firefox is released. This allows enough time for compatibility fixes to land on the SDK's stabilization branch after Firefox stops accepting incompatible changes (at the time it merges from aurora to beta?) while still giving AMO and addon developers enough time to update addons to use the new version of the SDK. | |||
Each SDK release is compatible with the current and upcoming versions of Firefox. For example, SDK 1.2, which ships after Firefox 7 but before Firefox 8, is compatible with those two versions of Firefox. | |||
SDK 1.0's schedule did not follow this process. SDK 1.1's schedule was slightly irregular. | |||
[[Image:Addon-sdk-schedule.png]] | |||
= Development Branches = | |||
We | We maintain three branches: a development branch (dev), a stabilization branch (stab), and a release branch (rel). Each release spends six weeks on each branch, starting with six weeks of feature development on dev, after which it is merged to stab; continuing with six weeks of feature stabilization on stab, after which it is merged to rel; and concluding with six weeks of statis on rel. | ||
[[Image:Addon-sdk-branches.png]] | |||
Code changes are subject to conventional Mozilla quality controls (reviews, unit tests, etc.). We may introduce additional quality controls in the future (f.e. a requirement that new features and enhancements initially be marked experimental and be isolated from non-experimental use of the product). We achieve quality goals for stab and rel by fixing bugs and cutting features. | |||
Rel maintains compatibility with Firefox's release and beta branches. Stab maintains compatibility with Firefox's beta and aurora branches. Dev maintains compatibility with aurora and central branches. | |||
= Distribution Channels = | |||
We distribute code to three distribution channels: an unstable development channel, a semi-stable test channel, and a stable release channel. | |||
The | The development channel is the code repository itself; we encourage interested parties to clone it or download source tarballs from it. The test channel is the project discussion group; we spin beta, release candidate (candidate), and final release (final) builds once per week and announce them in the group. The release channel is the Add-ons Blog (and other communications, as appropriate); we announce final release builds in the blog. | ||
We don't provide automated updates to newer releases, but we may do so in the future. | |||
= Version Identifiers = | |||
Releases have version identifiers of the format (major).(minor)[.fix], and we communicate them to users. We typically increment the minor number for each release. We add a "fix" number and ship a release with it only under exceptional circumstances (f.e. an urgent security issue). | |||
We update the version on dev at the beginning of each cycle to be (major).(minor)a0, where (major).(minor) represents the identifier with which we intend to ship the code under development, f.e. 1.3a0 when dev represents the code we intend to ship as SDK 1.3, which indicates: | |||
* via (major).(minor), the version under development; | |||
* via "a", that the code is at an alpha level of quality; | |||
* via "0", that the code is unreleased and precedes any test build we may spin. | |||
We update the version number on stab before each test build we spin from that branch. For a beta, we set it to (final)b(n), where (final) represents the release identifier of the final release build and (n) represents the ordinal position of the build in the set of betas. For both release candidates and final release builds, we set the version to (final). | |||
= When What Can Land = | = When What Can Land = | ||
Line 47: | Line 47: | ||
{{draft|}} | {{draft|}} | ||
In general, new features and enhancements to existing features can land only on | In general, new features and enhancements to existing features can land only on dev, while bug fixes can land on dev, stab, or both. | ||
New docs and docs enhancements that do not involve code changes, however, can land on | New docs and docs enhancements that do not involve code changes, however, can land on stab during the first two weeks of each stabilization period, so tech writers have time to document late-breaking changes, and because such changes are less likely to cause regressions. | ||
= Landing Requirements = | = Landing Requirements = | ||
Line 63: | Line 63: | ||
* obvious and trivial test bustage fixes | * obvious and trivial test bustage fixes | ||
* obvious and trivial typo (spelling, grammar) fixes in documentation | * obvious and trivial typo (spelling, grammar) fixes in documentation | ||
= Rationale = | = Rationale = |