4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
1 |
********************* |
2 |
Bazaar Release Cycles |
|
3 |
********************* |
|
4 |
||
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
5 |
:status: Current policy, as of 2010-10. |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
6 |
:blueprint: <https://blueprints.launchpad.net/bzr/+spec/6m-cycle> |
7 |
||
8 |
||
9 |
Our users want easy access to bug fixes without other changes to the |
|
10 |
core product. They also want a Just Works experience across the full |
|
11 |
Bazaar ecosystem. To deliver the first and enable the second, we're |
|
12 |
adopting some standard process patterns: a 6 monthly release cycle and a |
|
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
13 |
stable series. These changes will also have other benefits, including |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
14 |
better availability of bug fixes in OS distributions, more freedom to |
15 |
remove old code, and less work for in packaging. |
|
4439.1.4
by Martin Pool
Start cleaning up docs on bugs and release process |
16 |
|
17 |
See also: |
|
18 |
||
19 |
* `Bazaar Developer Document Catalog <index.html>`_ |
|
20 |
||
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
21 |
* `Releasing Bazaar <releasing.html>`_ -- the process for actually making |
4439.1.4
by Martin Pool
Start cleaning up docs on bugs and release process |
22 |
a release or release candidate. |
23 |
||
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
24 |
|
25 |
The Process |
|
26 |
************ |
|
27 |
||
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
28 |
Bazaar will make a major release every six months, which will be supported at |
29 |
least until the time of the next major release and generally 18 months after |
|
30 |
the first final release in a series. During this support period, we'll make |
|
31 |
incremental releases which fix bugs, but which do not change network or disk |
|
32 |
formats or command syntax, and which do not require updates to plugins. |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
33 |
|
34 |
We will also run a development series, which will become the next major |
|
35 |
release. We'll make a beta release from this every four weeks. The |
|
36 |
beta releases will be as stable as our current monthly releases and |
|
37 |
completely suitable for everyday use by users who can tolerate changes |
|
38 |
from month to month. |
|
39 |
||
40 |
Having the stable series isn't a reason to cut back on QA or to make the |
|
41 |
trunk or development releases unstable, which would only make our job |
|
42 |
harder. We keep our trunk in an always-releasable state, and that should |
|
43 |
continue: any beta release could potentially be supported in the long |
|
44 |
term, but we identify particular releases that actually will be supported. |
|
45 |
||
46 |
The trunk will never be frozen: changes that pass review, other quality |
|
47 |
checks and that are agreed amongst the developers can always be landed |
|
48 |
into trunk. The only restrictions will be on branches specifically |
|
49 |
targeted at a release. |
|
50 |
||
51 |
||
52 |
Schedule |
|
53 |
-------- |
|
54 |
||
55 |
:: |
|
56 |
||
4634.50.3
by John Arbash Meinel
Update the cycle.txt documentation. |
57 |
2.0.0 --- 2.0.1 -- 2.0.2 -- ... |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
58 |
\ |
4634.50.3
by John Arbash Meinel
Update the cycle.txt documentation. |
59 |
+--2.1.0beta1 -- 2.1.0beta2 -- ... -- 2.1.0rc1 -- 2.1.0 -- 2.1.1 -- ... |
60 |
\ |
|
61 |
\ |
|
62 |
+-- 3.0.0beta1 ... |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
63 |
|
64 |
||
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
65 |
Starting from the date of a major release: |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
66 |
|
67 |
At four-week intervals we make a new beta release. There will be no |
|
68 |
separate release candidate, but if a serious problem is discovered we may |
|
69 |
do the next beta ahead of schedule or make a point release. There will be |
|
70 |
about five or six releases in that series. |
|
71 |
||
72 |
In parallel with this, bugs targeted to the previous major release are |
|
73 |
merged into its branch. We will make bugfix releases from that branch as |
|
74 |
appropriate to the accumulation of changes, perhaps monthly, perhaps more |
|
75 |
often if there are serious bugs, perhaps much less often if no new changes |
|
76 |
have landed. |
|
77 |
||
78 |
We will synchronize our major releases with Ubuntu, so that they come out |
|
79 |
in sufficient time for some testing and margin of error before Ubuntu's |
|
80 |
upstream freeze. |
|
81 |
||
82 |
||
83 |
Regularity |
|
84 |
---------- |
|
85 |
||
86 |
We value regular releases. We prefer to slip a feature or fix to |
|
87 |
a later release rather than to make a release late. We will normally only |
|
88 |
slip a release to fix a critical bug. |
|
89 |
||
90 |
||
91 |
Numbering |
|
92 |
--------- |
|
93 |
||
94 |
The number for a six-month cycle is chosen at the start, with an increment |
|
4634.50.3
by John Arbash Meinel
Update the cycle.txt documentation. |
95 |
to either the first field (3.0.0) or second field (3.1.0) depending on |
96 |
what we expect to be the user impact of the release. We expect releases |
|
97 |
that culminate in a new disk format or that require changes in how people |
|
98 |
use the tool will get a new major number. We can change (forward only) if |
|
99 |
it turns out that we land larger changes than were expected. |
|
100 |
||
101 |
We will always use the 3-digit form (major.minor.micro) even when |
|
102 |
referring to the initial major release. This should help clarify where a |
|
103 |
patch is intended to land. (eg, "I propose this for 2.0.0" is clear, while |
|
104 |
"I propose this for 2.0" could mean you want to make the 2.0.0 release, or |
|
105 |
that you just want to land on the 2.0.x stable release series.) |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
106 |
|
107 |
||
108 |
Terminology |
|
109 |
----------- |
|
110 |
||
4634.50.3
by John Arbash Meinel
Update the cycle.txt documentation. |
111 |
Major releases (2.0.0 or 2.1.0) |
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
112 |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
113 |
The big ones, every six months, intended to ship in distributions and |
114 |
to be used by stability-oriented users. |
|
115 |
||
4634.50.3
by John Arbash Meinel
Update the cycle.txt documentation. |
116 |
Release candidate (2.0.0rc1) |
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
117 |
|
118 |
A preview of a major release, made one or a few weeks beforehand at the |
|
119 |
time the release branch is created. There should be few if any changes |
|
120 |
from the rc to the stable release. We should avoid the confusing phrasing |
|
121 |
"release candidate 2.0.0rc1 is released"; instead use "available." |
|
122 |
Starting with the 2.3 series we don't plan on making release candidates |
|
123 |
anymore. |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
124 |
|
125 |
Bugfix releases (2.0.1) |
|
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
126 |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
127 |
Based on the previous major release or bugfix; contains only bugfixes |
128 |
and perhaps documentation or translation corrections. |
|
129 |
||
130 |
Stable series |
|
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
131 |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
132 |
A major release and its descendant bugfix releases. |
133 |
||
134 |
Stable release |
|
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
135 |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
136 |
Either a major release or a bugfix release. |
137 |
||
4634.50.3
by John Arbash Meinel
Update the cycle.txt documentation. |
138 |
Beta release (3.0.0beta1) |
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
139 |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
140 |
Made from trunk every month, except for the month there's a major |
141 |
release. Stable and suitable for users who want the latest code and |
|
142 |
can live with some changes from month to month. |
|
143 |
||
144 |
Development series |
|
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
145 |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
146 |
The development releases leading up to a stable release. |
147 |
||
148 |
Bug Work |
|
149 |
-------- |
|
150 |
||
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
151 |
Bug fixes should normally be done first against the stable branch, |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
152 |
reviewed against that branch, and then merged forward to trunk. |
153 |
||
154 |
It may not always be easy to do this, if fixing the bug requires large |
|
155 |
changes or the affected code is different in the stable and development |
|
156 |
branches. If the tradeoff does not seem worthwhile the bug can be fixed |
|
157 |
only in the development branch, at least in the first instance. If users |
|
158 |
later want the fix backported we can discuss it. |
|
159 |
||
160 |
Developers can merge the release branch into trunk as often as they like, |
|
161 |
only asking for review if they're making nontrivial changes or feel review |
|
162 |
is needed. |
|
163 |
||
164 |
||
165 |
Feature and Performance Work |
|
166 |
---------------------------- |
|
167 |
||
168 |
Features can be landed to the development branch at any time, and they'll |
|
169 |
be released for testing within a month. |
|
170 |
||
171 |
Performance bugs, although important, will generally not be landed in a |
|
172 |
stable series. Fixing performance bugs well often requires nontrivial |
|
173 |
code changes or new formats. These are not suitable for a stable series. |
|
174 |
||
175 |
Performance bugs that can be fixed with a small safe patch can be |
|
176 |
considered for the stable series. |
|
177 |
||
178 |
||
179 |
Plugins |
|
180 |
------- |
|
181 |
||
182 |
Plugins that want to cooperate with this should make a series and a branch |
|
183 |
that matches each bzr stable series, and follow similar rules in making |
|
184 |
releases from their stable branch. We'd expect that plugins will make a |
|
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
185 |
release between the first beta release of a series and the final major |
186 |
release. |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
187 |
|
188 |
Within a stable series, anything that breaks any known plugin is |
|
189 |
considered an API break and will be avoided. Before |
|
190 |
making each bugfix release, we'll test that code against important |
|
191 |
plugins. |
|
192 |
||
193 |
Within a development series, the focus is on helping plugin authors keep |
|
194 |
up to date by giving clear error messages when an interface is removed. |
|
195 |
We will no longer focus on letting old plugin code work with new versions |
|
196 |
of bzrlib, which is an elusive target in Python. |
|
197 |
||
198 |
This may mean that in cases where today a plugin would keep running but |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
199 |
give warnings, it will now fail altogether with an error. |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
200 |
|
201 |
In return we expect more freedom to change and cleanup bzrlib code without |
|
202 |
needing to keep old code around, or write extra compatibility shims, or |
|
203 |
have review turnarounds related to compatibility. Some changes, such as |
|
204 |
removing module-global variables, that are hard to do now, will be |
|
205 |
possible to do safely. |
|
206 |
||
207 |
Discussion of plugins here includes programs that import and use bzrlib |
|
208 |
but that aren't technically plugins. The same approach, though the |
|
209 |
technical considerations are different, should apply to other extensions |
|
210 |
such as programs that use bzr through the shell interface. |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
211 |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
212 |
|
213 |
||
214 |
Data and Network Formats |
|
215 |
------------------------ |
|
216 |
||
217 |
Any development release should be able to interoperate with the previous |
|
218 |
stable release, and any stable release should be able to interoperate with |
|
219 |
the previous stable release. This is a minimum and normally releases will be |
|
220 |
able to interoperate with all previous releases as at present. |
|
221 |
||
222 |
Each major release will have one recommended data format which will be the |
|
223 |
default. The name of the format will indicate which release series (not |
|
224 |
specific release) it comes from: '2a' is the first supported format for |
|
4634.50.3
by John Arbash Meinel
Update the cycle.txt documentation. |
225 |
the 2.0.x series, '2b' the second, etc. We don't mention the particular |
4584.2.2
by Martin Pool
Bit of clarification about format names |
226 |
release that introduced it so as to avoid problems predicting precisely |
227 |
when it will land. |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
228 |
|
229 |
During a development series we may have a series of experimental formats. |
|
230 |
We will not leave people stranded if they test these formats, but we also |
|
231 |
won't guarantee to keep supporting them in a future release. If something |
|
232 |
inserted in one development release turns out to be bad it can just be |
|
4584.2.2
by Martin Pool
Bit of clarification about format names |
233 |
removed in the next. |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
234 |
|
235 |
||
236 |
Hosting Services |
|
237 |
----------------- |
|
238 |
||
239 |
The guarantees made above about format and network interoperation |
|
240 |
mean that hosting services such as Launchpad, Savannah, FedoraHosted, |
|
241 |
and Sourceforge could choose to run either the stable or beta versions. |
|
242 |
They might find it useful to run the beta version on their own beta |
|
243 |
server. |
|
244 |
||
245 |
||
246 |
Simultaneous Installation |
|
247 |
------------------------- |
|
248 |
||
249 |
Some people may want to simultaneously install and use both a stable |
|
250 |
release and development release. |
|
251 |
||
252 |
This can be handled in various ways either at the OS packaging or the |
|
253 |
Python level. We don't propose to directly address it in the upstream |
|
254 |
source. (For example, we will not change the bzrlib library name from one |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
255 |
release to the next.) |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
256 |
|
257 |
The issue already exists with people who may want to use for example the |
|
258 |
previous bzr release and the trunk. There is a related issue that plugins |
|
259 |
may be compatible with only some of the Bazaar versions people want to use |
|
260 |
at the same time, and again that is something that can be handled |
|
261 |
separately. |
|
262 |
||
263 |
||
264 |
OS Distributions |
|
265 |
---------------- |
|
266 |
||
267 |
OS distributors will be recommended to ship the bzr stable release that |
|
268 |
fits their schedule, the betas leading up to that release during their own |
|
269 |
beta period, and the bugfix releases following on from it. They might |
|
270 |
also choose to offer the beta releases as an alternative package. |
|
271 |
||
272 |
||
273 |
Packaging |
|
274 |
--------- |
|
275 |
||
5447.2.2
by Vincent Ladeuil
More updates following list discussion. |
276 |
At present we have three upstream-maintained PPAs containing Ubuntu packages |
5582.3.1
by Jelmer Vernooij
Mention bzr/daily rather than outdated nightly-bzr-ppa/ppa. |
277 |
of Bazaar: ``bzr/daily`` (snapshots), ``bzr-beta-ppa/ppa`` (beta releases) and |
5582.3.2
by Jelmer Vernooij
Fix wording a bit. |
278 |
``bzr/ppa`` (ie stable). Beta contains the monthly beta releases, and the |
279 |
stable PPA contains stable releases and bugfixes to those releases. |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
280 |
|
281 |
Some platforms with relatively less active packagers may choose to ship |
|
282 |
only the stable releases. This is probably better than having them only |
|
283 |
intermittently or slowly ship the monthly releases. |
|
284 |
||
4634.50.3
by John Arbash Meinel
Update the cycle.txt documentation. |
285 |
Binary installers should use a version number like '2.0.0-1' or |
286 |
'2.0.0beta1-1' so that the last component just reflects the packaging |
|
287 |
version, and can be incremented if a new installer is made with no |
|
288 |
upstream source changes. |
|
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
289 |
|
290 |
||
291 |
Code Freeze vs Announcement |
|
292 |
--------------------------- |
|
293 |
||
294 |
We will separate the code freeze for a particular release from its actual |
|
295 |
announcement, allowing a window of approximately one week for plugins to |
|
296 |
be released and binary installers to be built. On the date the |
|
297 |
announcement is published, people will be able to easily install it. |
|
3778.2.1
by Martin Pool
Updated release process documentation. |
298 |
|
299 |
||
300 |
Weekly Metronome Mail |
|
301 |
--------------------- |
|
302 |
||
303 |
Every week the release manager should send a mail to the Bazaar list |
|
304 |
covering these points (as appropriate): |
|
305 |
||
306 |
* Early communication about changing dependencies or defaults |
|
307 |
||
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
308 |
* Reminder re lifecycle and where we're up to right now, in particular the |
3778.2.1
by Martin Pool
Updated release process documentation. |
309 |
dates for the next release and/or candidate. |
310 |
||
311 |
* Summary of recent successes and pending work. |
|
312 |
||
313 |
* Reminder re release objectives |
|
314 |
||
315 |
* Reminder re things needing attention, e.g. bug triage, reviews, testing |
|
316 |
of certain things, etc. |
|
317 |
||
318 |
||
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
319 |
Questions |
320 |
********* |
|
321 |
||
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
322 |
Do users actually want this? |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
323 |
Apparently yes, because it's often requested and often raised as a |
324 |
problem. |
|
325 |
||
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
326 |
Would this confuse users? |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
327 |
It shouldn't, because it's a fairly standard scheme. |
328 |
||
329 |
Won't it take more time to fix bugs in multiple places? |
|
330 |
It shouldn't, because we'll only do this when the stable bugfix seems |
|
331 |
economical. When we fix bugs today in both trunk and release branches |
|
332 |
it normally does not take much more time. |
|
333 |
||
334 |
What about bzr in Ubuntu LTS, with a five-year support life? |
|
335 |
Most bugs are either fixed within six months, or not fixed at all, or |
|
336 |
not very important, or fixed as part of a large rework of the code |
|
337 |
that would be too large to backport. However, if there are fixes that |
|
338 |
are especially desired in an old release and feasible to do, we can do |
|
339 |
them without making a general commitment. |
|
340 |
||
341 |
Will anyone test the beta releases? |
|
342 |
Probably yes, our most active users will run them, but if people would |
|
343 |
really rather not test them, forcing them is not helpful. |
|
344 |
||
345 |
Isn't this a step backwards to a slower, less-agile process? |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
346 |
No, our trunk stays releasable, and we ship every month. We're just |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
347 |
cutting out things that hold us back (continuous rather than episodic |
348 |
API stability; RCs every month) and giving users what they demand. |
|
349 |
||
350 |
How about calling the monthly releases "milestone" or "next" not "beta"? |
|
351 |
Those words are less scary but they also have less clear meanings. |
|
352 |
||
353 |
||
354 |
Expected Benefits |
|
355 |
***************** |
|
356 |
||
357 |
If this plan works, we'll expect to see the following changes. If they |
|
358 |
don't occur, we'll think again: |
|
359 |
||
360 |
* We see a distribution curve of users and bug reports across nightly, monthly |
|
361 |
and stable releases, indicating that each has value. |
|
362 |
||
363 |
* API changes are easier or safer to make during beta periods, without |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
364 |
being held back by fears of compatibility or |
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
365 |
|
366 |
* The stable releases are actually stable and don't introduce regressions |
|
367 |
or break plugins. |
|
368 |
||
369 |
* Many bugs are fixed in stable branches, without developers feeling this |
|
370 |
is a waste of time. |
|
371 |
||
372 |
* Distributions ship the stable releases in their stable releases and the |
|
373 |
bugfix releases in their bugfix releases. |
|
374 |
||
375 |
* Plugin authors follow this policy, making their own bugfix releases. |
|
376 |
||
377 |
* Users like it. |
|
378 |
||
4941.1.2
by Martin Pool
6month cycles are well established so remove description of old problem state |
379 |
After doing this for the 2.0 cycle (September 2009 through to early |
380 |
2010), it seems to be going well. |
|
381 |
||
4889.3.1
by Martin Pool
Notes on reviewing for the stable branch |
382 |
|
383 |
Reviewing for the Stable Branch |
|
384 |
******************************* |
|
385 |
||
4941.1.3
by Martin Pool
Review notes for stable branch |
386 |
These are guidelines and can be interpreted case-by-case. |
387 |
||
4889.3.1
by Martin Pool
Notes on reviewing for the stable branch |
388 |
* All changes to the stable branch should fix a bug, even if you would not |
389 |
normally file a bug for the change. The bug description should if at |
|
390 |
all possible explain how to manually verify the bug in a way that will |
|
391 |
fail before and pass after the change. (These are requirements for the |
|
392 |
SRU process.) |
|
393 |
||
4941.1.3
by Martin Pool
Review notes for stable branch |
394 |
* The change should be reasonably small and conservative. |
395 |
||
396 |
* Remember that the patch will be read during the SRU |
|
397 |
process and so keeping the patch small is useful even beyond keeping the |
|
398 |
logical changes small. Avoid doing mechanical bulk changes on the |
|
399 |
stable branch. |
|
400 |
||
401 |
* Use particular care for things that may behave differently across |
|
402 |
platforms, encodings or locales. It's harder to thoroughly test these |
|
403 |
things before a release. |
|
404 |
||
405 |
* Generally speaking, just cleaning things up is not a sufficient reason |
|
406 |
to make changes to the stable branch. It has to actually fix a bug. |
|
407 |
||
408 |
* Changes to the stable branch should include tests as usual. |
|
409 |
||
410 |
* Don't change or remove existing APIs that might be used by plugins, even |
|
411 |
if they are underscore-prefixed. Adding APIs that are also being added |
|
412 |
to the trunk branch may make sense. |
|
413 |
||
414 |
* Keeping consistency with trunk is useful, but less important than |
|
415 |
keeping the stable branch stable. |
|
4889.3.1
by Martin Pool
Notes on reviewing for the stable branch |
416 |
|
417 |
* (more items welcome) |
|
418 |
||
4584.2.1
by Martin Pool
Update release cycle doc for 6m cycles |
419 |
References |
420 |
********** |
|
421 |
||
4941.1.3
by Martin Pool
Review notes for stable branch |
422 |
#. List thread "`[rfc] six-month stable release cycles`__", July 2009. |
423 |
||
424 |
.. __: https://lists.ubuntu.com/archives/bazaar/2009q3/060882.html |
|
3778.2.1
by Martin Pool
Updated release process documentation. |
425 |
|
426 |
.. |
|
427 |
vim: filetype=rst textwidth=74 ai shiftwidth=4 |