You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue tracks writing the registry spec across a complete table of contents. Current progress:
Abstract
The untitled first 1-2 paragraphs, which explain what the registry is and what major concepts the spec will cover.
1. Introduction
A longer summary of the registry, why it came to exist, its high-level design. Akin to the introduction to a book (in spirit, not in length!).
2. Package Publishing
A simple walkthrough of how a package is published, possibly including diagrams. Includes example JSON payloads going through the registry Addition operation, an example of the input manifest, the output metadata and package sets entry. All extremely minimal, but giving a sense of the data interchange beginning with the package manager and ending with the registry metadata, index, and storage backend.
3. Schemas: Data Type Representations Used in the Registry
Types alone can't capture the set of invariants applied to data processed by the registry, so this section provides the full set of rules for common data types.
4. Registry Infrastructure
A section specifying how the registry should relate to other infrastructure and the responsibility of that infrastructure as it relates to the registry.
5. Registry Operations
The big section! This builds on everything provided so far and summarizes the role of the API and its major operations. Each operation is detailed along with its failure modes.
6. Post-Publishing Operations
Summarizes what operations the registry will take after a package is added / published, transferred, or unpublished. This section could be folded back into the previous section, but I worry that doing so would make that section too long and unfocused.
7. Non-JavaScript Backends
A section summarizing the aliasing solution used to support alternate backends, along with a status note stating that this is currently un-implemented.
8. Package Managers
Specifies how package managers should relate to the registry, ie. open a GitHub issue with a payload according to the Operation data type, get package information from registry-index, download packages from the storage backend, etc.
9. Policies
Policies followed by the registry (trustees, name squatting, package sets)
Note that this spec is just one of several documents we should provide to registry users, including:
The registry spec, located in registry-dev, intended for registry developers & related development (package managers, package sets consumers, etc.)
The registry user guide, located in registry, intended for package authors who want to know the broad concepts of the registry and package sets (though they should largely defer to their package manager)
Various policies, such as the registry trustees policy and legal policies like DMCA takedown notices, located in registry
The trustees document listing out the Registry trustees, located in purescript/governance and managed by the core team
A roadmap document, located in registry-dev, which lists out items that are in the spec but not yet implemented
This issue only concerns the registry spec. It doesn't include information better located in other documents (e.g. a step-by-step guide to publishing packages).
Second, this is a draft table of contents only. I'd like to get to consensus on what the spec should include and then tackle it section-by-section. Once there's consensus this issue can become a tracking issue.
The text was updated successfully, but these errors were encountered:
This issue tracks writing the registry spec across a complete table of contents. Current progress:
The untitled first 1-2 paragraphs, which explain what the registry is and what major concepts the spec will cover.
A longer summary of the registry, why it came to exist, its high-level design. Akin to the introduction to a book (in spirit, not in length!).
A simple walkthrough of how a package is published, possibly including diagrams. Includes example JSON payloads going through the registry
Addition
operation, an example of the input manifest, the output metadata and package sets entry. All extremely minimal, but giving a sense of the data interchange beginning with the package manager and ending with the registry metadata, index, and storage backend.Types alone can't capture the set of invariants applied to data processed by the registry, so this section provides the full set of rules for common data types.
A section specifying how the registry should relate to other infrastructure and the responsibility of that infrastructure as it relates to the registry.
The big section! This builds on everything provided so far and summarizes the role of the API and its major operations. Each operation is detailed along with its failure modes.
Summarizes what operations the registry will take after a package is added / published, transferred, or unpublished. This section could be folded back into the previous section, but I worry that doing so would make that section too long and unfocused.
A section summarizing the aliasing solution used to support alternate backends, along with a status note stating that this is currently un-implemented.
Specifies how package managers should relate to the registry, ie. open a GitHub issue with a payload according to the
Operation
data type, get package information fromregistry-index
, download packages from the storage backend, etc.Policies followed by the registry (trustees, name squatting, package sets)
Note that this spec is just one of several documents we should provide to registry users, including:
registry-dev
, intended for registry developers & related development (package managers, package sets consumers, etc.)registry
, intended for package authors who want to know the broad concepts of the registry and package sets (though they should largely defer to their package manager)registry
trustees
document listing out the Registry trustees, located inpurescript/governance
and managed by the core teamroadmap
document, located inregistry-dev
, which lists out items that are in the spec but not yet implementedThis issue only concerns the registry spec. It doesn't include information better located in other documents (e.g. a step-by-step guide to publishing packages).
Second, this is a draft table of contents only. I'd like to get to consensus on what the spec should include and then tackle it section-by-section. Once there's consensus this issue can become a tracking issue.
The text was updated successfully, but these errors were encountered: