Discussion: GAP `status` field

Open
#22 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Quiet
Domain
documentation

Research direction

Start by reading CONTRIBUTING.md and the metadata.yml structure described in the issue, then inspect how GAP status is represented on the website or in deploy previews. Resolve the status and withdrawal semantics, including who accepts a GAP, and update the relevant guidance and metadata definition so there is one clear source of truth.

Written by the indexing model from the issue text.

Description

CONTRIBUTING.md currently states the statuses as:

# GAPs are never "strawman". Later we'll probably add additional statuses. If in
# doubt, choose "proposal"
status: proposal | draft | accepted

PEP statuses prior art fwiw:

Status: <Draft | Active | Accepted | Provisional | Deferred | Rejected |
         Withdrawn | Final | Superseded>

We currently offer no guidance or definition for what it means for a GAP to be "accepted". Accepted by whom?

GAPs are explicitly community specs, and don't need to be "accepted" by anyone other than the initial sponsor and authors.

(The role of sponsor imo should be to check "does this GAP make sense, is it appropriate for this repo", and not "do I personally agree this is a good idea" -- and we should clarify this)

The statuses of a GAP could be considered implicitly as:

  • "proposal" = GAP PR is still open
  • "draft" = GAP PR has been merged with a DRAFT.md but no version directory has been created
  • "accepted" = GAP PR has been merged and a version has been published.

Do we need an extra field?

To be clear, we could still display a "status" field in the frontmatter of the GAP document on the website or in deploy previews, but this can be calculated based on the above.

Proposal

(1) Remove status to avoid duplicate sources of truth to keep in sync.

(2) Add an additional optional withdrawn field in metadata.yml to encode the state of 'withdrawn' (i.e a GAPs has been withdrawn but without any superseding GAP).

 related:
  - <number>
 replaces: <number>
-supersededBy: <number>
+withdrawn:
+  # fields in `withdrawn` are mutually exclusive 
+  supersededBy: <number>
+  reason: <number>
 tags:
   - <string>

@benjie wdyt?

Dominant language
JavaScript
Stars
10
Forks
8
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from graphql/gaps

All issues in graphql/gaps

Similar issues

More JavaScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.