Skip to content

Commit 6c1a027

Browse files
committed
Reduce to minimal change
1 parent 97c483b commit 6c1a027

File tree

1 file changed

+17
-93
lines changed

1 file changed

+17
-93
lines changed

docs/v3/core/index.rst

Lines changed: 17 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -1564,80 +1564,34 @@ of the explicit use of :ref:`extension-points`.
15641564
Extension naming
15651565
----------------
15661566

1567-
The `name` field of an extension is an identifier taking one of two forms:
1568-
**registered names** (as simple strings) and **unregistered names** (as URIs).
1569-
1570-
Implementations SHOULD be able to resolve multiple names to the same
1571-
implementation to support unregistered names which are subsequently registered.
1567+
The `name` field of an extension is an identifier that has been registered
1568+
prior to release in any implementation within the `zarr-extensions`_ Github
1569+
repository, where extensions and their specification are listed. The Zarr
1570+
Steering Council or by delegation a maintainer team reserves the right to
1571+
refuse name assignment at its own discretion.
15721572

15731573
.. _extension-naming-registered-names:
15741574

1575-
Registered names
1576-
^^^^^^^^^^^^^^^^
1577-
1578-
Registered names consist of a single string that is unique within the Zarr ecosystem, with no prefix.
1575+
Registered names consist of a single string that is unique within the Zarr ecosystem.
15791576
Registered names are intended for well-known extensions aimed at broad adoption and maximum interoperability.
15801577
Registered names are unique and immutable.
1578+
15811579
Registered names MUST start with one lower case letter a-z and then be followed
15821580
by only lower case letters a-z, numerals 0-9, underscores, dots and dashes.
15831581

1584-
Prior to release in any implementation,
1585-
registered names MUST be assigned within a central repository, `zarr-extensions`_
1586-
a Github repository, where extensions and their specification are listed.
1587-
The Zarr Steering Council or by delegation a
1588-
maintainer team reserves the right to refuse name assignment at its own
1589-
discretion.
1590-
15911582
- **Accepted regex:** ``^[a-z][a-z0-9-_.]+$``
15921583
- **Valid examples:**
1593-
- ``zstd``
1594-
- ``numcodecs.adler32``
1584+
- ``zstd``
1585+
- ``numcodecs.adler32``
15951586
- **Invalid examples:**
1596-
- ``foo/bar``
1597-
- ``foo:bar``
1598-
1599-
.. _extension-naming-unregistered-names:
1600-
1601-
Unregistered names
1602-
^^^^^^^^^^^^^^^^^^
1603-
1604-
Unregistered names are intended for private extensions and for experimental and development purposes.
1605-
1606-
Unregistered names are not centrally managed and MAY be used by any extension without coordination.
1607-
1608-
Unregistered names MUST be URIs, which are prefixed with a scheme beginning
1609-
with a letter and followed by any number of letters, numbers, plus symbols,
1610-
dashes or dots and then followed by a colon.
1611-
The use of URI names ensures that unregistered extensions will never conflict with or override registered extensions.
1612-
1613-
- **Identifying regex:** ``^([a-z][a-z0-9-_]+\.)+[a-z][a-z0-9-_]+:``
1614-
1615-
URIs (`Uniform Resource Identifiers <https://en.wikipedia.org/wiki/Uniform_Resource_Identifier>`_)
1616-
are a well-known mechanism to identify abstract or phyiscal resources and extension authors are
1617-
encouraged to explore further documentation on which identifiers might best express their intent.
1587+
- ``foo/bar``
1588+
- ``foo:bar``
16181589

