~ubuntu-branches/ubuntu/maverick/bzr/maverick

« back to all changes in this revision

Viewing changes to doc/developers/cycle.txt

  • Committer: Bazaar Package Importer
  • Author(s): Jelmer Vernooij
  • Date: 2010-02-17 17:47:40 UTC
  • mfrom: (1.4.5 upstream) (9.2.2 experimental)
  • Revision ID: james.westby@ubuntu.com-20100217174740-35yh6t5rjnztg9z6
Tags: 2.1.0-1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
2
2
Bazaar Release Cycles
3
3
*********************
4
4
 
5
 
:status: Current policy, as of 2009-08. 
 
5
:status: Current policy, as of 2009-08.
6
6
:blueprint: <https://blueprints.launchpad.net/bzr/+spec/6m-cycle>
7
7
 
8
8
 
18
18
 
19
19
* `Bazaar Developer Document Catalog <index.html>`_
20
20
 
21
 
* `Releasing Bazaar <releasing.html>`_ -- the process for actually making 
 
21
* `Releasing Bazaar <releasing.html>`_ -- the process for actually making
22
22
  a release or release candidate.
23
23
 
24
 
The Problem Situation
25
 
*********************
26
 
 
27
 
Bazaar makes a release every month, preceded by a one-week
28
 
release-candidate test.  
29
 
 
30
 
In any release we may fix bugs, add formats, change the default format,
31
 
improve performance, add new commands or change command line behaviour,
32
 
change the network protocol, or deprecate APIs.  We sometimes also
33
 
introduce new bugs, regress existing behaviour or performance, remove
34
 
existing features or formats, or break behaviour or APIs depended upon by
35
 
plugins, external programs or users.
36
 
 
37
 
Some users are happy upgrading every month and consider the overall
38
 
positive balance of changes is worth some amount of churn.  But there are
39
 
some serious problems:
40
 
 
41
 
* You cannot get bug fixes without also getting disruptive changes.
42
 
 
43
 
* Bazaar is seen as unstable.
44
 
 
45
 
* Many releases cause some plugin breakage.
46
 
 
47
 
* One month is not a very long window for dependent programs or systems
48
 
  to catch up to changes in Bazaar before the release goes out of date.
49
 
 
50
 
* There's no clear indication to distributions which version they should
51
 
  package.
52
 
 
53
 
* If people (or their distributions) just pick an arbitrary version, they
54
 
  may all be on different arbitrary versions, therefore they will have
55
 
  different behaviour and different bugs, and sometimes interoperation
56
 
  problems.
57
 
 
58
 
* Any effort we, or distributors, wanted to put into backporting fixes
59
 
  would be dissipated across many possible backport target releases.
60
 
 
61
 
* When in the past we've tried either stalling releases for particular
62
 
  features, or having trunk frozen for some weeks, it causes churn and
63
 
  waste.  People rush features in, or already landed features wait a long
64
 
  time to be released, or branches go out of date because they cannot
65
 
  land.
66
 
 
67
24
 
68
25
The Process
69
26
************
105
62
                                                        +-- 3.0.0beta1 ...
106
63
 
107
64
 
108
 
Starting from the date of a major release: 
 
65
Starting from the date of a major release:
109
66
 
110
67
At four-week intervals we make a new beta release.  There will be no
111
68
separate release candidate, but if a serious problem is discovered we may
121
78
We will then make a release candidate for the next major release, and at
122
79
this point create a release branch for it.  We will iterate release
123
80
candidates at approximately weekly intervals until there are no bugs
124
 
blocking the final major release. 
 
81
blocking the final major release.
125
82
 
126
83
Compared to the current process this has approximately the same amount of
127
84
release-related work, because the extra releases from the stable branch
192
149
Bug Work
193
150
--------
194
151
 
195
 
Bug fixes should normally be done first against the stable branch, 
 
152
Bug fixes should normally be done first against the stable branch,
196
153
reviewed against that branch, and then merged forward to trunk.
197
154
 
198
155
It may not always be easy to do this, if fixing the bug requires large
240
197
of bzrlib, which is an elusive target in Python.
241
198
 
242
199
This may mean that in cases where today a plugin would keep running but
243
 
give warnings, it will now fail altogether with an error.   
 
200
give warnings, it will now fail altogether with an error.
244
201
 
