@@ -12,20 +12,51 @@ Release guide
1212 A guide for developers who are doing a Matplotlib release.
1313
1414
15- .. note ::
1615
17- This assumes that a read-only remote for the canonical repository is
18- ``remote `` and a read/write remote is ``DANGER ``
16+ Versioning Scheme
17+ =================
18+
19+ Maplotlib follows the `Intended Effort Versioning (EffVer) <https://jacobtomlinson.dev/effver/ >`_
20+ versioning scheme: *macro.meso.micro *.
21+
22+
23+ *macro *
24+ A release that we expect a large effort from our users to upgrade to. The v1 to v2 transition
25+ included a complete overhaul of the default styles and the v2 to v3 transition involved
26+ dropping support for Python 2.
27+
28+ Future macro versions would include changes of a comparable scale that can not be done
29+ incrementally in meso releases.
30+
31+ *meso *
32+ A release that we expect some effort from our users to upgrade to. We target a
33+ *Meso * release every 6 months. These release are primarily intended to release
34+ new features to our users, however they also contain intentional feature deprecations and
35+ removals per :ref: `our policy <deprecation-guidelines >`.
36+
37+ *micro *
38+ A release that we expect users to require little to no effort to upgrade to. Per
39+ our :ref: `backport-strategy ` we only backport bug fixes to the maintenance branch.
40+ We expect minimal impact on users other than possibly breaking work arounds to a
41+ fixed bug or `bugs being used as features <https://xkcd.com/1172/ >`_.
42+
43+ These are released as-needed, but typically every 1-2 months between meso releases.
1944
2045
2146.. _release_feature_freeze :
2247
2348Making the release branch
2449=========================
2550
26- When a new minor release (vX.Y.0) is approaching, a new release branch must be made.
51+ .. note ::
52+
53+ This assumes that a read-only remote for the canonical repository is
54+ ``remote `` and a read/write remote is ``DANGER ``
55+
56+
57+ When a new meso release (vX.Y.0) is approaching, a new release branch must be made.
2758When precisely this should happen is up to the release manager, but this point is where
28- most new features intended for the minor release are merged and you are entering a
59+ most new features intended for the meso release are merged and you are entering a
2960feature freeze (i.e. newly implemented features will be going into vX.Y+1).
3061This does not necessarily mean that no further changes will be made prior to release,
3162just that those changes will be made using the backport system.
@@ -50,12 +81,12 @@ Micro versions should instead read::
5081 on-merge: backport to v3.7.x
5182
5283Check all active milestones for consistency. Older milestones should also backport
53- to higher minor versions (e.g. ``v3.6.3 `` and ``v3.6-doc `` should backport to both
84+ to higher meso versions (e.g. ``v3.6.3 `` and ``v3.6-doc `` should backport to both
5485``v3.6.x `` and ``v3.7.x `` once the ``v3.7.x `` branch exists and while PR backports are
5586still targeting ``v3.6.x ``)
5687
57- Create the milestone for the next-next minor release (i.e. ``v3.9.0 ``, as ``v3.8.0 ``
58- should already exist). While most active items should go in the next minor release,
88+ Create the milestone for the next-next meso release (i.e. ``v3.9.0 ``, as ``v3.8.0 ``
89+ should already exist). While most active items should go in the next meso release,
5990this milestone can help with longer term planning, especially around deprecation
6091cycles.
6192
@@ -142,15 +173,15 @@ are going to tag on and delete the doc branch on GitHub.
142173Update supported versions in Security Policy
143174--------------------------------------------
144175
145- When making major or minor releases, update the supported versions in the Security
176+ When making macro or meso releases, update the supported versions in the Security
146177Policy in :file: `SECURITY.md `.
147178
148- For minor version release update the table in :file: `SECURITY.md ` to specify that the
149- two most recent minor releases in the current major version series are supported.
179+ For meso version release update the table in :file: `SECURITY.md ` to specify that the
180+ two most recent meso releases in the current macro version series are supported.
150181
151- For a major version release update the table in :file: `SECURITY.md ` to specify that the
152- last minor version in the previous major version series is still supported. Dropping
153- support for the last version of a major version series will be handled on an ad-hoc
182+ For a macro version release update the table in :file: `SECURITY.md ` to specify that the
183+ last meso version in the previous macro version series is still supported. Dropping
184+ support for the last version of a macro version series will be handled on an ad-hoc
154185basis.
155186
156187Update release notes
@@ -159,7 +190,7 @@ Update release notes
159190What's new
160191^^^^^^^^^^
161192
162- *Only needed for major and minor releases. Bugfix releases should not have new
193+ *Only needed for macro and meso releases. Bugfix releases should not have new
163194features. *
164195
165196Merge the contents of all the files in :file: `doc/users/next_whats_new/ ` into a single
@@ -169,7 +200,7 @@ files.
169200API changes
170201^^^^^^^^^^^
171202
172- *Primarily needed for major and minor releases. We may sometimes have API
203+ *Primarily needed for macro and meso releases. We may sometimes have API
173204changes in bugfix releases. *
174205
175206Merge the contents of all the files in :file: `doc/api/next_api_changes/ ` into a single
@@ -181,7 +212,7 @@ Release notes TOC
181212
182213Update :file: `doc/users/release_notes.rst `:
183214
184- - For major and minor releases add a new section
215+ - For macro and meso releases add a new section
185216
186217 .. code :: rst
187218
@@ -207,7 +238,7 @@ Update version switcher
207238Update ``doc/_static/switcher.json ``:
208239
209240- If a bugfix release, :samp: `{ X } .{ Y } .{ Z } `, no changes are needed.
210- - If a major release, :samp: `{ X } .{ Y } .0 `, change the name of :samp: `name: { X } .{ Y+1 }
241+ - If a macro release, :samp: `{ X } .{ Y } .0 `, change the name of :samp: `name: { X } .{ Y+1 }
211242 (dev) ` and :samp: `name: { X } .{ Y } (stable) ` as well as adding a new version for the
212243 previous stable (:samp: `name: { X } .{ Y-1 } `).
213244
@@ -259,8 +290,8 @@ Finally, push the tag to GitHub::
259290
260291Congratulations, the scariest part is done!
261292This assumes the release branch has already been made.
262- Usually this is done at the time of feature freeze for a minor release (which often
263- coincides with the last patch release of the previous minor version)
293+ Usually this is done at the time of feature freeze for a meso release (which often
294+ coincides with the last micro release of the previous meso version)
264295
265296.. [# ] The tarball that is provided by GitHub is produced using `git archive `_.
266297 We use setuptools_scm _ which uses a format string in
@@ -298,7 +329,7 @@ with the ``v3.7-doc`` milestone to both the ``v3.7.x`` branch and the ``v3.7.0-d
298329 on-merge: backport to v3.7.0-doc
299330
300331Check all active milestones for consistency. Older doc milestones should also backport to
301- higher minor versions (e.g. ``v3.6-doc `` should backport to both ``v3.6.x `` and ``v3.7.x ``
332+ higher meso versions (e.g. ``v3.6-doc `` should backport to both ``v3.6.x `` and ``v3.7.x ``
302333if the ``v3.7.x `` branch exists)
303334
304335
0 commit comments