@@ -295,7 +295,7 @@ The following figure illustrates the first part of the terminology:
295295
296296*Codec *
297297
298- The list of *codecs * specified for an array _ determine the encoded byte
298+ The list of *codecs * specified for an array _ determines the encoded byte
299299 representation of each chunk in the store _.
300300
301301.. _metadata document :
@@ -632,12 +632,9 @@ mandatory names:
632632^^^^^^^^^^
633633
634634 Specifies a list of codecs to be used for encoding and decoding chunks. The
635- value must be an array of objects, each object containing a member with
636- ``name `` whose value is a string referring to a v3 codec specification. The
637- codec object may also contain a ``configuration `` object which consists of
638- the parameter names and values as defined by the corresponding codec
639- specification. Since an ``array -> bytes `` codec must be specified, the
640- list cannot be empty.
635+ value MUST be an array of extension definitions as defined under TODO.
636+ Because ``codecs `` MUST contain an ``array
637+ -> bytes `` codec, the list cannot be empty (See :ref: `codecs <codecs >`).
641638
642639The following members are optional:
643640
@@ -1204,40 +1201,46 @@ the following procedure:
12041201
120512024. The chunk array ``A `` is equal to ``EC[0] ``.
12061203
1207- Specifying codecs
1208- -----------------
1204+ .. _codec-specification :
12091205
1210- To allow for flexibility to define and implement new codecs, this
1211- specification does not define any codecs, nor restrict the set of
1212- codecs that may be used. Each codec must be defined via a separate
1213- specification. In order to refer to codecs in array metadata
1214- documents, each codec must have a unique identifier, which is a URI
1215- that dereferences to a human-readable specification of the codec. A
1216- codec specification must declare the codec identifier, and describe
1206+ Core codecs
1207+ -----------
1208+
1209+ This spec defines a set of well-known codecs ("core codecs") which all Zarr implementations SHOULD implement in
1210+ order to ensure a minimal level of interoperability between Zarr implementations.
1211+ The list of core codecs is part of the Zarr v3 specification.
1212+ Changes to the list of core codecs MUST be made via the same protocol used for
1213+ changing the Zarr v3 specification. Changes to the list of core codecs SHOULD be made
1214+ in close collaboration with extant Zarr v3 implementations. A new core codec SHOULD be added to the
1215+ list when a sufficient number of Zarr implementations support or intend to support that codec.
1216+ An existing core codec SHOULD be removed from the list when a sufficient number of implementation
1217+ developers and Zarr users deem the codec worth removing, e.g. because of a technical flaw in the
1218+ algorithm underlying the codec.
1219+
1220+ Extension codecs
1221+ ----------------
1222+
1223+ To allow for flexibility to define and implement new codecs, the
1224+ list of codecs defined for an array MAY contain codecs which are
1225+ defined in separate specifications. In order to refer to codecs in array metadata
1226+ documents, each codec must have a unique identifier, which is either
1227+ a known "raw name" or as a URI as defined under :ref: `extensions_section `.
1228+ For ease of discovery, it is
1229+ recommended that codec specifications are contributed to the
1230+ registry of extensions (TODO).
1231+
1232+ A codec specification must declare the codec identifier, and describe
12171233(or cite documents that describe) the encoding and decoding algorithms
12181234and the format of the encoded data.
1219-
12201235A codec may have configuration parameters which modify the behaviour
12211236of the codec in some way. For example, a compression codec may have a
12221237compression level parameter, which is an integer that affects the
12231238resulting compression ratio of the data. Configuration parameters must
12241239be declared in the codec specification, including a definition of how
12251240configuration parameters are represented as JSON.
12261241
1227- The Zarr core development team maintains a repository of codec
1228- specifications, which are hosted alongside this specification in the
1229- `zarr-specs GitHub repository `_, and which are
1230- published on the `zarr-specs documentation Web site
1231- <https://zarr-specs.readthedocs.io/> `_. For ease of discovery, it is
1232- recommended that codec specifications are contributed to the
1233- zarr-specs GitHub repository. However, codec specifications may be
1234- maintained by any group or organisation and published in any location
1235- on the Web. For further details of the process for contributing a
1236- codec specification to the zarr-specs GitHub repository, see
1237- `ZEP 0 <https://zarr.dev/zeps/active/ZEP0000.html >`_ which describes
1238- the process for Zarr specification changes.
1239-
1240- Further details of how codecs are configured for an array are given in the `Array metadata `_ section.
1242+ Further details of how codecs are configured for an array are given in the
1243+ `Array metadata `_ section.
12411244
12421245Stores
12431246======
0 commit comments