First off, thanks for taking the time to contribute! 🫶
All types of contributions are encouraged and valued. See the Table of Contents for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it much easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. 🎉
If you don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation:
- Star the project on Github
- Post on X or Linkedin about JSON Schema `#jsonschema
Before making your first contribution, please ensure you are familiar with our Code of Conduct.
If you need clarification after reading this document, we encourage you to join the #contribute
channel in our Slack workspace.
Please use our issues templates that provide hints on what information we need to help you.
Open an issue only to report a bug or a feature. Don't open issues for questions or support, instead join our Slack workspace and ask there. Remember to follow our Code of Conduct while interacting with community members! It's more likely you'll get help, and much faster!
To add a new implementation, please open a PR, adding the details of your implementation to \pages\implementations\main.md
file. We also invite you to join the discussion in #implementers
channel in our Slack workspace.
Before publishing your first blog post, please ensure you are familiar with our blog guidelines.
To publish a blog post, please open a PR, adding your post in Markdown format into the \pages\blog\posts
folder using any existing posts as reference e.g.: json-schema-in-5-minutes.md. Remember to add all the images into the \public\img
folder.
To publish a case study, we encourage you to join #adopters
channel in our Slack workspace and introduce your use case.
Want to help us improve the JSON Schema documentation? Check out our docs Contributing guide for docs and Style guide. These documents will give you the basics of our processes to get you started and text-formatting guidelines to create consistent documentation for JSON Schema.
If you would like to join the efforts to improve the JSON Schema Website, we encourage you to check our website contribution board to get a sense of the pending issues and bugs and who is doing what. We also invite you to join the discussion in #website
channel in our Slack workspace.
If you would like to contribute with designs, we encourage you to join #design
channel in our Slack workspace and read the contributing guidelines in the Brand repository.
If you would like to contribute to our CI/CD pipeline, we encourage you to review our current setup in the workflows README.
We value contributions to our testing efforts. Here are ways you can help improve our test coverage and quality:
-
Writing Tests: If you're adding new features or fixing bugs, please include relevant tests. We use Cypress for both end-to-end (E2E) and component testing.
- For new components, add component tests in the
cypress/components
directory. - For new features or bug fixes affecting user interactions, add E2E tests in the
cypress/e2e
directory.
- For new components, add component tests in the
-
Improving Existing Tests: Review and enhance our existing test suite. Look for areas where test coverage could be improved or where tests could be made more robust.
-
Test Documentation: Help improve our testing documentation, making it easier for new contributors to understand and write tests.
-
Running Tests: Before submitting a pull request, ensure all tests pass by running:
yarn cypress:run:all
-
Reporting Test Issues: If you find inconsistencies or problems with our tests, please open an issue describing the problem and how to reproduce it.
For more details on our testing setup and how to run tests, please refer to the Testing section in our INSTALLATION.md file.
We welcome pull requests for editorial suggestions and resolving open issues.
If your pull request addresses a specific issue, please reference this issue in your pull request description using a supported descriptor. This helps automatically link and close the issue when the pull request is merged.
We strongly encourage linking every pull request to an existing issue. If no corresponding issue exists, please create one first. This allows the community to discuss the required changes. If you are addressing an existing issue, ensure the scope is clear and consider the following:
- If the issue is several years old, verify its relevance by asking in the comments.
- Ensure the discussion within the issue has led to a clear, actionable decision.
Generally, pull requests should be made to the main
branch.
Most PRs, will be left open for a minimum of 14 days. Minor fixes may be merged more quickly once approved by a project member.
Contributors to our Docs or our Blog can have a look at the custom markdown style guide with a list of useful markdown tags providing tools to easily create cool content that provides a better user experience.
Please check the triage process to learn how we review and label incoming issues .
Feedback on this process can be made informally through our Slack server and formally using our Community Discussions.
This document was adapted from https://contributing.md!