Contributing to Rust

If you're learning Rust, you've no doubt been amazed at how awesome the language is and will be keen to write more Rust code. Hopefully, you'll also want to make a meaningful contribution to the community. If you're not sure how best to do that, then I hope that this page will help.

I'll link to a few resources that make contributing to the Rust project easier. Most of this page is filled with links to lists of issues to help you find something to work on. There are issues on the Rust project itself, a number of supporting projects, and some projects which are large users of Rust.

Writing code isn't the only way to make a meaningful contribution. Writing tests and documentation is how many people get started and is really useful. There are links to these kind of issues too. Likewise finding bugs and filing issues in any of the projects linked here is very much appreciated.

Rust and all the projects listed here use Git and GitHub for version control and to manage contributing. IF you're new to Git and/or GitHub, I wrote a blog post on my workflow which might be useful.

All PRs for the Rust project are reviewed. Our contributing.md contains some details. This video gives a great overview of reviewing at Mozilla (aimed at Firefox hackers, both reviewers and reviewees). It's not all applicable to Rust, but a lot of it is and it's a good watch.

Getting started

If you're interested in the Rust project itself, you should first read contributing.md. It contains loads of useful info about the process of contributing. These slides by kmc (a Rust and Servo engineer at Mozilla), given at a Rust meetup, are a great intro to contributing to Rust. The old wiki has some useful information for contributors, but is a bit hard to wade through. Hopefully it'll get a new home soon.

If you need help with Rust itself, the docs and book are the best place to start.

Rustaceans primarily communicate via irc. If you haven't already, you should join #rust on moznet. For questions about how Rust works, anything about contribution, or to find a mentor, #rust-internals is the right channel. There are also some more specific irc channels noted below. There is a rust-internals discuss instance for discussing the inner workings of Rust.

If you're looking for issues on the Rust (or Servo) repos and want something easy-ish to start with, look for the E-easy or E-mentor labels. If no one is specifically mentioned as a mentor, try pinging the author or assignee on irc to see if they can mentor or recommend someone.

Finding something to work on

rustc

The Rust compiler. The compiler is part of the main repo, which also includes the standard library crates and a whole bunch of supporting code. For questions about the compiler, there is the #rustc irc channel.

libraries

You should join #rust-libs if you are interested in contributing to the Rust libraries.

tests

Contributing tests is extremely valuable to the Rust project. For the compiler and standard libraries, there are unit tests (usually) embedded in the source code and regression tests in the src/tests directory. There is a list of issues which have (probably) been fixed, but still need a test.

Nearly any other project will be extremely welcoming of new tests too. Writing test cases is a great way to begin to understand a new project and get started contributing.

docs

Documentation is never good enough and there's never enough of it. Writing docs is a really valuable way to contribute to open source projects. Many aspects of the docs don't require super-deep knowledge, especially if they're aimed at newcomers. It's also a great way to learn more about the language or specific libraries.

tools

Tools play a huge part in the success of a language. Rust has some great tool support (in particular with debugging and package management), but we need much more.

infrastructure

These projects support the Rust project. They're mostly not written in Rust, but if you have experience with GitHub, Python, or other such technologies you can make really helpful impact here.

other projects

If you want more ideas for open source Rust projects to contribute to, these are all excellent projects and very welcoming to new contributors.