Skip to content
This repository was archived by the owner on Sep 30, 2020. It is now read-only.

Commit 6d56809

Browse files
Eric Findlaybrson
authored andcommitted
Added contribution page
1 parent 19b82d9 commit 6d56809

File tree

1 file changed

+177
-0
lines changed

1 file changed

+177
-0
lines changed

contributions.md

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
---
2+
layout: default
3+
title: How To Contribute
4+
---
5+
6+
# Contributing to Rust
7+
8+
If you're learning Rust, you've no doubt been amazed at how awesome
9+
the language is and will be keen to write more Rust code. Hopefully,
10+
you'll also want to make a meaningful contribution to the community.
11+
If you're not sure how best to do that, then hopefully this page will
12+
help. Most of this page is filled with links to lists of issues to
13+
help you find something to work on. There are issues on the Rust
14+
project itself, a number of supporting projects, and some projects
15+
which are large users of Rust.
16+
17+
Writing code isn't the only way to make a meaningful contribution.
18+
Writing tests and documentation is how many people get started and is
19+
really useful. There are links to these kind of issues too. Likewise
20+
finding bugs and filing issues in any of the projects linked here is
21+
very much appreciated. As a reminder, all contributors are expected to
22+
follow our [Code of Conduct][coc].
23+
24+
[coc]: https://www.rust-lang.org/conduct.html
25+
26+
## Finding Something to Work On
27+
28+
#### Issues
29+
30+
If you're looking for [issues][rust_issues] on the Rust repo
31+
and want something easy-ish to start with, look for the [E-easy][e_easy_issues]
32+
or [E-mentor][e_mentor_issues] labels.
33+
34+
Contributors with sufficient permissions on the Rust repo can help by
35+
adding labels to triage issues:
36+
37+
- **Yellow A-prefixed** labels state which area of the project an
38+
issue relates to.
39+
- **Magenta B-prefixed** labels identify bugs which belong elsewhere.
40+
- **Green E-prefixed** labels explain the level of experience
41+
necessary to fix the issue.
42+
- **Red I-prefixed** labels indicate the importance of the issue. The
43+
I-nominated label indicates that an issue has been nominated for
44+
prioritizing at the next triage meeting.
45+
- **Orange P-prefixed** labels indicate a bug's priority. These labels
46+
are only assigned during triage meetings, and replace the
47+
I-nominated label.
48+
- **Blue T-prefixed** bugs denote which team the issue belongs to.
49+
- **Dark blue beta-** labels track changes which need to be backported
50+
into the beta branches.
51+
- **Purple** metabug labels mark lists of bugs collected by other
52+
categories.
53+
54+
[rust_issues]: https://github.com/rust-lang/rust/issues
55+
[e_easy_issues]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AE-easy
56+
[e_mentor_issues]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AE-easy+label%3AE-mentor
57+
58+
#### The Rust compiler
59+
60+
The compiler is part of the [main repo][main_repo], which also
61+
includes the standard library crates and a whole bunch of supporting
62+
code. For questions about the compiler, there is the
63+
[#rustc][rustc_irc] IRC channel. Compiler errors (ICE for 'internal
64+
compiler errors') can be searched for in issues using the
65+
[I-ICE][i_ice_issues] label. These are usually good bugs to start with
66+
because it's easy to know when you've fixed them, and they're often
67+
relatively self-contained. If you're interested in parsing, macros,
68+
syntactic stuff, the [parsing][parsing_issues] label and the
69+
[macro][macro_issues] label are a good places to start.
70+
71+
[main_repo]: https://github.com/rust-lang
72+
[rust_irc]: irc://moznet/rustc
73+
[i_ice_issues]: https://github.com/rust-lang/rust/labels/I-ICE
74+
[parsing_issues]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AA-parser
75+
[macro_issues]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AA-parser+label%3AA-macros
76+
77+
#### Standard Libraries
78+
79+
[Libstd][libstd], [libcollections][libcollections],
80+
[liballoc][liballoc] and [libcore][libcore] are the main library
81+
crates. These all appear to users as if they are part of libstd, the
82+
standard library. These tend to be very fundamental libraries -
83+
built-in types, low level IO and concurrency, allocation, essential
84+
collections, and so forth. You should join [#rust-libs][libs_irc] if
85+
you are interested in contributing to the Rust libraries.
86+
87+
[libstd]: https://github.com/rust-lang/rust/tree/master/src/libstd
88+
[libcollections]: https://github.com/rust-lang/rust/tree/master/src/libcollections
89+
[liballoc]: https://github.com/rust-lang/rust/tree/master/src/liballoc
90+
[libcore]: https://github.com/rust-lang/rust/tree/master/src/libcore
91+
[libs_irc]: irc://moznet/rust-libs
92+
93+
#### Cargo
94+
95+
[Cargo][cargo_issues] is Rust's package manager.
96+
97+
[cargo_issues]: https://github.com/rust-lang/cargo/issues
98+
99+
#### Tests
100+
101+
Contributing tests is extremely valuable to the Rust project. For the
102+
compiler and standard libraries, there are unit tests (usually)
103+
embedded in the source code and regression tests in the
104+
[src/tests][tests] directory. There is a list of issues which have
105+
(probably) been fixed, but still need a test. Nearly any other project
106+
will be extremely welcoming of new tests too. Writing test cases is a
107+
great way to begin to understand a new project and get started
108+
contributing.
109+
110+
[test]: https://github.com/rust-lang/rust/tree/master/src/test
111+
112+
#### Checking Older Bugs
113+
114+
Sometimes, an issue will stay open, even though the bug has been
115+
fixed. And sometimes, the original bug may go stale because something
116+
has changed in the meantime. It can be helpful to go through older bug
117+
reports and make sure that they are still valid. Load up an older
118+
issue, double check that it's still true, and leave a comment letting
119+
us know if it is or is not. The [least recently updated][lru_issues]
120+
sort is good for finding issues like this.
121+
122+
[lru_issues]: https://github.com/rust-lang/rust/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-asc
123+
124+
#### Documentation
125+
126+
Documentation is never good enough and there's never enough of it.
127+
Writing docs is a really valuable way to contribute to open source
128+
projects. Many aspects of the docs don't require super-deep knowledge,
129+
especially if they're aimed at newcomers. It's also a great way to
130+
learn more about the language or specific libraries.
131+
132+
- [The Book][rustbook_issues] The main guide to learning Rust.
133+
- [Rust Documentation][rustdoc_issues]
134+
- [Rust by Example][rust_by_example_issues]
135+
- [Rust for C++ Programmers][rust_for_cpp_issues] A tutorial aimed
136+
at experienced C++ programmers coming to Rust.
137+
138+
[rustbook_issues]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AA-book
139+
[rustdoc_issues]: https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AA-docs
140+
[rust_by_example_issues]: https://github.com/rust-lang/rust-by-example/issues
141+
[rust_for_cpp_issues]: https://github.com/nrc/r4cppp/issues
142+
143+
#### Tools
144+
145+
Tools play a huge part in the success of a language. Rust has some
146+
great tool support, in particular with debugging and package
147+
management, but we need much more.
148+
149+
- [cargo](https://github.com/rust-lang/cargo/issues) Rust's package manager and build system.
150+
- [rustdoc](https://github.com/rust-lang/rust/issues?q=is%3Aopen+is%3Aissue+label%3AA-rustdoc)
151+
Produces documentation for the official libraries and user projects.
152+
- [racer](https://github.com/phildawes/racer) Code completion.
153+
- [rustfmt](https://github.com/nrc/rustfmt) Code formatting.
154+
- [multirust](https://github.com/brson/multirust/issues) For managing
155+
multiple installations of the Rust toolchain.
156+
- [homu](https://github.com/barosl/homu/issues) Acts as a gatekeeper for commits.
157+
158+
#### Other Contributions
159+
160+
Try [Github Trending][trending] for currently active Rust projects.
161+
There are a number of other ways to contribute to Rust that don't deal
162+
directly with the Rust repository.
163+
164+
- Answer questions in [#rust][rust_irc], on the [Rust Forum][forum] or
165+
on [Stack Overflow][stack_overflow].
166+
- Participate in the [RFC process][rfcs].
167+
- Find a [requested community library][requested], build it, and
168+
publish it to [Crates.io][crates]. Easier said than done,
169+
but very, very valuable!
170+
171+
[trending]: https://github.com/trending?l=rust
172+
[rust_irc]: irc://moznet/rust
173+
[forum]: https://users.rust-lang.org/
174+
[stack_overflow]: http://stackoverflow.com/questions/tagged/rust
175+
[rfcs]: https://github.com/rust-lang/rfcs
176+
[requested]: https://github.com/rust-lang/rfcs/labels/A-community-library
177+
[crates]: http://crates.io

0 commit comments

Comments
 (0)