Scaling back my involvement in Rust

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 :slight_smile:

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 :slight_smile: 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!

267 Likes

(copying what I said on the library team mailing list)

Wow, Alex, I'm so sad to see you go! Well, I know you'll still be around, but still. Your leadership on the libs team will certainly be missed. With that said, I'm happy for you that you're prioritizing your needs. :slight_smile:

You've been an inspiration to me with your work on Rust, and a stable rock as someone I've always been able to ping and rely on. I've really really appreciated that over the years. The Rust project has benefited immensely from your presence, and it definitely would not be in the state it's in today without you.

64 Likes

Thanks for all you’ve done Alex, and I’m glad you’re not totally leaving. It’s been a pleasure working with you over the years, and Rust wouldn’t be what it is today without you. :slight_smile:

46 Likes

Thank you for all your incredible work, Alex.

I'd like to call out one more of Alex's accomplishments, one that had a great personal impact on me.

Alex developed and maintained git2-rs, an excellent binding to libgit2.

Years ago, I wanted to develop a project using libgit2. I looked at the libgit2 documentation, and saw many functions variously documented as either returning a newly allocated object that requires freeing with a specific function, or returning an object that despite its type should not get freed with that type's free function because another object controls its memory.

This rapidly led me to two conclusions:

  • I don't want to write this project in C.
  • This reminds me of the descriptions of "ownership" and "borrowing" and "references" that I keep seeing when I read about Rust. Maybe I should give Rust a try.

git2-rs was a joy to use, and I fell in love with Rust, and started getting more involved in development and later in governance.

I'm thankful to Alex for developing the project that first drew me in and got me hooked.

Thank you, Alex! And good luck with your next projects!

47 Likes

It feels like every time I dig into a problem turns out the original implementation or the current maintainer is Alex. So I often end up citing this quote from Aaron Turon

When it comes to engineering, If we have a clear engineering problem. We'll just give it to Alex, it will be grate.

I also remember a quote (that I now can not find the citation for) that the algorithm for growing in the number of teams was "fined a thing that Alex just does and make a team to take it over". Finding ways for you to scale back is long long overdue. You have worked so very hard for so very long. I hope our Rust community can rise to the challenge and take up the slack.

37 Likes

I was actually just looking at this number yesterday because I'm also one of the small handful of net-negative contributors... except that my entire contribution (~30k lines) fits inside the difference between your additions and deletions (47K). Lol :joy:

Seriously, though, it's very impressive the impact that you have had on this community. Thanks for all you've done!

17 Likes

First of all: thank you! Thanks for all the work across all the different parts of Rust.

I still very much remember when you visited the Rust Cologne meetup in 2016 and gave an hour-long talk about the state of Rust at that time AND a first look at what we now know as async/await (and later that night you jumped into the hacker space's own ball pit). You also started the tradition of building LEGO at the RustFest impl Days.

Thanks! And looking forward for whatever stuff you continue to build.

9 Likes

Best hacker I've ever known.

44 Likes

Thank you Alex! For all your work, devotion and contribution, take care and see you around!

I am quite excited to see what other things you'll be working on (wasmtime??), because as the previous comments have already shown: when Alex gets involved in something, great things happen.

13 Likes

Sad to see you step down but to be honest I'm impressed how long you stayed involved for 100%.

Maybe I'll see you again sometime in a rust meeting. Last time was for rust 1.0 in Berlin :open_mouth:

Windows support should also be on your list, no? But maybe you're not proud of it :wink: And probably lots more stuff, it's incredible how much you've contributed.

What's going to happen to these? I imagine many of these are used in core parts of the Rust ecosystem, will you try to find new maintainers for all of them?

6 Likes

I have to add my voice to the chorus. One of the things I'd like to acknowledge is the significant amount of work Alex did getting Fuchsia to be an official target - in the earliest days, it was basically a collaboration between the two of us. Now that effort has scaled up and there are large teams on it, which I think is a good pattern to aspire to in a growing language.

13 Likes

Thank you for everything you've done Alex! Rust wouldn't be the same without you. :blush:

2 Likes

Thanks Alex for all the work :slight_smile:

I'll just repeat what everyone else has said: Thank you so much for all your work in the Rust project! I don't have any specific stories of seeing your involvement, just that i've always enjoyed the chances we got to hang out and chat at various conferences or All-Hands events.

1 Like

Thank you once more for everything, Alex.

Your mentoring during the RustFest Zurich Impl Days (in between building a Death Star) helped me land my first change to rustc itself, re-enabling libstd builds for armv5te, which let me use Rust for a major project at my employer at the time.

Talking to you at two of the Rust All-Hands really helped me understand how cargo, libcore, and libstd all fit together, and you were always one of folks that really seemed to want to make stable embedded Rust happen!

Thank you for your technical contributions, as well as your personal contributions. Without either, I don't think Rust or the community around it would be what it is today.

Best of luck on whatever your new adventure is, and I can't wait to see what you do next.

4 Likes

Thanks for everything, Alex. You know I think the world of you already, and your impact in Rust will be felt for a very long time. Happy to see you finding the right balance for you.

If you need anything, always feel free to reach out.

Best wishes, Jonathan

3 Likes

Alex, your ability to turn out high quality code at high speed was one of the most astonishing things I saw during my time with Rust—a time that was filled with astonishing things and heroic individuals. Your commitment to the project was, without a doubt, a pillar of its success. As a mere mortal, one of my biggest successes in Rust was earning your respect.

I’ll never forget riding the bus from SF to PDX, talking about how to stabilize std, then staying up to the wee hours until we had a plan for every last module. Or listening as we waited in line at the burrito truck while you worked to clarify a problem statement, like getting MSVC support working. As soon as you had a clear goal, the problem was as good as solved. Every time.

Standing back and looking at what you’ve achieved straight out of college, all I can say is: the world better watch out!

52 Likes

I feel so much appreciation and admiration for all that you've contributed to the Rust community, and for all the help you've given me personally on my various Rust endeavors. Thanks for being a constant source of helpful advice and incredible tools. <3

9 Likes