Skip to content

Commit c811ab9

Browse files
committed
edits to address @jakirkham comments
1 parent 2769be2 commit c811ab9

File tree

1 file changed

+36
-23
lines changed

1 file changed

+36
-23
lines changed

docs/contributing.rst

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ Asking for help
99
---------------
1010

1111
If you have a question about how to use Zarr, please post your question on
12-
StackOverflow using the `"zarr" tag <https://stackoverflow.com/questions/tagged/zarr>`_
13-
. If you don't get a response within a day or two, feel free to raise a `GitHub issue
12+
StackOverflow using the `"zarr" tag <https://stackoverflow.com/questions/tagged/zarr>`_.
13+
If you don't get a response within a day or two, feel free to raise a `GitHub issue
1414
<https://github.com/zarr-developers/zarr/issues/new>`_ including a link to your StackOverflow
1515
question. We will try to respond to questions as quickly as possible, but please bear
1616
in mind that there may be periods where we have limited time to answer questions
@@ -111,7 +111,7 @@ It's best to create a new, separate branch for each piece of work you want to do
111111
git fetch upstream
112112
git checkout -b shiny-new-feature upsteam/master
113113

114-
This changes your working directory to the shiny-new-feature branch. Keep any changes in
114+
This changes your working directory to the 'shiny-new-feature' branch. Keep any changes in
115115
this branch specific to one bug or feature so it is clear what the branch brings to
116116
Zarr.
117117

@@ -192,7 +192,7 @@ Documentation
192192

193193
Docstrings for user-facing classes and functions should follow the `numpydoc
194194
<https://github.com/numpy/numpy/blob/master/doc/HOWTO_DOCUMENT.rst.txt>`_ standard,
195-
including sections for Parameters and Examples. All examples should run as doctests
195+
including sections for Parameters and Examples. All examples should run and pass as doctests
196196
under Python 3.6 only.
197197

198198
Zarr uses Sphinx for documentation, hosted on readthedocs.org. Documentation is
@@ -218,10 +218,9 @@ contributors.
218218
Merging pull requests
219219
~~~~~~~~~~~~~~~~~~~~~
220220

221-
If at all possible, pull requests submitted by an external contributor should be
222-
reviewed and approved by all core developers before being merged. Pull requests
223-
submitted by a core developer should be reviewed and approved by all other core
224-
developers before being merged.
221+
Pull requests submitted by an external contributor should be reviewed and approved by at least
222+
one core developers before being merged. Ideally, pull requests submitted by a core developer
223+
should be reviewed and approved by at least one other core developers before being merged.
225224

226225
Pull requests should not be merged until all CI checks have passed (Travis, AppVeyor,
227226
Coveralls) against code that has had the latest master merged in.
@@ -232,33 +231,45 @@ Compatibility and versioning policies
232231
Because Zarr is a data storage library, there are two types of compatibility to
233232
consider: API compatibility and data format compatibility.
234233

235-
Here we consider all functions, classes and methods that do not begin with an
236-
underscore as part of the Zarr public API. Any change to the public API that does **not**
237-
break existing third party code importing Zarr, or cause third party code to behave in
238-
a different way, is a **backwards-compatible API change**. For example, adding a new
239-
function, class or method is usually a backwards-compatible change. However, removing a
240-
function, class or method; removing an argument to a function or method; adding a
241-
required argument to a function or method; or changing the behaviour of a function or
242-
method, are examples of **backwards-incompatible API changes**.
234+
API compatibility
235+
"""""""""""""""""
236+
237+
All functions, classes and methods that are included in the API
238+
documentation (files under ``docs/api/*.rst``) are considered as part of the Zarr **public API**,
239+
except if they have been documented as an experimental feature, in which case they are part of
240+
the **experimental API**.
241+
242+
Any change to the public API that does **not** break existing third party
243+
code importing Zarr, or cause third party code to behave in a different way, is a
244+
**backwards-compatible API change**. For example, adding a new function, class or method is usually
245+
a backwards-compatible change. However, removing a function, class or method; removing an argument
246+
to a function or method; adding a required argument to a function or method; or changing the
247+
behaviour of a function or method, are examples of **backwards-incompatible API changes**.
243248

244249
If a release contains no changes to the public API (e.g., contains only bug fixes or
245250
other maintenance work), then the micro version number should be incremented (e.g.,
246-
2.2.0 -> 2.2.1). If a release contains API changes, but all API changes are
251+
2.2.0 -> 2.2.1). If a release contains public API changes, but all changes are
247252
backwards-compatible, then the minor version number should be incremented
248-
(e.g., 2.2.1 -> 2.3.0). If a release contains any backwards-incompatible API changes,
253+
(e.g., 2.2.1 -> 2.3.0). If a release contains any backwards-incompatible public API changes,
249254
the major version number should be incremented (e.g., 2.3.0 -> 3.0.0).
250255

251-
Exceptions can be made for any function, class or method which has been documented as
252-
an experimental feature, i.e., backwards-incompatible changes can be included in a
253-
minor release, although this should be avoided wherever possible.
256+
Backwards-incompatible changes to the experimental API can be included in a minor release,
257+
although this should be minimised if possible. I.e., it would be preferable to save up
258+
backwards-incompatible changes to the experimental API to be included in a major release, and to
259+
stabilise those features at the same time (i.e., move from experimental to public API), rather than
260+
frequently tinkering with the experimental API in minor releases.
261+
262+
Data format compatibility
263+
"""""""""""""""""""""""""
254264

255265
The data format used by Zarr is defined by a specification document, which should be
256266
platform-independent and contain sufficient detail to construct an interoperable
257267
software library to read and/or write Zarr data using any programming language. The
258268
latest version of the specification document is available from the :ref:`spec` page.
269+
259270
Here, **data format compatibility** means that all software libraries that implement a
260271
particular version of the Zarr storage specification are interoperable, in the sense
261-
that data written by any one library could be read by all others. It is obviously
272+
that data written by any one library can be read by all others. It is obviously
262273
desirable to maintain data format compatibility wherever possible. However, if a change
263274
is needed to the storage specification, and that change would break data format
264275
compatibility in any way, then the storage specification version number should be
@@ -275,7 +286,9 @@ implements storage spec version 3, then the next library release should have ver
275286
number 3.0.0. Note however that the major version number of the Zarr library may not
276287
always correspond to the spec version number. For example, Zarr versions 2.x, 3.x, and
277288
4.x might all implement the same version of the storage spec and thus maintain data
278-
format compatibility, although they will not maintain API compatibility.
289+
format compatibility, although they will not maintain API compatibility. The version number
290+
of the storage specification that is currently implemented is stored under the
291+
``zarr.meta.ZARR_FORMAT`` variable.
279292

280293
Note that the Zarr test suite includes a data fixture and tests to try and ensure that
281294
data format compatibility is not accidentally broken. See the

0 commit comments

Comments
 (0)