@@ -5,217 +5,229 @@ Last-Modified: $Date$
5
5
Author:
[email protected] (Aahz),
[email protected] (Anthony Baxter)
6
6
Status: Active
7
7
Type: Process
8
+ Content-Type: text/x-rst
8
9
Created: 15-Mar-2001
9
10
Post-History: 15-Mar-2001 18-Apr-2001 19-Aug-2004
10
11
11
12
13
+
12
14
Abstract
15
+ ========
13
16
14
- Python has historically had only a single fork of development,
15
- with releases having the combined purpose of adding new features
16
- and delivering bug fixes (these kinds of releases will be referred
17
- to as "major releases"). This PEP describes how to fork off
18
- maintenance, or bug fix, releases of old versions for the primary
19
- purpose of fixing bugs.
17
+ Python has historically had only a single fork of development, with
18
+ releases having the combined purpose of adding new features and
19
+ delivering bug fixes (these kinds of releases will be referred to as
20
+ "major releases"). This PEP describes how to fork off maintenance, or
21
+ bug fix, releases of old versions for the primary purpose of fixing
22
+ bugs.
20
23
21
- This PEP is not, repeat NOT, a guarantee of the existence of bug fix
22
- releases; it only specifies a procedure to be followed if bug fix
23
- releases are desired by enough of the Python community willing to
24
- do the work.
24
+ This PEP is not, repeat NOT, a guarantee of the existence of bug fix
25
+ releases; it only specifies a procedure to be followed if bug fix
26
+ releases are desired by enough of the Python community willing to do
27
+ the work.
25
28
26
29
27
30
Motivation
31
+ ==========
28
32
29
- With the move to SourceForge, Python development has accelerated.
30
- There is a sentiment among part of the community that there was
31
- too much acceleration, and many people are uncomfortable with
32
- upgrading to new versions to get bug fixes when so many features
33
- have been added, sometimes late in the development cycle.
33
+ With the move to SourceForge, Python development has accelerated.
34
+ There is a sentiment among part of the community that there was too
35
+ much acceleration, and many people are uncomfortable with upgrading to
36
+ new versions to get bug fixes when so many features have been added,
37
+ sometimes late in the development cycle.
34
38
35
- One solution for this issue is to maintain the previous major
36
- release, providing bug fixes until the next major release. This
37
- should make Python more attractive for enterprise development,
38
- where Python may need to be installed on hundreds or thousands of
39
- machines.
39
+ One solution for this issue is to maintain the previous major release,
40
+ providing bug fixes until the next major release. This should make
41
+ Python more attractive for enterprise development, where Python may
42
+ need to be installed on hundreds or thousands of machines.
40
43
41
44
42
45
Prohibitions
46
+ ============
43
47
44
- Bug fix releases are required to adhere to the following restrictions:
48
+ Bug fix releases are required to adhere to the following restrictions:
45
49
46
- 1. There must be zero syntax changes. All .pyc and .pyo files
47
- must work (no regeneration needed) with all bugfix releases
48
- forked off from a major release.
50
+ 1. There must be zero syntax changes. All ` .pyc` and ` .pyo` files must
51
+ work (no regeneration needed) with all bugfix releases forked off
52
+ from a major release.
49
53
50
- 2. There must be zero pickle changes.
54
+ 2. There must be zero pickle changes.
51
55
52
- 3. There must be no incompatible C API changes. All extensions
53
- must continue to work without recompiling in all bugfix releases
54
- in the same fork as a major release.
56
+ 3. There must be no incompatible C API changes. All extensions must
57
+ continue to work without recompiling in all bugfix releases in the
58
+ same fork as a major release.
55
59
56
- Breaking any of these prohibitions requires a BDFL proclamation
57
- (and a prominent warning in the release notes).
60
+ Breaking any of these prohibitions requires a BDFL proclamation (and a
61
+ prominent warning in the release notes).
58
62
59
63
60
64
Not-Quite-Prohibitions
65
+ ======================
61
66
62
- Where possible, bug fix releases should also:
67
+ Where possible, bug fix releases should also:
63
68
64
- 1. Have no new features. The purpose of a bug fix release is to
65
- fix bugs, not add the latest and greatest whizzo feature from
66
- the HEAD of the CVS root.
69
+ 1. Have no new features. The purpose of a bug fix release is to fix
70
+ bugs, not add the latest and greatest whizzo feature from the HEAD
71
+ of the CVS root.
67
72
68
- 2. Be a painless upgrade. Users should feel confident that an
69
- upgrade from 2.x.y to 2.x.(y+1) will not break their running
70
- systems. This means that, unless it is necessary to fix a bug,
71
- the standard library should not change behavior, or worse yet,
72
- APIs.
73
+ 2. Be a painless upgrade. Users should feel confident that an upgrade
74
+ from 2.x.y to 2.x.(y+1) will not break their running systems. This
75
+ means that, unless it is necessary to fix a bug, the standard
76
+ library should not change behavior, or worse yet, APIs.
73
77
74
78
75
79
Applicability of Prohibitions
80
+ =============================
76
81
77
- The above prohibitions and not-quite-prohibitions apply both
78
- for a final release to a bugfix release (for instance, 2.4 to
79
- 2.4.1) and for one bugfix release to the next in a series
80
- (for instance 2.4.1 to 2.4.2).
82
+ The above prohibitions and not-quite-prohibitions apply both for a
83
+ final release to a bugfix release (for instance, 2.4 to 2.4.1) and for
84
+ one bugfix release to the next in a series (for instance 2.4.1 to
85
+ 2.4.2).
81
86
82
- Following the prohibitions listed in this PEP should help keep
83
- the community happy that a bug fix release is a painless and safe
84
- upgrade.
87
+ Following the prohibitions listed in this PEP should help keep the
88
+ community happy that a bug fix release is a painless and safe upgrade.
85
89
86
90
87
91
Helping the Bug Fix Releases Happen
92
+ ===================================
88
93
89
- Here's a few pointers on helping the bug fix release process along.
94
+ Here's a few pointers on helping the bug fix release process along.
90
95
91
- 1. Backport bug fixes. If you fix a bug, and it seems appropriate,
92
- port it to the CVS branch for the current bug fix release. If
93
- you're unwilling or unable to backport it yourself, make a note
94
- in the commit message, with words like 'Bugfix candidate' or
95
- 'Backport candidate'.
96
+ 1. Backport bug fixes. If you fix a bug, and it seems appropriate,
97
+ port it to the CVS branch for the current bug fix release. If
98
+ you're unwilling or unable to backport it yourself, make a note in
99
+ the commit message, with words like 'Bugfix candidate' or
100
+ 'Backport candidate'.
96
101
97
- 2. If you're not sure, ask. Ask the person managing the current bug
98
- fix releases if they think a particular fix is appropriate.
102
+ 2. If you're not sure, ask. Ask the person managing the current bug
103
+ fix releases if they think a particular fix is appropriate.
99
104
100
- 3. If there's a particular bug you'd particularly like fixed in a
101
- bug fix release, jump up and down and try to get it done. Do not
102
- wait until 48 hours before a bug fix release is due, and then
103
- start asking for bug fixes to be included.
105
+ 3. If there's a particular bug you'd particularly like fixed in a bug
106
+ fix release, jump up and down and try to get it done. Do not wait
107
+ until 48 hours before a bug fix release is due, and then start
108
+ asking for bug fixes to be included.
104
109
105
110
106
111
Version Numbers
112
+ ===============
107
113
108
- Starting with Python 2.0, all major releases are required to have
109
- a version number of the form X.Y; bugfix releases will always be of
110
- the form X.Y.Z.
114
+ Starting with Python 2.0, all major releases are required to have a
115
+ version number of the form X.Y; bugfix releases will always be of the
116
+ form X.Y.Z.
111
117
112
- The current major release under development is referred to as
113
- release N; the just-released major version is referred to as N-1.
118
+ The current major release under development is referred to as release
119
+ N; the just-released major version is referred to as N-1.
114
120
115
- In CVS, the bug fix releases happen on a branch. For release 2.x,
116
- the branch is named 'release2x-maint'. For example, the branch for
117
- the 2.3 maintenance releases is release23-maint
121
+ In CVS, the bug fix releases happen on a branch. For release 2.x, the
122
+ branch is named 'release2x-maint'. For example, the branch for the 2.3
123
+ maintenance releases is release23-maint
118
124
119
125
120
126
Procedure
121
-
122
- The process for managing bugfix releases is modeled in part on the
123
- Tcl system [1].
124
-
125
- The Patch Czar is the counterpart to the BDFL for bugfix releases.
126
- However, the BDFL and designated appointees retain veto power over
127
- individual patches. A Patch Czar might only be looking after a single
128
- branch of development - it's quite possible that a different person
129
- might be maintaining the 2.3.x and the 2.4.x releases.
130
-
131
- As individual patches get contributed to the current trunk of CVS,
132
- each patch committer is requested to consider whether the patch is
133
- a bug fix suitable for inclusion in a bugfix release. If the patch is
134
- considered suitable, the committer can either commit the release to
135
- the maintenance branch, or else mark the patch in the commit message.
136
-
137
- In addition, anyone from the Python community is free to suggest
138
- patches for inclusion. Patches may be submitted specifically for
139
- bugfix releases; they should follow the guidelines in PEP 3 [2].
140
- In general, though, it's probably better that a bug in a specific
141
- release also be fixed on the HEAD as well as the branch.
142
-
143
- The Patch Czar decides when there are a sufficient number of patches
144
- to warrant a release. The release gets packaged up, including a
145
- Windows installer, and made public. If any new bugs are found, they
146
- must be fixed immediately and a new bugfix release publicized (with
147
- an incremented version number). For the 2.3.x cycle, the Patch Czar
148
- (Anthony) has been trying for a release approximately every six
149
- months, but this should not be considered binding in any way on
150
- any future releases.
151
-
152
- Bug fix releases are expected to occur at an interval of roughly
153
- six months. This is only a guideline, however - obviously, if a
154
- major bug is found, a bugfix release may be appropriate sooner. In
155
- general, only the N-1 release will be under active maintenance at
156
- any time. That is, during Python 2.4's development, Python 2.3 gets
157
- bugfix releases. If, however, someone qualified wishes to continue
158
- the work to maintain an older release, they should be encouraged.
127
+ =========
128
+
129
+ The process for managing bugfix releases is modeled in part on the Tcl
130
+ system [1]_.
131
+
132
+ The Patch Czar is the counterpart to the BDFL for bugfix releases.
133
+ However, the BDFL and designated appointees retain veto power over
134
+ individual patches. A Patch Czar might only be looking after a single
135
+ branch of development - it's quite possible that a different person
136
+ might be maintaining the 2.3.x and the 2.4.x releases.
137
+
138
+ As individual patches get contributed to the current trunk of CVS,
139
+ each patch committer is requested to consider whether the patch is a
140
+ bug fix suitable for inclusion in a bugfix release. If the patch is
141
+ considered suitable, the committer can either commit the release to
142
+ the maintenance branch, or else mark the patch in the commit message.
143
+
144
+ In addition, anyone from the Python community is free to suggest
145
+ patches for inclusion. Patches may be submitted specifically for
146
+ bugfix releases; they should follow the guidelines in PEP 3 [2]_. In
147
+ general, though, it's probably better that a bug in a specific release
148
+ also be fixed on the HEAD as well as the branch.
149
+
150
+ The Patch Czar decides when there are a sufficient number of patches
151
+ to warrant a release. The release gets packaged up, including a
152
+ Windows installer, and made public. If any new bugs are found, they
153
+ must be fixed immediately and a new bugfix release publicized (with an
154
+ incremented version number). For the 2.3.x cycle, the Patch Czar
155
+ (Anthony) has been trying for a release approximately every six
156
+ months, but this should not be considered binding in any way on any
157
+ future releases.
158
+
159
+ Bug fix releases are expected to occur at an interval of roughly six
160
+ months. This is only a guideline, however - obviously, if a major bug
161
+ is found, a bugfix release may be appropriate sooner. In general, only
162
+ the N-1 release will be under active maintenance at any time. That is,
163
+ during Python 2.4's development, Python 2.3 gets bugfix releases. If,
164
+ however, someone qualified wishes to continue the work to maintain an
165
+ older release, they should be encouraged.
159
166
160
167
161
168
Patch Czar History
169
+ ==================
162
170
163
- Anthony Baxter is the Patch Czar for 2.3.1 through 2.3.4.
171
+ Anthony Baxter is the Patch Czar for 2.3.1 through 2.3.4.
164
172
165
- Barry Warsaw is the Patch Czar for 2.2.3.
173
+ Barry Warsaw is the Patch Czar for 2.2.3.
166
174
167
- Guido van Rossum is the Patch Czar for 2.2.2.
175
+ Guido van Rossum is the Patch Czar for 2.2.2.
168
176
169
- Michael Hudson is the Patch Czar for 2.2.1.
177
+ Michael Hudson is the Patch Czar for 2.2.1.
170
178
171
- Anthony Baxter is the Patch Czar for 2.1.2 and 2.1.3.
179
+ Anthony Baxter is the Patch Czar for 2.1.2 and 2.1.3.
172
180
173
- Thomas Wouters is the Patch Czar for 2.1.1.
181
+ Thomas Wouters is the Patch Czar for 2.1.1.
174
182
175
- Moshe Zadka is the Patch Czar for 2.0.1.
183
+ Moshe Zadka is the Patch Czar for 2.0.1.
176
184
177
185
178
186
History
187
+ =======
179
188
180
- This PEP started life as a proposal on comp.lang.python. The
181
- original version suggested a single patch for the N-1 release to
182
- be released concurrently with the N release. The original version
183
- also argued for sticking with a strict bug fix policy.
189
+ This PEP started life as a proposal on comp.lang.python. The original
190
+ version suggested a single patch for the N-1 release to be released
191
+ concurrently with the N release. The original version also argued for
192
+ sticking with a strict bug fix policy.
184
193
185
- Following feedback from the BDFL and others, the draft PEP was
186
- written containing an expanded bugfix release cycle that permitted
187
- any previous major release to obtain patches and also relaxed
188
- the strict bug fix requirement (mainly due to the example of PEP
189
- 235 [3], which could be argued as either a bug fix or a feature).
194
+ Following feedback from the BDFL and others, the draft PEP was written
195
+ containing an expanded bugfix release cycle that permitted any
196
+ previous major release to obtain patches and also relaxed the strict
197
+ bug fix requirement (mainly due to the example of PEP 235 [3]_, which
198
+ could be argued as either a bug fix or a feature).
190
199
191
- Discussion then mostly moved to python-dev, where BDFL finally
192
- issued a proclamation basing the Python bugfix release process on
193
- Tcl's, which essentially returned to the original proposal in
194
- terms of being only the N-1 release and only bug fixes, but
195
- allowing multiple bugfix releases until release N is published.
200
+ Discussion then mostly moved to python-dev, where BDFL finally issued
201
+ a proclamation basing the Python bugfix release process on Tcl's,
202
+ which essentially returned to the original proposal in terms of being
203
+ only the N-1 release and only bug fixes, but allowing multiple bugfix
204
+ releases until release N is published.
196
205
197
- Anthony Baxter then took this PEP and revised it, based on
198
- lessons from the 2.3 release cycle.
206
+ Anthony Baxter then took this PEP and revised it, based on lessons
207
+ from the 2.3 release cycle.
199
208
200
209
201
210
References
211
+ ==========
212
+
213
+ .. [1] http://www.tcl.tk/cgi-bin/tct/tip/28.html
202
214
203
- [1] http://www.tcl.tk/cgi-bin/tct/tip/28.html
204
215
205
- [2] PEP 3, Guidelines for Handling Bug Reports, Hylton
206
- http://www.python.org/dev/peps/pep-0003/
216
+ .. [2] PEP 3, Guidelines for Handling Bug Reports, Hylton
217
+ ( http://www.python.org/dev/peps/pep-0003/)
207
218
208
- [3] PEP 235, Import on Case-Insensitive Platforms, Peters
209
- http://www.python.org/dev/peps/pep-0235/
219
+ .. [3] PEP 235, Import on Case-Insensitive Platforms, Peters
220
+ ( http://www.python.org/dev/peps/pep-0235/)
210
221
211
222
212
223
Copyright
224
+ =========
213
225
214
- This document has been placed in the public domain.
226
+ This document has been placed in the public domain.
215
227
216
228
217
-
218
- Local Variables:
219
- mode: indented-text
220
- indent-tabs-mode: nil
221
- End:
229
+ ..
230
+ Local Variables:
231
+ mode: indented-text
232
+ indent-tabs-mode: nil
233
+ End:
0 commit comments