Skip to content

Commit 3c1f94d

Browse files
committed
[5.1.x] Updated the release process documentation to reflect the current process.
Backport of 0ba35a4 from main.
1 parent 8ad0d09 commit 3c1f94d

File tree

1 file changed

+47
-33
lines changed

1 file changed

+47
-33
lines changed

docs/internals/release-process.txt

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -184,54 +184,68 @@ Release process
184184
Django uses a time-based release schedule, with feature releases every eight
185185
months or so.
186186

187-
After each feature release, the release manager will announce a timeline for
188-
the next feature release.
187+
After each feature release, the release manager will publish a timeline for the
188+
next feature release. The timeline for an upcoming feature release can be found
189+
in the corresponding wiki roadmap page, e.g.
190+
https://code.djangoproject.com/wiki/Version6.0Roadmap.
189191

190-
Release cycle
191-
-------------
192+
Feature release schedule and stages
193+
-----------------------------------
192194

193-
Each release cycle consists of three parts:
195+
Active development / Pre-feature freeze
196+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
194197

195-
Phase one: feature proposal
196-
~~~~~~~~~~~~~~~~~~~~~~~~~~~
198+
Work begins on the feature release ``A.B`` after the feature freeze of the
199+
previous release, i.e. when the ``stable/A.B-1.x`` branch is forked.
197200

198-
The first phase of the release process will include figuring out what major
199-
features to include in the next version. This should include a good deal of
200-
preliminary work on those features -- working code trumps grand design.
201+
You can find the current branch under active development in the
202+
`Django release process
203+
<https://code.djangoproject.com/#Djangoreleaseprocess>`_ on Trac.
201204

202-
Major features for an upcoming release will be added to the wiki roadmap page,
203-
e.g. https://code.djangoproject.com/wiki/Version1.11Roadmap.
205+
Feature freeze / Alpha release
206+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
204207

205-
Phase two: development
206-
~~~~~~~~~~~~~~~~~~~~~~
208+
All major and minor features, including deprecations and breaking changes, must
209+
be merged by the feature freeze. Any features not done by this point will be
210+
deferred to the next feature release.
207211

208-
The second part of the release schedule is the "heads-down" working period.
209-
Using the roadmap produced at the end of phase one, we'll all work very hard to
210-
get everything on it done.
212+
At this point, the ``stable/A.B.x`` branch will be forked from ``main``.
211213

212-
At the end of phase two, any unfinished features will be postponed until the
213-
next release.
214+
Non-release blocking bug fix freeze / Beta release
215+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
214216

215-
Phase two will culminate with an alpha release. At this point, the
216-
``stable/A.B.x`` branch will be forked from ``main``.
217+
After the alpha, all bug fixes merged in ``main`` are also backported to
218+
``stable/A.B.x``. Refactors are backported at the discretion of the merger.
219+
Mergers will be more and more conservative with backports, to avoid introducing
220+
regressions.
217221

218-
Phase three: bugfixes
219-
~~~~~~~~~~~~~~~~~~~~~
222+
In parallel to this phase, ``main`` can continue to receive new features, to be
223+
released in the ``A.B+1`` cycle.
220224

221-
The last part of a release cycle is spent fixing bugs -- no new features will
222-
be accepted during this time. We'll try to release a beta release one month
223-
after the alpha and a release candidate one month after the beta.
225+
Translation string freeze / Release candidate release
226+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
227+
228+
If there is still a consistent stream of release blockers coming in at the
229+
planned release candidate date, a beta 2 will be released to encourage further
230+
testing and the release candidate date will be pushed out ~1 month.
224231

225232
The release candidate marks the string freeze, and it happens at least two
226-
weeks before the final release. After this point, new translatable strings
227-
must not be added.
233+
weeks before the final release. Translators can then submit updated
234+
translations for inclusion in the final release. After this point, new
235+
translatable strings must not be added.
236+
237+
After the release candidate, only release blockers and documentation fixes are
238+
backported.
239+
240+
Final release
241+
~~~~~~~~~~~~~
228242

229-
During this phase, mergers will be more and more conservative with backports,
230-
to avoid introducing regressions. After the release candidate, only release
231-
blockers and documentation fixes should be backported.
243+
Ideally, the final release will ship two weeks after the last release
244+
candidate.
232245

233-
In parallel to this phase, ``main`` can receive new features, to be released
234-
in the ``A.B+1`` cycle.
246+
If there are major bugs still being found 2 weeks after the release candidate,
247+
there will be a decision on how to proceed (likely another release candidate
248+
would be issued and the final release date will be pushed out).
235249

236250
Bug-fix releases
237251
----------------

0 commit comments

Comments
 (0)