1
1
*********************
3
3
*********************
5
:status: Current policy, as of 2017-11.
5
:status: Current policy, as of 2009-08.
6
:blueprint: <https://blueprints.launchpad.net/bzr/+spec/6m-cycle>
8
9
Our users want easy access to bug fixes without other changes to the
9
10
core product. They also want a Just Works experience across the full
10
Breezy ecosystem. To deliver the first and enable the second, we're
11
Bazaar ecosystem. To deliver the first and enable the second, we're
11
12
adopting some standard process patterns: a 6 monthly release cycle and a
12
stable series. These changes will also have other benefits, including
13
stable branch. These changes will also have other benefits, including
13
14
better availability of bug fixes in OS distributions, more freedom to
14
15
remove old code, and less work for in packaging.
18
* `Breezy Developer Document Catalog <index.html>`_
19
* `Bazaar Developer Document Catalog <index.html>`_
20
21
* `Releasing Bazaar <releasing.html>`_ -- the process for actually making
21
22
a release or release candidate.
27
Breezy will make a major release every six months, which will be supported at
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.
28
Bazaar will make a major release every six months, which will be supported
29
at least until the time of the next major release. During this support
30
period, we'll make incremental releases which fix bugs, but which do not
31
change network or disk formats or command syntax, and which do not require
33
34
We will also run a development series, which will become the next major
34
35
release. We'll make a beta release from this every four weeks. The
74
75
often if there are serious bugs, perhaps much less often if no new changes
78
We will then make a release candidate for the next major release, and at
79
this point create a release branch for it. We will iterate release
80
candidates at approximately weekly intervals until there are no bugs
81
blocking the final major release.
83
Compared to the current process this has approximately the same amount of
84
release-related work, because the extra releases from the stable branch
85
are "paid for" by not doing RCs for the development series.
77
87
We will synchronize our major releases with Ubuntu, so that they come out
78
88
in sufficient time for some testing and margin of error before Ubuntu's
110
120
Major releases (2.0.0 or 2.1.0)
112
121
The big ones, every six months, intended to ship in distributions and
113
122
to be used by stability-oriented users.
115
124
Release candidate (2.0.0rc1)
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
125
A preview of a major release, made one or a few weeks beforehand at
126
the time the release branch is created. There should be few if any
127
changes from the rc to the stable release. We should avoid the
128
confusing phrasing "release candidate 2.0.0rc1 is released"; instead
124
131
Bugfix releases (2.0.1)
126
132
Based on the previous major release or bugfix; contains only bugfixes
127
133
and perhaps documentation or translation corrections.
131
136
A major release and its descendant bugfix releases.
135
139
Either a major release or a bugfix release.
137
141
Beta release (3.0.0beta1)
139
142
Made from trunk every month, except for the month there's a major
140
143
release. Stable and suitable for users who want the latest code and
141
144
can live with some changes from month to month.
143
146
Development series
145
147
The development releases leading up to a stable release.
181
183
Plugins that want to cooperate with this should make a series and a branch
182
184
that matches each bzr stable series, and follow similar rules in making
183
185
releases from their stable branch. We'd expect that plugins will make a
184
release between the first beta release of a series and the final major
186
release between the last development release of a series and the major
187
189
Within a stable series, anything that breaks any known plugin is
188
190
considered an API break and will be avoided. Before
192
194
Within a development series, the focus is on helping plugin authors keep
193
195
up to date by giving clear error messages when an interface is removed.
194
196
We will no longer focus on letting old plugin code work with new versions
195
of breezy, which is an elusive target in Python.
197
of bzrlib, which is an elusive target in Python.
197
199
This may mean that in cases where today a plugin would keep running but
198
200
give warnings, it will now fail altogether with an error.
200
In return we expect more freedom to change and cleanup breezy code without
202
In return we expect more freedom to change and cleanup bzrlib code without
201
203
needing to keep old code around, or write extra compatibility shims, or
202
204
have review turnarounds related to compatibility. Some changes, such as
203
205
removing module-global variables, that are hard to do now, will be
204
206
possible to do safely.
206
Discussion of plugins here includes programs that import and use breezy
208
Discussion of plugins here includes programs that import and use bzrlib
207
209
but that aren't technically plugins. The same approach, though the
208
210
technical considerations are different, should apply to other extensions
209
211
such as programs that use bzr through the shell interface.
251
253
This can be handled in various ways either at the OS packaging or the
252
254
Python level. We don't propose to directly address it in the upstream
253
source. (For example, we will not change the breezy library name from one
255
source. (For example, we will not change the bzrlib library name from one
254
256
release to the next.)
256
258
The issue already exists with people who may want to use for example the
275
At present we have three upstream-maintained PPAs containing Ubuntu packages
276
of Bazaar: ``bzr/daily`` (snapshots), ``bzr-beta-ppa/ppa`` (beta releases) and
277
``bzr/ppa`` (ie stable). Beta contains the monthly beta releases, and the
278
stable PPA contains stable releases and bugfixes to those releases.
277
At present we have three upstream-maintained PPAs containing Ubuntu
278
packages of Bazaar: ``~bzr-nightly-ppa``, ``~bzr-beta-ppa`` (rcs and
279
releases) and ``~bzr`` (ie stable). We will keep these PPAs, and reorient
280
beta to contain the monthly beta releases, and the stable PPA to contain
281
stable releases, their release candidates, and bugfixes to those releases.
280
283
Some platforms with relatively less active packagers may choose to ship
281
284
only the stable releases. This is probably better than having them only