Start Contributing to Typelevel
Typelevel projects power a large part of the functional Scala ecosystem. They are also complex, long-lived codebases with active communities. Contributing can feel intimidating at first, but even bug reports, small fixes, and documentation updates help move our projects forward!
Become a user of the ecosystem you want to contribute to.
- Use the Typelevel Toolkit to experiment with Cats and Cats Effect.
- Try streaming something with FS2.
- Use http4s for a simple service.
- Build a static site with Laika.
Find something that can be improved
- Look for open issues, especially those labeled
good first issueorhelp wanted. - Browse the curated good-first-issues board.
- If you're already using the library, improve something that bothered you.
- Documentation and tests are excellent starting points too.
Understand the problem
- Read the issue carefully, understand the current implementation.
- Look for existing PRs or recent comments.
- Check whether a solution was already proposed.
Communication with the community
- Comment on the issue saying you'd like to work on it and briefly describe your idea or approach.
- Ask clarifying questions if anything is unclear.
- If the change is small, you can open a draft PR early to get feedback.
Open a PR and iterate
- Fork the repo, create a branch, and implement the change. Add or update tests where appropriate.
- Open a PR with a clear description of the problem and your solution.
- Expect review feedback, ask questions, adjust your changes, and iterate.
Where to Ask for Help
- Join the Typelevel Discord.
- Ask in
#starting-contributingif you're new to contributing. - Use library-specific channels like
#cats,#cats-effect,#fs2, or#http4sfor more focused questions. - You can also ask directly on a GitHub issue if your question is specific to that issue.
Note: This guide emphasises learning and understanding. While most Typelevel projects accept AI written contributions, simply using such tools to fix a bug does not help you learn the codebase and gain the understanding needed to make more significant contributions.