Skip to content

Commit 312bd73

Browse files
committed
Review of primary phase 1 text
1 parent 3538de5 commit 312bd73

File tree

1 file changed

+22
-17
lines changed

1 file changed

+22
-17
lines changed

draft/ZEP0009.md

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,13 @@ This proposal has three phases.
6262
The [first phase](#Phase-1-Immediate-clarifications) clarifies that extensions
6363
can be created by the community without the ZEP process. Extensions with
6464
URI-based names can be created without any further coordination and extensions
65-
with raw names only need to get the name registered in the `zarr-developers`
66-
Github organization. The process for registering will be a lightweight PR-based
67-
process.
65+
with raw names only need to get the name registered in the
66+
[`zarr-extensions` Github repository](https://github.com/zarr-developers/zarr-extensions).
67+
The process for registering will be a lightweight PR-based process.
6868

6969
The naming mechanism as well as clarifications in the core spec documented will
70-
be implemented by the ZSC through a PR against the zarr-specs repository for
70+
be implemented by the ZSC through
71+
[PR330](https://github.com/zarr-developers/zarr-specs/pull/330) in the zarr-specs repository for
7172
discussion concurrently with this ZEP. The changes we are proposing, marked
7273
with a "🛠️" below, are interpretations of the current Zarr v3 core spec as well
7374
as additions that are in-line with the spec evolution policy of the Zarr core
@@ -92,7 +93,7 @@ the adoption of extensions into the core spec.
9293
## Definitions
9394

9495
- "Core" refers to the Zarr v3 core specification as defined in the document
95-
https://zarr-specs.readthedocs.io/en/latest/v3/core/v3.0.html and not
96+
<https://zarr-specs.readthedocs.io/en/latest/v3/core/v3.0.html> and not
9697
necessarily if something is a MUST for implementations.
9798
- "Metadata" is the Zarr metadata as stored in `zarr.json` files for arrays and
9899
groups.
@@ -102,10 +103,10 @@ the adoption of extensions into the core spec.
102103
storage transformers.
103104
- "Extension points" are locations within metadata where extension-related
104105
metadata can be found. Current extension points are listed in the core spec,
105-
e.g. `codecs`, `data_type`. As part of this proposal, we intend to add another
106-
general-purpose extension point called [`extensions`](#Extension-points).
106+
e.g. `codecs`, `data_type`. As part of the [second phase](#Phase-2-New-extension-points),
107+
we intend to add another general-purpose extension point called [`extensions`](#Extension-points).
107108
- "Extension maintainers" are a person or a team that is responsible for
108-
creating and maintaining an extension.## Rollout and next steps
109+
creating and maintaining an extension.
109110

110111
## Phase 1: Immediate clarifications
111112

@@ -128,9 +129,10 @@ raw names and URI-based.
128129
- **Acceptd regex:** `^[a-z0-9-_.]+$`
129130

130131
2. **URI-based names** can be used by anyone without further coordination
131-
though the assumption is that users reasonably "own" the URI.
132+
though the assumption is that users reasonably "own" the URI. Users MAY
133+
make use of a persistent redirecting URL like [PURL](https://purl.archive.org/).
132134
URIs have been chosen due to their potential for being self-documenting and
133-
*strong recommend* that the URL SHOULD resolve to a human-readable explanation of the extension, but
135+
*strongly recommend* that the URL SHOULD resolve to a human-readable explanation of the extension, but
134136
implementations SHOULD NOT attempt to resolve the URL during processing.
135137
There are no guarantees in terms of versioning or compatibility. However,
136138
preserving backwards-compatibility is strongly encouraged. See the
@@ -148,7 +150,7 @@ under the codecs section:
148150
> to codecs in array metadata documents, each codec must have a unique
149151
> identifier, which is a URI that dereferences to a human-readable
150152
> specification of the codec."
151-
> (https://zarr-specs.readthedocs.io/en/latest/v3/core/v3.0.html#specifying-codecs).
153+
> (<https://zarr-specs.readthedocs.io/en/latest/v3/core/v3.0.html#specifying-codecs>).
152154
153155
🛠️ This proposal would drop the MUST requirement on the dereferencing of the
154156
URI to a SHOULD and more widely specify that implemenations MAY use URI-based
@@ -174,11 +176,13 @@ Objects have the following keys:
174176
```
175177

176178
If such an object is present, the field `must_understand` is implicitly set to
177-
`True` and an object can explicitly set `must_understand=False` if
179+
`True`. Implementations which encounter a `must_understand` extension that they
180+
have not implemented MUST raise an exception.
181+
An extension object can explicitly set `must_understand=False` if
178182
implementations can ignore its presence, following the current guidelines in
179183
the v3 specification.
180184

181-
Instead of extension objects, short-hand names may continue to be used if no
185+
Instead of extension objects, short-hand names MAY continue to be used if no
182186
configuration metadata is required. They would be equivalent to extension
183187
objects with just a `name` key. This is in-line with
184188
[the current wording of the spec](https://zarr-specs.readthedocs.io/en/latest/v3/core/v3.0.html#id11).
@@ -189,8 +193,10 @@ There is no strict requirement for extensions to have a formal specification.
189193
However, for adoption in the community it is STRONGLY RECOMMENDED to write a
190194
specification.
191195

192-
For extensions with raw names, there will be the [zarr-extensions](https://github.com/zarr-developers/zarr-extensions) repository to either publish the specifications
193-
directly or link to another location. For extensions with URI-based names, it
196+
For an extension with a raw name, the
197+
[zarr-extensions](https://github.com/zarr-developers/zarr-extensions)
198+
repository SHOULD be used to either publish the specification
199+
directly or link to another location which does so. For extensions with URI-based names, it
194200
is RECOMMENDED to publish the specification under the URI of the extension.
195201

196202
### Extension points
@@ -226,8 +232,7 @@ and would be declared as "core" extensions under this proposal.
226232
* Chunk key encoding: `default`, `v2`
227233
* Storage transformers: (none)
228234

229-
230-
### Example
235+
### Example
231236

232237
The following example represents an Array showing many of the proposed changes
233238
described above:

0 commit comments

Comments
 (0)