/brz/remove-bazaar

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