I'd like to give the folks in the Rust project a heads up that I'm going to be scaling back my involvement in the day-to-day of Rust. I'm not going anywhere in the near future, but after doing some internal reflection I think it's the right time to start formally stepping down from some explicit/implicit/defacto roles. There's more on the specifics of what this means at the end, but I'd like to indulge myself for a moment as well to wax a bit
I first got interested in Rust in the winter of 2012 as I rewrote my CMU course compiler in Rust. The compiler and standard library at the time had enough bugs that I mustered up the courage to send my first PR to the Rust project on January 20, 2013. My contributions snowballed to the point that I was hired by Mozilla later that year in September to work on Rust full time. Since then I've managed to maintain what feels now like a breakneck pace of contribution for a sustained 7 years. I'm a little tired now and am ready for a break!
I'm a sucker for stats and numbers and I was curious to put some numbers on my involvement in Rust and see how it they stack up. Turns out working in the open on GitHub for 7 years also makes it quite easy to accumulate these numbers In the past 7 years I've:
- Made 3546 commits over 2443 PRs to rust-lang/rust. I've added 700k lines of code and deleted 747k (yay negative!).
- Made 1374 commits over 1010 PRs to rust-lang/cargo. I've added 188k lines of code and deleted 119k (boo positive).
- Been in the top 10 list of contributors for every single Rust release since 0.7.0, excluding today's 1.41.0. According to thanks.rust-lang.org I'm the top contributor in terms of commits (well, human contributor)
- Published 243 crates to crates.io
- Made 41k comments/prs/commits/etc ("contributions" according to GitHub's metrics)
I'm quite proud of my work on Rust and I'm additionally quite proud of where Rust has come. I was no veteran language designer by any means since I started working on Rust basically straight out of college, but in my opinion at least Rust long ago achieved a level of success which I believe is a monument to everyone's efforts leading up to that point and will last the community for years to come.
In 7 years I've naturally had a chance to work on quite a few things in Rust. I don't really blog much and I'm not really active on social media much, so I'd like to list out some of the things I feel most proud of for contributing to Rust. To be clear these are things I felt I had a large part in, but by no means am I the only contributor on these aspects. If it were just me most of these wouldn't have happened or wouldn't be nearly as good as they are.
-
Cargo - hands down the part of Rust I'm most personally proud of my own involvement for. I've derived a lot of enjoyment using Cargo over time and seeing how it grows, although it's also shown me how scarring it can be to maintain a package manager or build system over time.
-
ThinLTO - accounting for what I believe is the single-largest improvement in compile times ever, this is perhaps my proudest contribution to the Rust compiler. I didn't even have to do all the work here as I was able to build on the previous parallel codegen work of others! My pride here comes from pushing this all the way through to shipping it in production, and wow did I learn how hard it is to do that.
-
Rust's build/CI infrastructure - I was the original author of the rustbuild build system (after just a year earlier I swore rustc would never be buildable with Cargo) as well as a major contributor moving our CI from buildbot to Travis/AppVeyor (and later from Travis to Azure). These things feel so easy to take for granted nowadays but the amount of buy-in and technical details needed to get these over the finish line feels unimaginably huge at this point.
-
Macros - Ever wonder what a world without Serde feels like? Or a world without custom attributes? We need not discuss such bleak prospects at this time, but in any case I'm especially proud of being able to push the original procedural macro implementation (strings everywhere!) over the finish line to unlock stable Serde 1.0, as well as helping to push modern procedural macros to stable as well.
-
Backtraces - Wow what a weird thing to single out. Can you imagine a time though without
RUST_BACKTRACE=1
? I'm shuddering too. Maintaining backtrace support is surprisingly nontrivial but has been quite a pleasure over the years. There's all sorts of fun platform gotchas, and I'm still learning them even today with JIT compilers! -
std::fmt
- I think this was my first major contribution to the standard library and I'm always amazed that it managed to survive pretty much unscathed all the way up to 1.0. Not to say it's a perfect feature by any means, but as my first major contribution to the standard library it still holds a special place in my heart. Also I'm glad I wrote documentation for all the random syntax it supports at the time, I still don't remember most of it to this day.
Those at least are some highlights, although I've had lots of fun on other
projects such as incepting libcore, stabilizing std::arch
, removing jemalloc
by default, and developing the wasm story with wasm-bindgen
. If you want to
travel way way back I even had fun managing libnative and libgreen! A
now-shameful contribution to libstd from those days is std::sync::mspc
,
because good lord is that module over-engineered and ready for a replacement
(would highly recommend crossbeam-channel
instead of std::sync::mpsc
).
What's happening?
Ok thanks for indulging me for a moment, but let's also cut to the chase. As of now I'm going to be stepping down from the Core, Infrastructure, and Library teams of Rust. I'll also be removing myself from the rustup and security response working groups. I'd like to remain on the Cargo team as well as the WebAssembly working group, however.
I started out by saing that I'd like to "scale back" my involvement in Rust, which is pretty nebulous, intentionally so. I plan on, for example, removing myself from the reviewer rotation in rust-lang/rust and over time trying to hand responsibilities to other folks/teams as they come up (not that that hasn't already happen to a very large extent). In general though I'd like to give myself space to focus more on other projects.
I'll be wrapping up any reviews I'm currently cc'd on and I'll still be around in the Rust community, I'm not leaving by any measure. I mostly just plan on having my name pop up in fewer places than it currently does. The Rust community has been a pleasure to be a part of for these years, and tons of folks have been directly responsible for making it that way. See y'all all around the internet!