Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Meta Spec v2 #3

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
Open

RFC: Meta Spec v2 #3

wants to merge 10 commits into from

Commits on Jul 12, 2024

  1. RFC: Meta Spec v2

    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
    theory committed Jul 12, 2024
    Configuration menu
    Copy the full SHA
    e5e3837 View commit details
    Browse the repository at this point in the history
  2. New pass through RFC-3; various improvements:

    *   Add the "Package Name" type that disallows leading digits.
        [Discussion](#2 (comment)).
    *   Document the Number type and allow `0` as a valid value for a
        Version Range.
    *   Add the "Path Pattern" type and use it for the "ignore" property.
    *   Merge "License" into "License Expression"
    *   Rename "Version" to "SemVer", to distinguish it from any other
        versions used for dependencies.
    *   Make "Version Range" not-specific to SemVers, since it's used for
        all sorts of dependency version requirements. Also, disallow version
        truncation in Version Ranges, since different version formats will
        have different rules.
    *   Document that purl version expressions are valid but ignored.
    *   Fix various spelling, grammatical, syntax, and narrative errors and
        clumsiness.
    *   Update spec URLs to point to rfcs.pgxn.org.
    *   Rename `generated_by` to `producer`.
    *   Add question about preloading.
    *   Note quality binary distribution as sign of success.
    theory committed Jul 12, 2024
    Configuration menu
    Copy the full SHA
    e3bc4c6 View commit details
    Browse the repository at this point in the history
  3. Add missing links

    theory committed Jul 12, 2024
    Configuration menu
    Copy the full SHA
    f2e5360 View commit details
    Browse the repository at this point in the history

Commits on Jul 17, 2024

  1. Disallow dots (.) in terms

    Instead of having a separate "package name" type. A quick check of the
    PGXN database and [1000+ PostgreSQL EXTENSIONs] shows no existing
    extensions contain a dot. This will simplify parsing a package name from
    a semver in file names, since dots are required for semantic versions.
    
      [1000+ PostgreSQL EXTENSIONs]: https://gist.github.com/joelonsql/e5aa27f8cc9bd22b8999b7de8aee9d47
    theory committed Jul 17, 2024
    Configuration menu
    Copy the full SHA
    80702c3 View commit details
    Browse the repository at this point in the history

Commits on Jul 18, 2024

  1. Configuration menu
    Copy the full SHA
    b6f1103 View commit details
    Browse the repository at this point in the history

Commits on Jul 19, 2024

  1. Simplify contents into three types

    * extensions: `CREATE EXTENSION` extensions
    * modules: loadable modules for extensions, hooks, and workers
    * apps: Programs and scripts like pg_top, pgAdmin, or pg_partman scripts
    
    Add an example from pg_partman, which includes all three types.
    theory committed Jul 19, 2024
    Configuration menu
    Copy the full SHA
    0d7e2b2 View commit details
    Browse the repository at this point in the history
  2. Links and fixes

    theory committed Jul 19, 2024
    Configuration menu
    Copy the full SHA
    8b65962 View commit details
    Browse the repository at this point in the history

Commits on Jul 24, 2024

  1. Various tweaks and improvements

    *   Add missing `contents` key to example
    *   Rename "Path Pattern" to "Glob"
    *   Fix ignore header
    *   Fix missing package version
    *   Use "cargo" instead of "rust" for pipeline value
    *   Tweak wording on phases
    *   Add url property to badge
    theory committed Jul 24, 2024
    Configuration menu
    Copy the full SHA
    bca822e View commit details
    Browse the repository at this point in the history

Commits on Jul 30, 2024

  1. Clarify path symantics and name META.json

    Also link to the Repology API.
    theory committed Jul 30, 2024
    Configuration menu
    Copy the full SHA
    7e20662 View commit details
    Browse the repository at this point in the history

Commits on Sep 13, 2024

  1. Require sha512 for artifacts

    And fix a couple of version references and links.
    theory committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    64e6d63 View commit details
    Browse the repository at this point in the history