Skip to content

Commit

Permalink
RFC: Meta Spec v2
Browse files Browse the repository at this point in the history
Add a new RFC for Meta Spec v2. Based on the [PGXN Meta Sketch] and
additional research. Notable differences from v1:

*   Introduce the term "package" separate from "distribution". The
    "package" is the bundle of objects being distributed as a…package.
*   Use only one version for the entire distribution, rather than
    separate versions for each extension included in the distribution.
    This allows the deletion of the notes on comparing versions.
*   Make "Source Distribution" the formal term, but mostly refer to it
    as "Distribution". Will be distinguished from binary distributions
    that ship with their own metadata (see #2).
*   Use JSON data types as the base types instead of generic "list" and
    "map" types.
*   Add "Path", "purl", and "Platform" types
*   Use SPDX License Expressions instead of Perl Software::License-based
    structures.
*   Use the term "property" to describe object key/value pairs, to align
    with JSON Schema.
*   Use an array of objects to describe maintainers.
*   Replace the `provides` property with `contents`, with support for
    multiple kinds of PostgreSQL extensions, including TLEs, loadable
    modules, and background workers.
*   Move the `tags` property to the new `classifications` object, and
    add support for curated categories borrowed from [Trunk].
*   Replace `no_index` with `ignore` and use the gitignore format
    instead of separate lists of files and directories.
*   Rename `prereqs` to `packages` and move it into the new
    `dependencies` property, which also has `postgres`, `pipeline`,
    `platforms`, and `variations` properties. Use [purls]. to specify
    dependencies, so that any supported packaging dependency can be
    specified, as well as PGXN packages and Postgres core extensions and
    tools.
*   Remove `release_status`; we'll instead depend on [SemVer] to
    indicate pre-releases.
*   Simplify the `resources` object and add `badges` to it.
*   Add the `artifacts` property, so the extension author can include
    links to other packages or sources for a release.

Also configure `#` to hide a line in `json` code blocks and use it to
encode proper JSON objects without showing the surrounding braces.
Readers can hit the eye button that appears on hover to make the hidden
lines appear.

[PGXN Meta Sketch]: https://justatheory.com/2024/03/rfc-pgxn-metadata-sketch/
[Trunk]: https://pgt.dev
[purls]: https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rs
[SemVer] https://semver.org
  • Loading branch information
theory committed Jul 11, 2024
1 parent 6c6f750 commit 7f30c48
Show file tree
Hide file tree
Showing 3 changed files with 1,213 additions and 0 deletions.
3 changes: 3 additions & 0 deletions book.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,6 @@ heading-split-level = 0

[output.html.playground]
runnable = false

[output.html.code.hidelines]
json = "#"
3 changes: 3 additions & 0 deletions text/0001-meta-spec-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
* **Category:** Packaging
* **Pull Request:** [pgxn/rfcs#1](https://github.com/pgxn/rfcs/pull/1)

> **Note:** This RFC has been superseded by [RFC-0](0000-meta-spec-v2.md).
> However, it remains fully supported by the PGXN toolchain.
Name
====

Expand Down
Loading

0 comments on commit 7f30c48

Please sign in to comment.