1619-
Aware that not all extension developers will want to immediately register a name,
1620-
the goal of using URI identifiers is to provide a large and flexible namespace which
1621-
balances the needs of developers building new extensions with a extensible mechanism
1622-
which the Zarr community can make use of in the years to come.
1623-
1624-
URLs (`Uniform Resource Locators <https://en.wikipedia.org/wiki/URL>`_) are one class of URIs which
1625-
provide a mechanism for resolving resources.
1626-
In previous versions of the v3 spec, the name of an extension was required to
1627-
be a URI that dereferences to a human-readable codec specification, i.e. a URL.
1628-
That is now discouraged for new extensions, though, for backwards compatibility
1629-
with existing extensions, URLs names are still permitted.
1630-
1631-
Instead, new unregistered extension names SHOULD use the [Tag URI scheme](https://datatracker.ietf.org/doc/html/rfc4151).
1632-
The Tag URI scheme has four principal requirements:
1633-
> - Identifiers are likely to be unique across space and time, and come from a practically inexhaustible supply.
1634-
> - Identifiers are relatively convenient for humans to mint (create), read, type, remember etc.
1635-
> - No central registration is necessary, at least for holders of domain names or email addresses; and there is negligible cost to mint each new identifier.
1636-
> - The identifiers are independent of any particular resolution scheme.
1637-
1638-
These requirements are aligned well with the needs of Zarr extension developers.
1639-
1640-
An example of a Tag URI for a Zarr extension is `tag:[email protected],2025-03:experimental-new-dtype`.
1590+
.. note::
1591+
In previous versions of the v3 spec, the name of an extension was required
1592+
to be a URI. That is now discouraged for new extensions, though, for
1593+
backwards compatibility with existing extensions, URIs names are still
1594+
permitted.
16411595

16421596
.. _extension-guidance:
16431597

@@ -1647,26 +1601,6 @@ Guidance for extension authors
16471601
*This section is non-normative and provides assistance for the authors of
16481602
extensions, especially those who are just getting started.*
16491603

1650-
Recognizing that there are diverse considerations in choosing an extension
1651-
name, guidance is provided below based on generic scenarios. Extension authors
1652-
who are still unsure of how best to choose a name are welcome to open an issue
1653-
on the zarr-specs repository.
1654-
1655-
* **Local development**: Authors looking to define a name for local development
1656-
purposes should prefix their extensions with ``urn:x-``. This prefix defines
1657-
an "experimental" name. As such an extension matures, authors might consider
1658-
registering a new name for it. Implementations should check both for the
1659-
unregistered as well as the registered named.
1660-
1661-
* **Proprietary extensions**: Authors looking to create proprietary extensions
1662-
for internal, non-public use are encouraged to use a Tag URI. For example
1663-
``tag:mycompany.com,2025-03-27:top-secret``.
1664-
1665-
* **Complete opaqueness**: Authors looking for a prefix which is communicates
1666-
*nothing* to implementations MAY use the prefix ``urn:uuid:...`` following by
1667-
following by a valid UUID (`Universally Unique Identifier
1668-
<https://en.wikipedia.org/wiki/Universally_unique_identifier>`_).
1669-
16701604
The Zarr maintainers endeavor to make the registration of names as
16711605
straight-forward as possible. We encourage all authors to make use of the extensions
16721606
repository to prevent duplicate efforts across the community where possible.
@@ -1680,20 +1614,10 @@ repository to prevent duplicate efforts across the community where possible.
16801614
data or widely distributed data should consider registering all extensions in
16811615
the extension registry to increase the long-term maintainability of the data.
16821616

1683-
.. note::
1684-
The simple form of the registered names can be thought of as a short-hand
1685-
for a URN prefixed with ``urn:zarr:``. Formal registration with
1686-
`IANA <https://www.iana.org/>`_ will not change the validity of the simple form.
1687-
16881617
Extension versioning
16891618
--------------------
16901619

1691-
Extensions with **registered names** SHOULD follow the
1692-
compatibility and versioning v3 `stability policy`_.
1693-
1694-
For extensions with **unregistered names**, there are no guarantees in terms of
1695-
versioning or compatibility. However, preserving backwards-compatibility is
1696-
strongly encouraged.
1620+
Registered extensions SHOULD follow the compatibility and versioning `stability policy`_.
16971621

16981622
Extension example
16991623
-----------------

0 commit comments

Comments
 (0)