Skip to content

Commit d3f7f8f

Browse files
committed
docs: add experimental API policy to contributing guide
1 parent 19a383f commit d3f7f8f

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

docs/contributing.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,29 @@ The Zarr library is an implementation of a file format standard defined external
311311

312312
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 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. 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.
313313

314+
315+
## Experimental API policy
316+
317+
The `zarr.experimental` namespace contains features that are under active development and may change without notice. When contributing to or depending on experimental features, please keep the following in mind:
318+
319+
### For contributors
320+
321+
When adding a new feature to `zarr.experimental`:
322+
323+
1. Place the feature under `src/zarr/experimental/` and export it from `src/zarr/experimental/__init__.py`.
324+
2. Document the feature in `docs/user-guide/experimental.md` and note clearly that it is experimental.
325+
3. Add a changelog entry categorized as `feature`.
326+
327+
We aim to either **promote** or **remove** experimental features within **6 months** of their addition. To promote a feature to stable:
328+
329+
1. Move it from `zarr.experimental` to the appropriate stable module.
330+
2. Keep a deprecated re-export in `zarr.experimental` for one minor release.
331+
3. Update the documentation to reflect the stable location.
332+
333+
### For users
334+
335+
Features in `zarr.experimental` carry no stability guarantees. They may be changed or removed in any release, including patch releases. If you depend on an experimental feature, pin your `zarr-python` version accordingly.
336+
314337
## Release procedure
315338

316339
Open an issue on GitHub announcing the release using the release checklist template:

0 commit comments

Comments
 (0)