Overview
Once a rough consensus for a feature idea has been reached during the Concept stage, a formal proposal must be written to precisely define specification changes.Creating a Proposal
Use the Proposal Template
The proposal uses the Proposal Template and is stored in the repository’s
proposals folder.Create a Draft ADR
Include a draft ADR (Architecture Decision Record) using the file name of the proposal document with an
-adr suffix: {proposal-file-name}-adr.md.This ADR should include additional information from the “Concept” discussion, such as:- Use cases
- Alternatives considered
- Design rationale
- Expected complexity
Update Meta-schemas
Add proposed keywords to the appropriate vocabulary meta-schemas in:
- Latest published release
- The
mainbranch of the repository
$comment keyword indicating that the feature is experimental and containing a link to the proposal document.Proposal Requirements
A formal proposal should precisely define:- The specification changes required
- The syntax of new keywords
- The behavior and semantics
- How it integrates with existing features
- Validation requirements
Meta-schema Format
When adding a proposed keyword to meta-schemas, use this format:This approach allows the proposed keyword but does not validate it, as its syntax may change during the proposal/experimentation process. It also permits different implementations to support different variations of each proposal separately.
From Proposal to Stable
The proposal serves as the specification for the feature during the Experimentation stage. Feedback from implementers and users will result in refinements to the proposal. To advance from Experimentation to Stable, the following criteria must be met:- At least five (5) implementations support the feature
- There is sufficient evidence of use
- No changes are requested for a period of six (6) weeks
If a Proposal Cannot Advance
If a proposal cannot advance to the Stable stage, it may be removed:The removal of a feature which has not reached the stable state is not considered a breaking change.