Thanks for your interest in contributing! Please start with our developer guide (written for CourtListener, but most of it applies to our other repositories too), which covers setup, our contribution guidelines, and the Contributor License Agreement. Some repositories have their own CONTRIBUTING.md with project-specific details.
Look for issues labeled good first issue or help wanted, or check our volunteer project board.
Many volunteers may want the same issue, so comment on it before you start, and check that nobody else has claimed it. For new features or large changes, open an issue to discuss them before writing code.
Here's a summary. The developer guide covers each of these in more detail.
We use GitHub flow. In practice, that means:
- Nearly everything you do should have an issue. Name your branch
<issue-number>-short-description-YYYYMMDD, for example123-fix-date-parsing-20260115, with no dashes in the date. If a change is too small to need an issue, name the branchtweak-<description>, such astweak-fix-typo. - Each commit should be a unit of work. Clean up experimental commits with an interactive rebase before you open the PR.
- Once review has started, don't force push. A messy commit log during review is better than making your reviewer re-read the whole PR to find what changed.
- Write commit messages in the Conventional Commits format, such as
fix(search): Handle empty queries. Long explanations in the body are welcome. - If your PR changes anything visual, include a screenshot or GIF.
- Keep PRs small. A good PR lands one specific thing cleanly, even if the larger feature isn't finished yet.
- If the repository has a
.pre-commit-config.yaml, install pre-commit and runpre-commit run --all-filesbefore pushing. - The first time you contribute to any of our repositories, a bot will ask you to sign our Contributor License Agreement.
Your contributions will be reviewed by FLP staff. Note that code review may be slow due to competing priorities. We'll do our best to keep you updated, but if your issue or pull request hasn't gotten a response in a while, feel free to tag a maintainer as a reminder.
If you get stuck or have a question, ask in a comment on the issue you're working on, or in GitHub Discussions.
If we've asked for changes on your pull request and haven't heard back in some time:
- Small changes: if all that's left is something minor, such as adding a line to
CHANGES.mdor resolving a small merge conflict withmain, a maintainer may make the change and merge your PR. Your commits stay in the history with you as the author. - Larger changes: if the PR still needs substantial work, we may close it. When you're ready to pick it back up, comment on the related issue and we'll reopen it.
This helps maintainers keep our repositories tidy and spend their time on other work instead of keeping track of open PRs.
You're welcome to use AI tools, but a person must stand behind every contribution. Please read our AI policies for volunteers first.
Don't report vulnerabilities in public issues. Follow our vulnerability disclosure policy instead.