Skip to content

Commit d0aa9b7

Browse files
authored
Merge pull request #896 from Kobzol/how-to-contribute
Add "How to start contributing" page
2 parents 1e3629a + f0d45fc commit d0aa9b7

File tree

3 files changed

+137
-15
lines changed

3 files changed

+137
-15
lines changed

src/README.md

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,7 @@ file an issue or PR on the [Rust Forge GitHub].
99

1010
### Help Wanted
1111

12-
Want to contribute to Rust, but don't know where to start? Here's a list of
13-
`rust-lang` projects that have marked issues that need help and issues that are
14-
good first issues.
15-
16-
Repository | Description
17-
----------------------------|-----------------------------------------------
18-
[rust][gh/rust] | The Rust Language & Compiler
19-
[cargo][gh/cargo] | The Rust package manager
20-
[crates.io][gh/crates.io] | Source code for [crates.io](https://crates.io)
21-
[www.rust-lang.org][gh/www] | The Rust website
22-
23-
[gh/rust]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AE-help-wanted+no%3Aassignee
24-
[gh/cargo]: https://github.com/rust-lang/cargo/issues?q=is%3Aopen+is%3Aissue+label%3AS-accepted+no%3Aassignee
25-
[gh/crates.io]: https://github.com/rust-lang/crates.io/issues?q=is%3Aopen+is%3Aissue+label%3AE-help-wanted+no%3Aassignee
26-
[gh/www]: https://github.com/rust-lang/www.rust-lang.org/issues?q=is%3Aopen+label%3A%22good+first+issue%22+no%3Aassignee
12+
Want to contribute to Rust, but don't know where to start? Check out [this guide](./how-to-start-contributing.md).
2713

2814
### Current Release Versions
2915

src/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Rust Forge
22

33
[Overview](./README.md)
4+
- [How to start contributing](./how-to-start-contributing.md)
45
- [Onboarding to the project](./onboarding.md)
56
- [Platforms](./platforms/README.md)
67
- [Twitter](./platforms/twitter.md)

src/how-to-start-contributing.md

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
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

Comments
 (0)