commit
1
.envrc
Normal file
|
|
@ -0,0 +1 @@
|
|||
use nix
|
||||
BIN
C-tracking-issue.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
E-needs-bisection.png
Normal file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
E-needs-mcve.png
Normal file
|
After Width: | Height: | Size: 7.8 KiB |
188
index.html
|
|
@ -4,7 +4,7 @@
|
|||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
|
||||
<title>reveal.js</title>
|
||||
<title>how to contribute to the Rust project</title>
|
||||
|
||||
<link rel="stylesheet" href="dist/reset.css">
|
||||
<link rel="stylesheet" href="dist/reveal.css">
|
||||
|
|
@ -16,8 +16,190 @@
|
|||
<body>
|
||||
<div class="reveal">
|
||||
<div class="slides">
|
||||
<section>Slide 1</section>
|
||||
<section>Slide 2</section>
|
||||
<section>how to contribute to the Rust project</section>
|
||||
<section>
|
||||
<h2>whoami</h2>
|
||||
<div style="display: flex;">
|
||||
<div>
|
||||
<div>Nilstrieb</div>
|
||||
<ul>
|
||||
<li>contributing since 2022</li>
|
||||
<li>compiler contributors team since 2023</li>
|
||||
</ul>
|
||||
<br>
|
||||
</div>
|
||||
<div>
|
||||
<img src="me.png" height="300">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section>
|
||||
<h2>made in collaboration with</h2>
|
||||
<div>you who sees this right now</div>
|
||||
<div>and you</div>
|
||||
<div>and you too</div>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
## i want to contribute
|
||||
|
||||
- don't need to be an expert!
|
||||
- time and interest
|
||||
</textarea>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
# what to contribute?
|
||||
</textarea>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
# not writing code
|
||||
</textarea>
|
||||
</section>
|
||||
<section>
|
||||
<h2>thanks.rust-lang.org</h2>
|
||||
<img src="thanks-rlo.png">
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
## triaging issues
|
||||
|
||||
easy to get started
|
||||
|
||||
- labelling
|
||||
- minimization
|
||||
- bisecting
|
||||
- adding tests
|
||||
</textarea>
|
||||
</section>
|
||||
<section>
|
||||
<h2>labelling</h2>
|
||||
<img src="triage-issue-description.png">
|
||||
</section>
|
||||
<section>
|
||||
<h2>labelling</h2>
|
||||
<img src="triage-labels.png">
|
||||
<a href="https://forge.rust-lang.org/release/issue-triaging.html">https://forge.rust-lang.org/release/issue-triaging.html</a>
|
||||
</section>
|
||||
<section>
|
||||
<h2 style="display: flex; justify-content: center; align-items: center;">bisection <img src="E-needs-bisection.png" height="60"></h2>
|
||||
<img src="triage-bisect-issue.png">
|
||||
</section>
|
||||
<section>
|
||||
<h2>bisection</h2>
|
||||
<pre><code data-triM>
|
||||
$ cargo new bisect
|
||||
Created binary (application) `bisect` package
|
||||
$ cd bisect
|
||||
$ vim src/main.rs
|
||||
$ cargo-bisect-rustc --access github --regress ice \
|
||||
--start 2023-01-01 --end 2023-12-19
|
||||
</code></pre>
|
||||
<a href="https://github.com/rust-lang/cargo-bisect-rustc">https://github.com/rust-lang/cargo-bisect-rustc</a>
|
||||
</section>
|
||||
<section>
|
||||
<h2 style="display: flex; justify-content: center; align-items: center;">minimization <img src="E-needs-mcve.png" height="60"></h2>
|
||||
<img src="triage-min-issue.png">
|
||||
</section>
|
||||
<section>
|
||||
<h2>minimization</h2>
|
||||
<p>I minimized that issue to 60 lines in 2 hours</p>
|
||||
<a href="https://github.com/Nilstrieb/ice-104649">https://github.com/Nilstrieb/ice-104649</a>
|
||||
<a href="http://blog.pnkfx.org/blog/2019/11/18/rust-bug-minimization-patterns/">http://blog.pnkfx.org/blog/2019/11/18/rust-bug-minimization-patterns/</a>
|
||||
<br>
|
||||
<a href="https://github.com/Nilstrieb/cargo-minimize">https://github.com/Nilstrieb/cargo-minimize</a>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
## existing unstable features
|
||||
|
||||
high value, very needed
|
||||
|
||||
- stabilize
|
||||
- close
|
||||
</textarea>
|
||||
</section>
|
||||
<section>
|
||||
<h2 style="display: flex; justify-content: center; align-items: center;">tracking issues<img src="C-tracking-issue.png" height="60"></h2>
|
||||
<p>tracking the state of a feature</p>
|
||||
<p>719 issues (2023-01-03)</p>
|
||||
<p>new issues aren't ready yet</p>
|
||||
<p>really old issues often have problems</p>
|
||||
<p>go to golden middle :)</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>summarize,</h2>
|
||||
<p>aggregate <b>open</b> questions</p>
|
||||
<p>aggregate <b>resolved</b> questions</p>
|
||||
<p>propose next steps</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>stabilize...</h2>
|
||||
<img src="stabilize-report.png">
|
||||
</section>
|
||||
<section>
|
||||
<h2>...or close</h2>
|
||||
</section>
|
||||
<section>
|
||||
<h2>final comment periods</h2>
|
||||
<img src="stabilize-fcp.png">
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
# writing code
|
||||
</textarea>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
## official tooling
|
||||
|
||||
always in need of help!
|
||||
|
||||
- rustfmt
|
||||
- rustup
|
||||
- clippy
|
||||
</textarea>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
## standard library
|
||||
|
||||
limited review bandwidth!
|
||||
|
||||
- performance improvements
|
||||
- bug fixes
|
||||
</textarea>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
## compiler contributions
|
||||
|
||||
- diagnostics are a great starting point
|
||||
- internal compiler error fixes
|
||||
</textarea>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
## reviews
|
||||
|
||||
- leave review comments on random PRs
|
||||
</textarea>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
# to remember
|
||||
</textarea>
|
||||
</section>
|
||||
<section data-markdown>
|
||||
<textarea data-template>
|
||||
## review times
|
||||
|
||||
- volunteers
|
||||
- up to ~2 weeks
|
||||
- ping if it takes longer
|
||||
</textarea>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
BIN
me.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
4
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "reveal.js",
|
||||
"version": "5.0.2",
|
||||
"version": "5.0.4",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "reveal.js",
|
||||
"version": "5.0.2",
|
||||
"version": "5.0.4",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.23.2",
|
||||
|
|
|
|||
3
shell.nix
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
{ pkgs ? import <nixpkgs> {} }: pkgs.mkShell {
|
||||
packages = with pkgs; [ nodejs ];
|
||||
}
|
||||
40
speaker_notes.md
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# speaker notes
|
||||
|
||||
Hi! Welcome to my presentation about how to contribute to the Rust project. There are numerous ways
|
||||
to help Rust by contributing to it, and I'm going to list some of them, show you how to do it
|
||||
and point you to further resources about it. So after my talk, you hopefully have the knowledge and
|
||||
motivation to get started yourself if you're interested.
|
||||
|
||||
But first, who am I to talk about this? I'm nils, and I've been a member of the compiler contributors
|
||||
team for over a year now. In addition to contributing code to the compiler I've also been involved in
|
||||
other things, like helping other people contribute to the compiler, triaging issues and of course shitposting on Discord.
|
||||
|
||||
But this talk here isn't just mine alone, other people helped with this too, like these silly bingles.
|
||||
|
||||
So, let's start contributing to Rust. Maybe some of you here have contributed something to Rust before,
|
||||
(maybe you didn't even think it was a contribution), and I assume some of you have wanted to do it but have
|
||||
never done it for various reasons, like not knowing where to start or even thinking you're not good enough to do it.
|
||||
|
||||
Here's the good news for that: I'm going to tell you a lot of different ways to get started, no matter
|
||||
your experience level. There are so many things to do that there's something for everyone.
|
||||
Sure, there are some areas that require domain-specific expertise, like writing a MIR optimization in the
|
||||
compiler requires good knowledge of MIR, but there are also things that don't even require knowledge of Rust,
|
||||
so even if you're still a beginner you can help, and I can guarantee that you will learn a lot.
|
||||
|
||||
The only thing you really need is some spare time and interest. Some tasks are very time intensive, but
|
||||
other tasks require a lot less time. That said, if you don't have any spare time, then it's going to be hard.
|
||||
|
||||
With that out of the way, let's look at some places you can contribute to.
|
||||
|
||||
First, we're going to look at ways to contribute that don't involve opening VSCode or whatever your favourite editor is.
|
||||
When talking about contributing to open source projects, we usually think of contributing code, like opening Pull Requests.
|
||||
While this is an important part of any open source projects and no less true in Rust, it's also by far not the only thing to do.
|
||||
And especially those other tasks are often forgotten and underappreciated. We're also not great at this, there's a very nice page
|
||||
called `thanks.rust-lang.org` that contains a list of contributors, but it only counts commit and review counts.
|
||||
|
||||
The first thing I'm going to talk about is triaging issues, something that I have also done a lot myself.
|
||||
Triaging issues is great because it's easy to get started and you can put in very variable amounts of time.
|
||||
You can triage one issue in two minutes, or you can spend 2 hours on an issue. It always depends on the
|
||||
issue and how much time you want to put in, even the small work is nice.
|
||||
|
||||
For issues
|
||||
BIN
stabilize-fcp.png
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
stabilize-report.png
Normal file
|
After Width: | Height: | Size: 207 KiB |
BIN
thanks-rlo.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
triage-bisect-cmd.png
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
triage-bisect-issue.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
triage-issue-description.png
Normal file
|
After Width: | Height: | Size: 271 KiB |
BIN
triage-labels.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
BIN
triage-min-issue.png
Normal file
|
After Width: | Height: | Size: 140 KiB |
BIN
triage-min-res.png
Normal file
|
After Width: | Height: | Size: 96 KiB |