Contributing to JSON Schema
Thanks for taking the time to contribute! The JSON Schema project welcomes contributions from the community.Types of Contributions
Editorial Contributions
Contributions that do not change the interpretation of the spec but instead improve legibility are encouraged and often merged by a spec editor with little process:- Fix editorial errors (spelling, grammar, formatting)
- Clear up ambiguity in wording
- Improve examples
- Enhance documentation
Substantive Changes
Contributions that meaningfully change the interpretation of the specification must follow the Specification Development Process. This includes:- New features or keywords
- Changes to validation behavior
- Breaking changes to existing functionality
How to Contribute
Issues
Issues should identify a problem, enhancement, or use case, and propose a course of action for the draft. Before creating an issue:- Search existing issues to avoid duplicates
- Check if your question is better suited for a support channel
- Clearly describe the problem or enhancement
- Provide use cases and examples
- Suggest potential solutions or approaches
- Reference related issues or discussions
Pull Requests
We welcome pull requests for both editorial suggestions and to resolve open issues. Guidelines:- Reference related issues: If the pull request would solve a particular issue, reference it in the PR description
-
Target the correct branch:
- Most PRs should target the
mainbranch - During patch phases, target the patch branch (e.g.,
2020-12-patch)
- Most PRs should target the
- Changes affecting implementation behavior: Should typically be opened as an issue first to gather consensus
- Minimum review period: Most PRs, including all PRs that impact implementation behavior, will be left open for a minimum of 14 days
- Minor fixes: Wording fixes may be merged more quickly once approved by a project member
- What kind of change (bugfix, feature, refactoring, etc.)
- Issue references (Closes #___ or Related to #___)
- Summary explaining the motivation and what problem it solves
- Whether it introduces breaking changes
Development Process
Milestones
Each milestone represents an estimation of work for the next draft:- Milestones are typically named after the meta-schema draft number
- The open milestone with the lowest draft number is the current active project
- Issues may be moved between milestones or deferred to future drafts
- The
draft-futuremilestone is for agreed-upon issues without a specific timeline
Feature Life Cycle
New features progress through these stages:- Concept: Initial idea discussed in a GitHub issue
- Proposal: Formal proposal document created
- Experimentation: Implementations begin supporting the feature
- Stable: Feature incorporated into the specification
- Deprecated: Feature marked for future removal
- Removed: Feature removed (breaking change)
Building the Specification
Prerequisites
Install dependencies:Build Commands
Build all specs to HTML:web folder.
Build IETF Internet-Drafts:
Release Schedule
The JSON Schema specification aims to publish annually on or about January 1st each year. Releases are identified by the year they are published.- Breaking changes begin a new version (incrementing from version 1)
- Compatible changes maintain the same version
- Stability is prioritized; breaking changes are avoided when possible
Communication Channels
Slack
Join the#specification channel in our Slack workspace to:
- Interact with other community members
- Discuss specification development
- Share new ideas
- Ask questions
GitHub
- Discussions: Use GitHub issues for formal proposals and discussions
- Pull Requests: Submit changes through PRs following the guidelines above
Code of Conduct
All contributors must follow our Code of Conduct. We are committed to providing a welcoming and harassment-free experience for everyone.Testing
Conformance tests for JSON Schema and its vocabularies are maintained in the JSON Schema Test Suite. When contributing new features:- Add corresponding tests to the test suite
- Ensure existing tests continue to pass
- Document any changes to test expectations