Ways to Contribute
There are many ways to contribute to Directus:- Report Bugs - Submit detailed bug reports with reproduction steps
- Suggest Features - Propose new features or enhancements
- Write Code - Fix bugs, implement features, or improve performance
- Improve Documentation - Help make our docs clearer and more comprehensive
- Review Pull Requests - Provide feedback on proposed changes
- Help Others - Answer questions in discussions and issues
Getting Started
Before you start contributing, please:- Read through this contributing guide
- Check existing issues and pull requests
- Set up your development environment
- Familiarize yourself with the codebase structure
Code of Conduct
We are committed to providing a welcoming and inclusive experience for everyone. Please be respectful and professional in all interactions.Development Workflow
The typical workflow for contributing code is:- Fork the repository - Create your own fork of the Directus repository
- Create a branch - Make a new branch for your changes
- Make your changes - Implement your bug fix or feature
- Test thoroughly - Ensure all tests pass and add new tests as needed
- Create a changeset - Document your changes for the changelog
- Submit a pull request - Open a PR following our PR guidelines
- Address feedback - Work with maintainers to refine your contribution
Changesets
All code changes require a changeset to document what changed for the release notes.Creating a Changeset
Run the following command:- Ask which packages are affected
- Ask whether the change is a major, minor, or patch
- Prompt for a description of the change
Changeset Description Format
IMPORTANT: All changeset descriptions must be written in past tense, as they document changes that have already been made. Examples:- ✅ “Added support for multi-provider AI”
- ✅ “Fixed race condition in WebSocket connections”
- ✅ “Replaced deprecated
ldapjswithldapts” - ❌ “Add support for multi-provider AI” (present tense - incorrect)
- ❌ “Adding support for multi-provider AI” (present continuous - incorrect)
Versioning Guidelines
Follow semantic versioning:-
Patch (
0.0.x) - Bug fixes, dependency updates, internal improvements that don’t affect the public API- Example: “Fixed validation error in date field”
-
Minor (
0.x.0) - New features, enhancements to existing features, non-breaking changes- Example: “Added visual editing support to live preview”
-
Major (
x.0.0) - Breaking changes that require user action or code updates- Example: “Removed deprecated
GET /itemsendpoint”
- Example: “Removed deprecated
Breaking Changes
When introducing a breaking change:- Use major version bump
- In the changeset description, clearly document:
- What changed (past tense)
- Why it changed (if not obvious)
- Migration steps or what users need to update
Questions?
If you have questions about contributing, feel free to:- Open a discussion
- Ask in the Directus Discord community
- Check the documentation