@@ -184,54 +184,68 @@ Release process
184
184
Django uses a time-based release schedule, with feature releases every eight
185
185
months or so.
186
186
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.
189
191
190
- Release cycle
191
- -------------
192
+ Feature release schedule and stages
193
+ -----------------------------------
192
194
193
- Each release cycle consists of three parts:
195
+ Active development / Pre-feature freeze
196
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
194
197
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.
197
200
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 .
201
204
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
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
204
207
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.
207
211
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``.
211
213
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
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
214
216
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.
217
221
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.
220
224
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.
224
231
225
232
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
+ ~~~~~~~~~~~~~
228
242
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.
232
245
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).
235
249
236
250
Bug-fix releases
237
251
----------------
0 commit comments