Skip to content

Commit 58effb9

Browse files
committed
linewrap and style
1 parent ac7ac72 commit 58effb9

File tree

1 file changed

+46
-24
lines changed

1 file changed

+46
-24
lines changed

docs/developers/contributing.rst

Lines changed: 46 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -272,51 +272,71 @@ Compatibility and versioning policies
272272

273273
Versioning
274274
""""""""""
275-
Versions of this library are identified by a triplet of integers with the form ``<major>.<minor>.<patch>``, for example 3.0.4. A release of ``zarr-python`` is associated with a new
276-
version identifier. That new identifier is generated by incrementing exactly one of the components of the previous version identifier by 1. When incrementing the ``major``
277-
component of the version identifier, the ``minor`` and ``patch`` components is reset to 0. When incrementing the minor component, the patch component is reset to 0.
278-
279-
Releases are classified by the library changes contained in that release. This classification determines which
280-
component of the version identifier is incremented on release.
281-
282-
* ``major`` releases (for example, ``2.18.0`` -> ``3.0.0``) are for major API changes that will require extensive adaptation efforts from many users and downstream projects.
275+
Versions of this library are identified by a triplet of integers with the form
276+
``<major>.<minor>.<patch>``, for example ``3.0.4``. A release of ``zarr-python`` is associated with a new
277+
version identifier. That new identifier is generated by incrementing exactly one of the components of
278+
the previous version identifier by 1. When incrementing the ``major`` component of the version identifier,
279+
the ``minor`` and ``patch`` components is reset to 0. When incrementing the minor component,
280+
the patch component is reset to 0.
281+
282+
Releases are classified by the library changes contained in that release. This classification
283+
determines which component of the version identifier is incremented on release.
284+
285+
* ``major`` releases (for example, ``2.18.0`` -> ``3.0.0``) are for changes that will
286+
require extensive adaptation efforts from many users and downstream projects.
283287
For example, breaking changes to widely-used user-facing APIs should only be applied in a major release.
284288

285289

286-
Users and downstream projects should carefully consider the impact of a major release before adopting it.
287-
In advance of a major release, developers should communicate the scope of the upcoming changes, and help users prepare for them.
290+
Users and downstream projects should carefully consider the impact of a major release before
291+
adopting it.
292+
In advance of a major release, developers should communicate the scope of the upcoming changes,
293+
and help users prepare for them.
294+
295+
* ``minor`` releases (or example, ``3.0.0`` -> ``3.1.0``) are for changes that do not require
296+
significant effort from most users or downstream downstream projects to respond to. API changes
297+
are possible in minor releases if the burden on users imposed by those changes is sufficiently small.
288298

289-
* ``minor`` releases (or example, ``3.0.0`` -> ``3.1.0``) are for minor changes that do not require significant effort from most users or downstream
290-
downstream projects to respond to. API changes are possible in minor releases if the burden on users imposed by those changes is sufficiently small.
291299
For example, a recently released API may need fixes or refinements that are breaking, but low impact
292300
due to the recency of the feature. Such API changes are permitted in a minor release.
293301

294302

295303
Minor releases are safe for most users and downstream projects to adopt.
296304

297305

298-
* ``patch`` releases (for example, ``3.1.0`` -> ``3.1.1``) are for changes that contain no breaking or behaviour changes for downstream projects or users. Examples of changes in a patch release are bugfixes and documentation improvements.
306+
* ``patch`` releases (for example, ``3.1.0`` -> ``3.1.1``) are for changes that contain no breaking
307+
or behaviour changes for downstream projects or users. Examples of changes suitable for a patch release are
308+
bugfixes and documentation improvements.
299309

300310

301311
Users should always feel safe upgrading to a the latest patch release.
302312

303-
Note that this versioning scheme is not consistent with `Semantic Versioning <https://semver.org/>`_. The Zarr library
304-
may release breaking changes in ``minor`` releases, or even ``patch`` releases under exceptional circumstances.
305-
But we should strive to avoid doing so. A better model for our versioning scheme is `Intended Effort Versioning <https://jacobtomlinson.dev/effver/>`_, or "EffVer".
306-
The guiding principle off EffVer is to categorize releases based on the *expected effort required to upgrade to that release*.
313+
Note that this versioning scheme is not consistent with `Semantic Versioning <https://semver.org/>`_.
314+
Contrary to SemVer, the Zarr library may release breaking changes in ``minor`` releases, or even
315+
``patch`` releases under exceptional circumstances. But we should strive to avoid doing so.
316+
317+
A better model for our versioning scheme is `Intended Effort Versioning <https://jacobtomlinson.dev/effver/>`_,
318+
or "EffVer". The guiding principle off EffVer is to categorize releases based on the *expected effort
319+
required to upgrade to that release*.
307320

308-
Zarr developers should make changes as smooth as possible for users. This means making backwards-compatible changes wherever possible.
309-
When a backwards-incompatible change is necessary, users should be notified well in advance, e.g. via informative deprecation warnings.
321+
Zarr developers should make changes as smooth as possible for users. This means making
322+
backwards-compatible changes wherever possible. When a backwards-incompatible change is necessary,
323+
users should be notified well in advance, e.g. via informative deprecation warnings.
310324

311325
Data format compatibility
312326
^^^^^^^^^^^^^^^^^^^^^^^^^
313327

314-
The Zarr library is an implementation of a file format standard defined externally -- see the `Zarr specifications website <https://zarr-specs.readthedocs.io>`_ for the list of Zarr file format specifications.
328+
The Zarr library is an implementation of a file format standard defined externally --
329+
see the `Zarr specifications website <https://zarr-specs.readthedocs.io>`_ for the list of
330+
Zarr file format specifications.
315331

316332

317-
If an existing Zarr format version changes, or a new version of the Zarr format is released, then the Zarr library will generally require changes. It is very likely that
318-
a new Zarr format will require extensive breaking changes to the Zarr library, and so support for a new Zarr format in the Zarr library will almost certainly come in new ``major`` release.
319-
When the Zarr library adds support for a new Zarr format, there may be a period of accelerated changes as developers refine newly added APIs and deprecate old APIs. In such a transitional phase breaking changes may be more frequent than usual.
333+
If an existing Zarr format version changes, or a new version of the Zarr format is released, then
334+
the Zarr library will generally require changes. It is very likely that a new Zarr format will
335+
require extensive breaking changes to the Zarr library, and so support for a new Zarr format in the
336+
Zarr library will almost certainly come in new ``major`` release.
337+
When the Zarr library adds support for a new Zarr format, there may be a period of accelerated
338+
changes as developers refine newly added APIs and deprecate old APIs. In such a transitional phase
339+
breaking changes may be more frequent than usual.
320340

321341

322342
Release procedure
@@ -360,5 +380,7 @@ pre-releases will be available under
360380
Post-release
361381
""""""""""""
362382

363-
- Review and merge the pull request on the `conda-forge feedstock <https://github.com/conda-forge/zarr-feedstock>`_ that will be automatically generated.
383+
- Review and merge the pull request on the
384+
`conda-forge feedstock <https://github.com/conda-forge/zarr-feedstock>`_ that will be
385+
automatically generated.
364386
- Create a new "Unreleased" section in the release notes

0 commit comments

Comments
 (0)