|
| 1 | +# How to start contributing |
| 2 | + |
| 3 | +Thank you for your interest in contributing to Rust! There are many ways to |
| 4 | +contribute, and we appreciate all of them. This document describes how you can |
| 5 | +get in touch with other Rust contributors and start contributing to Rust projects. |
| 6 | + |
| 7 | +As a reminder, all contributors are expected to follow our [Code of Conduct][coc]. |
| 8 | + |
| 9 | +## Asking Questions |
| 10 | + |
| 11 | +First, if you have any questions regarding your potential contributions, you can ask |
| 12 | +other contributors on the following places: |
| 13 | +- [Rust Zulip server][rust-zulip] is the primary communication space for most Rust |
| 14 | + teams and contributors. It is also a great place to observe on what is going on. |
| 15 | + - You can check out e.g. the compiler team (`t-compiler`) Zulip ["channel"][t-compiler-channel] |
| 16 | +- [internals.rust-lang.org][internals] (IRLO) is a forum for discussing development of Rust. |
| 17 | +- [Rust Discord][rust-discord] can be used to ask about [Rustup][rustup] contributions |
| 18 | + in the `#wg-rustup` channel. |
| 19 | + |
| 20 | +See also the [list of teams and working groups][governance] and [the Community page][community] on the |
| 21 | +official website for more resources. |
| 22 | + |
| 23 | +[t-compiler-channel]: https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler |
| 24 | +[governance]: https://www.rust-lang.org/governance |
| 25 | +[community]: https://www.rust-lang.org/community |
| 26 | + |
| 27 | +**Please ask questions!** A lot of people report feeling that they are "wasting |
| 28 | +expert time", but we do not feel that way. Contributors are important to us. |
| 29 | + |
| 30 | +## How to start contributing? |
| 31 | + |
| 32 | +The Rust project is quite large and it can be difficult to know which parts of the project need |
| 33 | +help, or are a good starting place for beginners. Here is a (non-exhaustive) list of |
| 34 | +`rust-lang` projects that could serve as starting places for you to contribute. Some of them |
| 35 | +have contributor guides and issues that are marked as needing help or being good first issues. |
| 36 | + |
| 37 | +| Project | Contribution guide | Good first issues | Description | |
| 38 | +|------------------------------------|-------------------------------------------------|---------------------------------------|-----------------------------------------| |
| 39 | +| [Compiler][rustc-repo] | [rustc-dev-guide][rustc-guide] | [Good first issues][rustc-issues] | Rust compiler and associated tooling | |
| 40 | +| [Standard library][std-repo] | [std-dev-guide][std-guide] | | Rust standard library | |
| 41 | +| [Rustdoc][rustdoc-repo] | [Rustdoc overview][rustdoc-guide] | | Rust documentation generator | |
| 42 | +| [Cargo][cargo-repo] | [Cargo Contributor Guide][cargo-guide] | [Good first issues][cargo-issues] | Rust package manager and build system | |
| 43 | +| [Clippy][clippy-repo] | [Clippy Contributor Guide][clippy-guide] | [Good first issues][clippy-issues] | Rust linter | |
| 44 | +| [Rustfmt][rustfmt-repo] | [Rustfmt Contributing Guide][rustfmt-guide] | [Good first issues][rustfmt-issues] | Rust formatter | |
| 45 | +| [Rust analyzer][analyzer-repo] | [Contributing Quick Start][analyzer-guide] | [Good first issues][analyzer-issues] | Rust compiler frontend and LSP for IDEs | |
| 46 | +| [Miri][miri-repo] | [Miri Contribution Guide][miri-guide] | [Good first issues][miri-issues] | Rust interpreter and UB detector | |
| 47 | +| [Rustup][rustup-repo] | [Rustup Developer Guide][rustup-guide] | [Help wanted][rustup-issues] | Rust toolchain installer | |
| 48 | +| [crates.io][crates-io-repo] | [crates.io Contribution guide][crates-io-guide] | [Issue tracker][crates-io-issues] | Rust package registry | |
| 49 | +| [Bors][bors-repo] | [bors Development guide][bors-guide] | [Help wanted][bors-issues] | Rust CI merge bot | |
| 50 | +| [rustc-perf][rustc-perf-repo] | | [Help wanted][rustc-perf-issues] | Rust compiler benchmark suite | |
| 51 | +| [Triagebot][triagebot-repo] | | [Good first issues][triagebot-issues] | Rust automation bot | |
| 52 | +| [Rust playground][playground-repo] | | [Help wanted][playground-issues] | Rust online playground | |
| 53 | +| [Rustlings][rustlings-repo] | [Rustlings Contribution Guide][rustlings-guide] | [Issue tracker][rustlings-issues] | Rust exercises | |
| 54 | +| [MdBook][mdbook-repo] | [MdBook Contribution Guide][mdbook-guide] | [Good first issues][mdbook-issues] | Book generator written in Rust | |
| 55 | + |
| 56 | +[rustc-repo]: https://github.com/rust-lang/rust |
| 57 | +[rustc-issues]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AE-help-wanted+no%3Aassignee |
| 58 | +[rustc-guide]: https://rustc-dev-guide.rust-lang.org |
| 59 | +[std-repo]: https://github.com/rust-lang/rust/tree/master/library |
| 60 | +[std-guide]: https://github.com/rust-lang/std-dev-guide |
| 61 | +[rustdoc-repo]: https://github.com/rust-lang/rust/tree/master/src/librustdoc |
| 62 | +[rustdoc-guide]: https://rustc-dev-guide.rust-lang.org/rustdoc.html |
| 63 | +[cargo-repo]: https://github.com/rust-lang/cargo |
| 64 | +[cargo-issues]: https://github.com/rust-lang/cargo/issues?q=is%3Aopen+is%3Aissue+label%3AS-accepted+no%3Aassignee |
| 65 | +[cargo-guide]: https://doc.crates.io/contrib |
| 66 | +[clippy-repo]: https://github.com/rust-lang/rust-clippy |
| 67 | +[clippy-guide]: https://github.com/rust-lang/rust-clippy/blob/master/CONTRIBUTING.md |
| 68 | +[clippy-issues]: https://github.com/rust-lang/rust-clippy/issues?q=is%3Aopen%20is%3Aissue%20no%3Aassignee%20label%3A%22good%20first%20issue%22 |
| 69 | +[rustfmt-repo]: https://github.com/rust-lang/rustfmt |
| 70 | +[rustfmt-guide]: https://github.com/rust-lang/rustfmt/blob/master/Contributing.md |
| 71 | +[rustfmt-issues]: https://github.com/rust-lang/rustfmt/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 |
| 72 | +[analyzer-repo]: https://github.com/rust-lang/rust-analyzer |
| 73 | +[analyzer-guide]: https://rust-analyzer.github.io/book/contributing |
| 74 | +[analyzer-issues]: https://github.com/rust-lang/rust-analyzer/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22 |
| 75 | +[miri-repo]: https://github.com/rust-lang/miri |
| 76 | +[miri-guide]: https://github.com/rust-lang/miri/blob/master/CONTRIBUTING.md |
| 77 | +[miri-issues]: https://github.com/rust-lang/miri/issues?q=is%3Aissue%20state%3Aopen%20label%3AE-good-first-issue |
| 78 | +[rustup-repo]: https://github.com/rust-lang/rustup |
| 79 | +[rustup-guide]: https://rust-lang.github.io/rustup/dev-guide |
| 80 | +[rustup-issues]: https://github.com/rust-lang/rustup/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%22 |
| 81 | +[crates-io-repo]: https://github.com/rust-lang/crates.io |
| 82 | +[crates-io-guide]: https://github.com/rust-lang/crates.io/blob/main/docs/CONTRIBUTING.md |
| 83 | +[crates-io-issues]: https://github.com/rust-lang/crates.io/issues |
| 84 | +[bors-repo]: https://github.com/rust-lang/bors |
| 85 | +[bors-guide]: https://github.com/rust-lang/bors/blob/main/docs/development.md |
| 86 | +[bors-issues]: https://github.com/rust-lang/bors/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22 |
| 87 | +[rustc-perf-repo]: https://github.com/rust-lang/rustc-perf |
| 88 | +[rustc-perf-issues]: https://github.com/rust-lang/rustc-perf/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%22 |
| 89 | +[triagebot-repo]: https://github.com/rust-lang/triagebot |
| 90 | +[triagebot-issues]: https://github.com/rust-lang/triagebot/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22good%20first%20issue%22 |
| 91 | +[playground-repo]: https://github.com/rust-lang/rust-playground |
| 92 | +[playground-issues]: https://github.com/rust-lang/rust-playground/issues?q=is%3Aissue%20state%3Aopen%20label%3A%22help%20wanted%22 |
| 93 | +[rustlings-repo]: https://github.com/rust-lang/rustlings |
| 94 | +[rustlings-guide]: https://github.com/rust-lang/rustlings/blob/main/CONTRIBUTING.md |
| 95 | +[rustlings-issues]: https://github.com/rust-lang/rustlings/issues |
| 96 | +[mdbook-repo]: https://github.com/rust-lang/mdBook |
| 97 | +[mdbook-guide]: https://github.com/rust-lang/mdBook/blob/master/CONTRIBUTING.md |
| 98 | +[mdbook-issues]: https://github.com/rust-lang/mdBook/labels/E-Help-wanted |
| 99 | + |
| 100 | +If you want to get inspired, check all the [rust-lang][rust-lang-repos] repositories! |
| 101 | + |
| 102 | +[rust-lang-repos]: https://github.com/orgs/rust-lang/repositories?type=all&q=sort%3Astars |
| 103 | + |
| 104 | +### Different kinds of contributions |
| 105 | + |
| 106 | +There are various ways in which you can contribute to Rust projects: |
| 107 | + |
| 108 | +- Writing code is the most obvious one. However, it does not have to be only in Rust! Even though |
| 109 | + most of our projects are of course written in Rust, we also use other technologies. For example, |
| 110 | + you can help improve our GitHub CI workflows, automation Python scripts or contribute to web |
| 111 | + frontends with HTML/CSS/JS (e.g. [Rustdoc][rustdoc-ui] or [Benchmark suite website][rustc-perf-ui]). |
| 112 | + Play to your strengths! |
| 113 | +- Improving documentation is possibly one of the easiest starting points for contributions. |
| 114 | + Did you find a typo, something that was unclear, or do you miss some useful information on this |
| 115 | + page, elsewhere in the Forge or in some other Rust (user-facing) documentation? Great, then send |
| 116 | + a pull request and you'll become a contributor! :) |
| 117 | +- Improving tests is also very valuable, as there is never enough of them. This can include also |
| 118 | + documenting existing tests or writing tests for already fixed issues that lack a proper test. |
| 119 | +- You can also help with improving issue trackers of our repositories, by helping with [triaging issues][issue-triage] |
| 120 | + or by reproducing old issues to find out whether they are still valid or not. |
| 121 | +- Or, if you like programming language discussions, you could participate in our [RFC process](https://github.com/rust-lang/rfcs). |
| 122 | +- You can also answer questions to help other Rust users, in the _Get Help!_ channels on the [Rust Discord |
| 123 | + server][rust-discord], on [users.rust-lang.org][users] (URLO), or on [StackOverflow][so]. |
| 124 | + |
| 125 | +[rustdoc-ui]: https://rustc-dev-guide.rust-lang.org/rustdoc-internals.html |
| 126 | +[rustc-perf-ui]: https://github.com/rust-lang/rustc-perf/tree/master/site |
| 127 | +[rust-discord]: https://discord.gg/rust-lang |
| 128 | +[users]: https://users.rust-lang.org/ |
| 129 | +[so]: http://stackoverflow.com/questions/tagged/rust |
| 130 | +[rustup]: https://github.com/rust-lang/rustup |
| 131 | +[internals]: https://internals.rust-lang.org |
| 132 | +[rust-discord]: http://discord.gg/rust-lang |
| 133 | +[rust-zulip]: https://rust-lang.zulipchat.com |
| 134 | +[coc]: https://www.rust-lang.org/policies/code-of-conduct |
| 135 | +[issue-triage]: ./release/issue-triaging.md |
0 commit comments