This commit is contained in:
nora 2024-01-03 15:30:47 +01:00
parent 5ee1f729bd
commit 6ba4f4eacd
18 changed files with 231 additions and 5 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use nix

BIN
C-tracking-issue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
E-needs-bisection.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
E-needs-mcve.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View file

@ -4,7 +4,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <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/reset.css">
<link rel="stylesheet" href="dist/reveal.css"> <link rel="stylesheet" href="dist/reveal.css">
@ -16,8 +16,190 @@
<body> <body>
<div class="reveal"> <div class="reveal">
<div class="slides"> <div class="slides">
<section>Slide 1</section> <section>how to contribute to the Rust project</section>
<section>Slide 2</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>
</div> </div>

BIN
me.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "reveal.js", "name": "reveal.js",
"version": "5.0.2", "version": "5.0.4",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "reveal.js", "name": "reveal.js",
"version": "5.0.2", "version": "5.0.4",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@babel/core": "^7.23.2", "@babel/core": "^7.23.2",

3
shell.nix Normal file
View file

@ -0,0 +1,3 @@
{ pkgs ? import <nixpkgs> {} }: pkgs.mkShell {
packages = with pkgs; [ nodejs ];
}

40
speaker_notes.md Normal file
View 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

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

BIN
stabilize-report.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

BIN
thanks-rlo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
triage-bisect-cmd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
triage-bisect-issue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

BIN
triage-labels.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
triage-min-issue.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

BIN
triage-min-res.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB