Recapping this week's Mozilla all-hands


#1

As many of you know, Mozilla just completed a company-wide, week-long all-hands meeting. Most of the Mozilla Rust team was able to join, as were several contributors from other companies, and some volunteers. It was an incredible week! I wanted to especially thank the volunteer attendees, who brought much-needed fresh perspectives. I hope you all had as much fun as I did.

As always, this week of face-to-face contact is extremely helpful for brainstorming and digging into issues, but any proposals arising from it must go through Rust’s RFC process; discussion, vetting and decision-making is done in the open.

Here are some highlights:

  • We developed a clever solution to quickly deliver a sound, conservative version of specialization that we can stabilize, with a clear path to refinement later. Thanks, @RalfJung, @wycats, @withoutboats, and @scalexm for helping crack this longstanding nut!

  • We reaffirmed and clarified our story for a “batteries included” Rust through the cookbook and crates.io discoverability. Thanks, @ag_dubs, for your valuable insights from the npm world!

  • We laid out an actionable plan for advertising our success stories, including a specific direction for whitepapers and our blog. Thanks, @carols10cents and @shepmaster, for helping us figure out how to make Rust “boring” in the way that companies want!

  • We continued discussion about formalizing and expanding the sponsorship model around Rust, and delineated clear next steps toward that goal. Thanks especially to @ag_dubs for offering to push on those next steps!

  • We walked through the current unsafe guidelines approach, which many saw here for the first time – and which engendered an enthusiastic response. Thanks, @ralfjung, for the fantastic presentation!

  • We launched the Increasing Rust Reach initiative, which currently has about 220 applicants for 10 spots, and multiple weeks left for more (!). Thank you, @carols10cents, for orchestrating that!

  • We nailed down the remaining steps for stabilizing the no_std ecosystem. Thanks, @brson and @alexcrichton, for leading the charge!

  • We navigated some difficult and long-overdue discussions about moderation, the CoC, and related topics. While we have more work to do here, we managed to tease out some of the core problems that need to be solved, and now have a good foundation for ongoing discussion. Hats off to the moderation team, in particular, both for the care they’ve taken in the past, and their listening ear during the discussion.

  • We iterated through a half-dozen potential module system revamps, and by the end of the week finally landed on an idea we think satisfies all known constraints and will likely be palatable to new and old users alike. Thanks, @withoutboats, for your stamina and deep insights on this topic!

  • We mapped out the next 3-6 months of Cargo work, and dug deeply into issues around build system integration (like native dependencies, build plans, and workflows) over many, many hours. Thanks, @wycats, for your unflinching commitment to what’s best for the long-term ecosystem!

  • We worked through a variety of tooling questions, including the potential for a unified rust tool, the stability story needed for shipping rls/rustfmt/etc via rustup, wasm as a target, and FFI. Thanks, @nrc, for taking on dev-tools leadership so competently!

  • We talked comprehensively through a number of issues around Tokio, async and blocking I/O in general, http/hyper, and so on. Pretty much everyone contributed in some way to these discussions, and coming away from the week I see both a lot of work to be done and, on the flipside, potential for our story to get so much better. Thank you all for the help!

I count myself very lucky to get to work with so many thoughtful, kind, and passionate people, and can’t wait to see you all again!

–Aaron


Types as Contracts
#2

Thank you for summarizing all these discussions here. Are there notes from each of these topics that more fully convey what was discussed in terms of context/constraints, key decisions and actions to take going forward? It seems like each of these bullet points could be a thread of its own.


#3

Thanks for the summary, Aaron. I am really looking forward to tackling some of the things (and given that I will have more time starting next week, I hope to jump in on some)


#4

key decisions

To be clear, in almost all of these cases there are basicallly no decisions made, because decisions are made by the teams, and not all members of a team are at the work week.

So for example, take the modules topic; the discussions we had and the conclusions we came to will result in a new RFC draft; the discussions we had are in no way actually binding! It’s similar for most things.


#5

You can now find more on this at https://internals.rust-lang.org/t/types-as-contracts/5562.