Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

How to start contributing

Thank you for your interest in contributing to Rust! There are many ways to contribute, and we appreciate all of them. This document describes how you can get in touch with other Rust contributors and start contributing to Rust projects.

As a reminder, all contributors are expected to follow our Code of Conduct.

Asking Questions

First, if you have any questions regarding your potential contributions, you can ask other contributors on the following places:

  • Rust Zulip server is the primary communication space for most Rust teams and contributors. It is also a great place to observe on what is going on.
    • You can check out e.g. the compiler team (t-compiler) Zulip “channel”
  • internals.rust-lang.org (IRLO) is a forum for discussing development of Rust.

See also the list of teams and working groups and the Community page on the official website for more resources.

Please ask questions! A lot of people report feeling that they are “wasting expert time”, but we do not feel that way. Contributors are important to us.

How to start contributing?

The Rust project is quite large and it can be difficult to know which parts of the project need help, or are a good starting place for beginners. Here is a (non-exhaustive) list of rust-lang projects that could serve as starting places for you to contribute. Some of them have contributor guides and issues that are marked as needing help or being good first issues.

ProjectContribution guideGood first issuesDescription
Compilerrustc-dev-guideHelp wantedRust compiler and associated tooling
Standard librarystd-dev-guideRust standard library
RustdocRustdoc overviewRust documentation generator
CargoCargo Contributor GuideGood first issuesRust package manager and build system
ClippyClippy Contributor GuideGood first issuesRust linter
RustfmtRustfmt Contributing GuideGood first issuesRust formatter
Rust analyzerContributing Quick StartGood first issuesRust compiler frontend and LSP for IDEs
MiriMiri Contribution GuideGood first issuesRust interpreter and UB detector
RustupRustup Developer GuideHelp wantedRust toolchain installer
crates.iocrates.io Contribution guideIssue trackerRust package registry
Borsbors Development guideHelp wantedRust CI merge bot
rustc-perfHelp wantedRust compiler benchmark suite
TriagebotGood first issuesRust automation bot
Rust playgroundHelp wantedRust online playground
RustlingsRustlings Contribution GuideIssue trackerRust exercises
MdBookMdBook Contribution GuideHelp wantedBook generator written in Rust

If you want to get inspired, check all the rust-lang repositories!

Etiquette

We know that starting contributing in a FOSS1 project could be confusing at times and we want both contributors and reviewers have the best possible experience when collaborating in our project.

To achieve this goal, we want to build trust and respect of each other’s time and efforts. Our recommendation is to follow these simple guidelines:

  • Start small. A big ball of code as first contribution does not help to build trust
  • The work you submit is your own, meaning that you fully understand every part of it
  • You take care of checking in detail your work before submitting it - ask questions or signal us (with inline comments or todo!()) the parts you’re unsure about
  • If you want to fix an issue but have doubts about the design, you’re welcome to join our Zulip server and ask for tips
  • Please respect the reviewers’ time: allow some days between reviews, only ask for reviews when your code compiles and tests pass, or give an explanation for why you are asking for a review at that stage (you can keep them in draft state until they’re ready for review)
  • Try to keep comments concise, don’t worry about a perfect written communication. Strive for clarity and being to the point

Different kinds of contributions

There are various ways in which you can contribute to Rust projects:

  • Writing code is the most obvious one. However, it does not have to be only in Rust! Even though most of our projects are of course written in Rust, we also use other technologies. For example, you can help improve our GitHub CI workflows, automation Python scripts or contribute to web frontends with HTML/CSS/JS (e.g. Rustdoc or Benchmark suite website). Play to your strengths!

  • Improving documentation is possibly one of the easiest starting points for contributions. Did you find a typo, something that was unclear, or do you miss some useful information on this page, elsewhere in the Forge or in some other Rust (user-facing) documentation? Great, then send a pull request and you’ll become a contributor! :)

    Please notice that at this time we don’t accept typography/spellcheck fixes to internal documentation (usually not worth the churn or the review time) or in our testsuite (they could inadvertently cause code regressions)

  • Improving tests is also very valuable, as there is never enough of them. This can include also documenting existing tests or writing tests for already fixed issues that lack a proper test.

  • You can also help with improving issue trackers of our repositories, by helping with triaging issues or by reproducing old issues to find out whether they are still valid or not.

  • Or, if you like programming language discussions, you could participate in our RFC process.

  • You can also answer questions to help other Rust users, on users.rust-lang.org (URLO), or on StackOverflow.


  1. Free-Open Source Project, see: https://en.wikipedia.org/wiki/Free_and_open-source_software