Skip to content
On this page

Pull Request Process

Pull Requests (PRs) are a fantastic way to contribute back to the project. It's one of the fastest ways to see a bug fix or new feature you care about land in the platform.

Reviewing and maintaining community submitted code is a very time consuming process. To ensure the core team can give every PR the tender love and care it deserves, and not let valuable PRs go stale, we require that:

Every pull request must be in answer to an existing open Issue.

We use GitHub Issues as a living to-do list of tasks to work on next. Each PR resolving a related issue ensures that it aligns with the core team's planning and long-term goals. Please leave a comment on the issue related to your PR so you can be marked as the assignee. This ensures no one else will accidentally work on the same issue at the same time.

Choosing What to Implement

We welcome PRs for any open Issue. Issues labeled "Good First Issue" are typically easier to resolve for those who haven't contributed to the codebase before, and are therefore a great starting point.

Implementing an Accepted Feature Request

If you're looking to implement a feature request that hasn't been converted to an issue yet, please contact the core team through a comment on the feature request before starting work. There's probably a good reason it isn't ready-to-be-implemented yet (unknown timelines, conflicts with other projects, blockers, etc). By collaborating early, we ensure your PR can be merged as efficiently as possible!

All code contributors are required to sign the Contributor License Agreement (CLA). When you start a pull request, a GitHub Action will prompt you to review the CLA and sign it by adding your name to contributors.yml. To clarify the intellectual property rights in the project and any Contributions, Directus requires that You accept the Contributor License Agreement. This license is for Your protection as a contributor as well as the protection of Directus, recipients of software distributed or made available by Directus, and other contributors; it does not change your rights to use your own Contributions for any other purpose.

Changesets

To properly generate changelogs and determine the right version number after a change is merged, we rely on changesets. Each pull request should include a changeset that describes whether the change is a patch/minor/major version bump, and describe what the change is. Changesets should be written in past tense.

A changeset can be generated via the following command:

shell
pnpm changeset
pnpm changeset

Changeset Bump Definitions

The following are the types of version bumps that can be specified in a changeset:

  • Major (x.0.0) - A change has been made that is incompatible with previous versions.
  • Minor (0.x.0) - A feature has been added that is backwards compatible with previous versions.
  • Patch (0.0.x) - A bug has been fixed that is backwards compatible with previous versions.