Skip to content

Commit 82fefa2

Browse files
authored
Clarify branch/release terminology in Development Cycle page. (#598)
Try to be more consistent about use of major.minor.micro version numbers and of feature, bugfix, and security releases. Reflect current policy and practice for branch transitions as of 3.9. Other minor cleanups.
1 parent b662daf commit 82fefa2

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

devcycle.rst

+23-17
Original file line numberDiff line numberDiff line change
@@ -67,35 +67,39 @@ Maintenance branches
6767
--------------------
6868

6969
A branch for a previous feature release, currently being maintained for bug
70-
fixes. There are usually two maintenance branches at any given time for
71-
Python 3.x. Only during the beta/rc phase of a new
72-
minor/feature release will there be three active maintenance branches, e.g.
73-
during the beta phase for Python 3.8 there are master, 3.8, 3.7, and 3.6
74-
branches open. Releases
75-
produced from a maintenance branch are called **maintenance** or **bugfix**
70+
fixes, or for the next feature release in its
71+
:ref:`beta <beta>` or :ref:`release candidate <rc>` stages.
72+
There is usually either one or two maintenance branches at any given time for
73+
Python 3.x. After the final release of a new minor version (3.x.0), releases
74+
produced from a maintenance branch are called **bugfix** or **maintenance**
7675
releases; the terms are used interchangeably. These releases have a
7776
**micro version** number greater than zero.
7877

7978
The only changes allowed to occur in a maintenance branch without debate are
8079
bug fixes. Also, a general rule for maintenance branches is that compatibility
81-
must not be broken at any point between sibling minor releases (3.5.1, 3.5.2,
80+
must not be broken at any point between sibling micro releases (3.5.1, 3.5.2,
8281
etc.). For both rules, only rare exceptions are accepted and **must** be
8382
discussed first.
8483

85-
Sometime after a new maintenance branch is created (after a new *minor version*
86-
is released), the old maintenance branch on that major version will go into
87-
:ref:`security mode <secbranch>`,
88-
usually after one last maintenance release at the discretion of the
84+
A new maintenance branch is normally created when the next feature release
85+
cycle reaches feature freeze, i.e. at its first beta pre-release.
86+
From that point on, changes intended for remaining pre-releases, the final
87+
release (3.x.0), and subsequent bugfix releases are merged to
88+
that maintenance branch.
89+
90+
Sometime following the final release (3.x.0), the maintenance branch for
91+
the previous minor version will go into :ref:`security mode <secbranch>`,
92+
usually after at least one more bugfix release at the discretion of the
8993
release manager. For example, the 3.4 maintenance branch was put into
90-
:ref:`security mode <secbranch>` after the 3.4.4 final maintenance release
91-
following the release of 3.5.1.
94+
:ref:`security mode <secbranch>` after the 3.4.4 bugfix release
95+
which followed the release of 3.5.1.
9296

9397
.. _secbranch:
9498

9599
Security branches
96100
-----------------
97101

98-
A branch less than 5 years old but no longer in maintenance mode is a security
102+
A branch less than 5 years old but no longer in bugfix mode is a security
99103
branch.
100104

101105
The only changes made to a security branch are those fixing issues exploitable
@@ -107,6 +111,7 @@ since it is important to be able to run the tests successfully before releasing.
107111

108112
Commits to security branches are to be coordinated with the release manager
109113
for the corresponding feature version, as listed in the :ref:`branchstatus`.
114+
Merging of pull requests to security branches is restricted to release managers.
110115
Any release made from a security branch is source-only and done only when actual
111116
security patches have been applied to the branch. These releases have a
112117
**micro version** number greater than the last **bugfix** release.
@@ -307,9 +312,12 @@ Current Administrators
307312
+-------------------+----------------------------------------------------------+-----------------+
308313
| Name | Role | GitHub Username |
309314
+===================+==========================================================+=================+
315+
| Pablo Galindo | Python 3.10 and 3.11 Release Manager, | pablogsal |
316+
| | Maintainer of buildbot.python.org | |
317+
+-------------------+----------------------------------------------------------+-----------------+
310318
| Łukasz Langa | Python 3.8 and 3.9 Release Manager | ambv |
311319
+-------------------+----------------------------------------------------------+-----------------+
312-
| Ned Deily | Python 3.7 Release Manager | ned-deily |
320+
| Ned Deily | Python 3.6 and 3.7 Release Manager | ned-deily |
313321
+-------------------+----------------------------------------------------------+-----------------+
314322
| Lary Hastings | Python 3.5 Release Manager | larryhastings |
315323
+-------------------+----------------------------------------------------------+-----------------+
@@ -321,8 +329,6 @@ Current Administrators
321329
+-------------------+----------------------------------------------------------+-----------------+
322330
| Mariatta Wijaya | Maintainer of blurb_it and miss-islington | Mariatta |
323331
+-------------------+----------------------------------------------------------+-----------------+
324-
| Pablo Galindo | Maintainer of buildbot.python.org | pablogsal |
325-
+-------------------+----------------------------------------------------------+-----------------+
326332

327333
Repository Release Manager Role Policy
328334
--------------------------------------

0 commit comments

Comments
 (0)