Status
Accepted - May 8, 2024Deciders
@gregsdennis, @jdesrosiers, @bhuttonContext and Problem Statement
In creating a stable spec release, it’s important that all included features are well-developed and their behaviors are finalized. The following features were identified as not yet ready for the stable v1 release:$vocabulary- This feature is still in development- Output formats - This feature is being extracted to its own spec anyway
propertyDependencies- This feature is not technically in the spec and should go through the proposal process
Decision Drivers
We can’t publish a stable spec that contains unstable features. We need to remove them while continuing their development separately.Considered Options
- Extract unfinished features and put them through the proposal process
- Complete the features before releasing the spec
Decision Outcome
Chosen option: Extract unfinished features and put them through the proposal process This allows us to release a stable version of the specification while continuing to develop these features.Features Extracted
1. $vocabulary Keyword
What is $vocabulary?
What is $vocabulary?
The
$vocabulary keyword declares which vocabularies (sets of keywords) are used in a meta-schema and whether they are required or optional.Status: Moved to proposal/experimentation phaseExample:2. Output Formats
What are output formats?
What are output formats?
Output formats define standardized structures for representing validation results, including:
- Flag format: Simple boolean pass/fail
- Basic format: Errors only
- Detailed format: Full evaluation paths and annotations
- Verbose format: Complete evaluation tree
3. propertyDependencies Keyword
What is propertyDependencies?
What is propertyDependencies?
The Status: Needs to go through the formal proposal processReason: This feature was discussed but never formally added to the specification.
propertyDependencies keyword would allow conditional schemas based on property values (not just property presence like dependentSchemas).Example concept:Consequences
Positive Consequences
- ✅ We can release a spec earlier that fulfills our users’ needs
- ✅ We can continue to develop these features separately
- ✅ Each feature gets proper attention through the proposal process
- ✅ The stable v1 release contains only well-tested, finalized features
- ✅ Maintains stability guarantees for the core specification
Negative Consequences
- ⚠️ These features will be considered experimental until their proposals are accepted
- ⚠️ May be a hindrance to adoption for users who need these features
- ⚠️ Users who were using
$vocabularyin draft versions must wait for it to be re-added
Timeline and Process
Extract features
Remove
$vocabulary, output formats, and propertyDependencies from the main specification.Create proposals
Each feature goes through the formal proposal process:
- Concept discussion
- Formal proposal document
- Prototype implementations
Experimentation
Features enter the experimentation phase where implementations can test them:
- Gather feedback from implementers
- Refine based on real-world usage
- Require 5+ implementations before advancing
Current Status of Extracted Features
| Feature | Status | Proposal | Notes |
|---|---|---|---|
$vocabulary | In development | Vocabularies proposal | Working toward re-inclusion |
| Output formats | Separate spec | In progress | Being developed as standalone specification |
propertyDependencies | Proposed | Property dependencies proposal | Awaiting implementations |