245
202
In return we expect more freedom to change and cleanup bzrlib code without
246
203
needing to keep old code around, or write extra compatibility shims, or
252
209
but that aren't technically plugins.  The same approach, though the
253
210
technical considerations are different, should apply to other extensions
254
211
such as programs that use bzr through the shell interface.
255
 
  
 
212
 
256
213
 
257
214
 
258
215
Data and Network Formats
296
253
This can be handled in various ways either at the OS packaging or the
297
254
Python level.  We don't propose to directly address it in the upstream
298
255
source.  (For example, we will not change the bzrlib library name from one
299
 
release to the next.)  
 
256
release to the next.)
300
257
 
301
258
The issue already exists with people who may want to use for example the
302
259
previous bzr release and the trunk.  There is a related issue that plugins
350
307
 
351
308
* Early communication about changing dependencies or defaults
352
309
 
353
 
* Reminder re lifecycle and where we're up to right now, in particular the 
 
310
* Reminder re lifecycle and where we're up to right now, in particular the
354
311
  dates for the next release and/or candidate.
355
312
 
356
313
* Summary of recent successes and pending work.
364
321
Questions
365
322
*********
366
323
 
367
 
Do users actually want this?  
 
324
Do users actually want this?
368
325
    Apparently yes, because it's often requested and often raised as a
369
326
    problem.
370
327
 
371
 
Would this confuse users?  
 
328
Would this confuse users?
372
329
    It shouldn't, because it's a fairly standard scheme.
373
330
 
374
331
Won't it take more time to fix bugs in multiple places?
388
345
    really rather not test them, forcing them is not helpful.
389
346
 
390
347
Isn't this a step backwards to a slower, less-agile process?
391
 
    No, our trunk stays releasable, and we ship every month.  We're just 
 
348
    No, our trunk stays releasable, and we ship every month.  We're just
392
349
    cutting out things that hold us back (continuous rather than episodic
393
350
    API stability; RCs every month) and giving users what they demand.
394
351
 
406
363
  and stable releases, indicating that each has value.
407
364
 
408
365
* API changes are easier or safer to make during beta periods, without
409
 
  being held back by fears of compatibility or 
 
366
  being held back by fears of compatibility or
410
367
 
411
368
* The stable releases are actually stable and don't introduce regressions
412
369
  or break plugins.
421
378
 
422
379
* Users like it.
423
380
 
 
381
After doing this for the 2.0 cycle (September 2009 through to early
 
382
2010), it seems to be going well.
 
383
 
 
384
 
 
385
Reviewing for the Stable Branch
 
386
*******************************
 
387
 
 
388
These are guidelines and can be interpreted case-by-case.
 
389
 
 
390
* All changes to the stable branch should fix a bug, even if you would not
 
391
  normally file a bug for the change.  The bug description should if at
 
392
  all possible explain how to manually verify the bug in a way that will
 
393
  fail before and pass after the change.  (These are requirements for the
 
394
  SRU process.)
 
395
 
 
396
* The change should be reasonably small and conservative.  
 
397
 
 
398
* Remember that the patch will be read during the SRU
 
399
  process and so keeping the patch small is useful even beyond keeping the
 
400
  logical changes small.  Avoid doing mechanical bulk changes on the
 
401
  stable branch.
 
402
 
 
403
* Use particular care for things that may behave differently across
 
404
  platforms, encodings or locales.  It's harder to thoroughly test these
 
405
  things before a release.
 
406
 
 
407
* Generally speaking, just cleaning things up is not a sufficient reason
 
408
  to make changes to the stable branch.  It has to actually fix a bug.
 
409
 
 
410
* Changes to the stable branch should include tests as usual.  
 
411
 
 
412
* Don't change or remove existing APIs that might be used by plugins, even
 
413
  if they are underscore-prefixed.  Adding APIs that are also being added
 
414
  to the trunk branch may make sense.
 
415
 
 
416
* Keeping consistency with trunk is useful, but less important than
 
417
  keeping the stable branch stable.
 
418
 
 
419
* (more items welcome)
 
420
 
424
421
References
425
422
**********
426
423
 
427
 
#. List thread "[rfc] six-month stable release cycles", July 2009.
 
424
#. List thread "`[rfc] six-month stable release cycles`__", July 2009.
 
425
 
 
426
.. __: https://lists.ubuntu.com/archives/bazaar/2009q3/060882.html
428
427
 
429
428
..
430
429
   vim: filetype=rst textwidth=74 ai shiftwidth=4
431