AWS Open Source Blog

How our AWS Rust team will contribute to Rust’s future successes

Since the start of the year, the AWS Rust team has been drafting our charter and tenets. Charters and tenets are the framework AWS teams use to define our scope and priorities. The charter tells you what the team does, and the tenets tell you how the team will do it. Since one of our team tenets is to operate openly and transparently, we want to share our charter and tenets with you; we want you to know what we’re about.

Writing our charter was easy. It’s just one sentence: The AWS Rust team works to make Rust performant, reliable, and productive for all its users. Enough said! Writing the tenets, though, took a bit more work.

Wait, there’s a Rust team at AWS?

Yes! In fact, AWS has been using Rust since at least 2017, across a number of services. For example, Firecracker, written in Rust, launched in 2018 to provide the open source virtualization technology that powers AWS Lambda and other serverless offerings. More recently AWS launched Bottlerocket, a Linux-based container operating system written in Rust, and the Amazon Elastic Compute Cloud (Amazon EC2) team uses Rust as the language of choice for new AWS Nitro System components, including sensitive applications such as Nitro Enclaves.

As adoption of Rust within AWS has grown, so has our investment in the project and community. In 2019, AWS announced sponsorship of the Rust project. In 2020, AWS started building a team of Rust maintainers and contributors, and in 2021, AWS joined with other Rust users and the Rust project to launch the Rust Foundation.

The AWS Rust team started by figuring out how best to relate to both AWS and the broader open source community. We knew we wanted to operate in the open and as members of the community at large. At the same time, we knew that we wanted to take full advantage of being at AWS. Drafting a charter and tenets was part of our process for finding a way to do both.

Our tenets ?

People use tenets for everything at AWS [1]. They are an effective way of conveying what a team, project, or other sort of effort is all about. As a newcomer to AWS, one of us (Niko) is just learning about tenets, and he’s really into them. You may start to see them cropping up in all sorts of places.

Each of the tenets below captures one core belief or principle that informs our team’s decisions. They are specific to our team and help us focus on delivering value. The tenets are not meant to be written and forgotten. They are actively used during day-to-day operations, to help guide us as we figure out how to resolve tradeoffs.

Tenet 0: We are an AWS team.

We are an AWS team. We lead the development of tools and mechanisms for building and operating services in the cloud. We leverage our proximity to AWS services to gather insights that help us improve Rust.

Rust has always benefited from being a “practitioner’s” language. In the beginning, Rust used the Servo project[2] to guide it; browsers have pretty demanding performance requirements, so that pushed the language in a lot of interesting directions. As Rust adoption grew, the resulting feedback helped extend Rust to target more and more domains.

To that end, we want this team to take full advantage of what AWS has to offer. Rust is being used to deliver all sorts of services here at AWS, such as Amazon Simple Storage Service (Amazon S3), Amazon Elastic Compute Cloud (Amazon EC2), Amazon CloudFront, and more. We can work closely with those teams to learn what is working well and what could use improvement, and then bring those lessons back to Rust. We can also work with AWS customers who are deploying systems built in Rust and find out what they need.

There’s another key point to this tenet. As an AWS team, we have a focus. We see our role—together with others in the Rust community—as helping to improve Rust for the cloud. This is what we know best. We’re also excited to see Rust grow in all other areas, but we think it’s best for others to take the lead there, with our team taking a supporting role.

Tenet 1: We work in the open.

We work in the open. Sharing and collaborating on our designs improves the quality and value of our results for everyone, including AWS.

We are an AWS team, but we are also Rust contributors, and this tenet means that we will operate in the spirit of openness and transparency. Niko, for example, plans to continue posting ideas to his babysteps blog[3] before they are fully formed, and he is counting on the Rust community to continue to poke holes in them.

When the RFC process was first created, Niko initially thought of it as a way to help steer other people’s designs. But, he soon discovered that what he liked best about it was that it gave other people a way to help steer his own designs. Time after time, people would point out a way to make an idea better.

We see the same thing happening now with respect to AWS. We absolutely want to learn lessons from our teams at AWS. But, also, we absolutely want to bring those lessons to the broader community and combine them with the lessons from other people and from folks at other cloud providers[4]. This approach delivers better results for everyone.

Tenet 2: We help Rust deliver on its promise.

We help Rust deliver on its promise. We share Rust’s mission to make systems programming not only efficient, safe, and productive but also accessible to new audiences.

We love Rust for its focus on enabling people to build high-performance, parallel systems with strong safety guarantees. This vision was captured well in Lindsey Kuper’s classic haiku:

A systems language
pursuing the trifecta:
fast, concurrent, safe

Beyond its technical properties, though, another core value of Rust is very important to us: accessibility. By accessibility, we mean actively looking for barriers to entry and tearing them down. Sometimes those barriers are technical, and other times, the barriers are social. Either way, we share with Rust the belief that opening up systems programming to wider audiences will deliver the best results for everyone[5].

Tenet 3: We support the communities we are a part of.

We support the communities we are a part of. We do our share of the “needful things,” like triaging issues, grooming backlogs, mentoring and onboarding other contributors, participating in design discussions, and fixing bugs.

Open source needs more than coders. There’s a lot of work to be done; it’s not always fun, but it’s important. This tenet complements the first tenet (“we are an AWS team”). When discussing that tenet, we mentioned that we have first-hand expertise in the cloud, but there are other areas where we would expect others to take the lead. This tenet is saying that we will help support folks leading that work, whether that be by reviewing, coaching and mentoring, or just by participating in discussions and giving our two cents[6].

Tenet 4: We help connect AWS and the Rust ecosystem.

We help connect AWS and the Rust ecosystem. We help AWS teams navigate all things Rust and facilitate their active participation in the projects they depend on.

Part of our job is to connect other AWS teams with the Rust ecosystem and the Rust project. We’d like to enable a world where all AWS developers using Rust participate in the maintenance and improvement of the libraries we use, or of the compiler itself. That effort will have a ton of benefits. It will help to sustain the libraries, of course, and it will identify opportunities for optimizations or other improvements that will benefit our AWS services. Win win[7].

Tenet 5: We focus on what we know best; we don’t try to do everything.

We focus on what we know best; we don’t try to do everything. Our team includes leaders in the Rust compiler, language design, and the Tokio stack, and these are the areas where we can make the most impact.

There’s been a theme throughout this post of comparative advantage—our team is going to focus on the things we’re best at and support others in doing the same. The point of this tenet, though, is to emphasize the word focus in that sentence. It would be very easy for us to spread ourselves too thin to deliver high value, and we really want our team to avoid that.

Unless you know better ones…

Every list of tenets traditionally starts with “unless you know better ones.” The idea is that tenets are always evolving as circumstances change. These are our tenets for now, and we expect them to evolve as we learn more about the best ways for AWS and the Rust community to work together.

Notes

  1. We even have tenets about tenets! Here is one of them: “Distinguish rather than elevate. Tenets capture what makes a team different, not what makes it superior.” –Shane
  2. Dang it feels good to be able to link to the Servo Foundation! How cool is that? –Niko
  3. Shameless plug. –Niko
  4. That’s my favorite Amazon leadership principle in action, “Leaders are right a lot. They have strong judgment and good instincts. They seek diverse perspectives and work to disconfirm their beliefs.” —Shane
  5. Go read “How Diversity Makes Us Smarter: Being around people who are different from us makes us more creative, more diligent and harder-working” by Dr. Katherine W. Phillips –Shane
  6. Or even just the occasional well-timed ❤️ emoji. I know how far that can go! Not sure who needs to hear this right now, but you’re wonderful and valuable just as you are. –Niko
  7. The best kind of win. –Both of us
TAGS:
Shane Miller

Shane Miller

Shane Miller leads the AWS Rust team, and she is chair of the Rust Foundation. Shane started working in software development as an engineer nearly 30 years ago. Since then, she’s held the roles of principal engineer, university faculty, business owner, principal technical program manager, and senior engineering manager.

Niko Matsakis

Niko Matsakis

Niko Matsakis has been working on Rust since 2011, and he leads the open source Rust language design team. He joined AWS in January 2021, where he serves as the tech lead for the AWS Rust Team.