Rust At Microsoft And Chairing The Rust Foundation
The following is my interview with Nell Shamrell-Harrington, Principal Software Engineer at Microsoft and Chair of the Rust Foundation Board of Directors. Nell was able to give me the run-down on everywhere Rust is being used at Microsoft, share some tips about Rust adoption within large organizations, and give some advice on getting hired at Microsoft. We also talked about getting involved with the Rust Foundation and Rust Project. Nell does a lot of work in public and behind the scenes to grow and support the community. I hope you enjoy this opportunity to hear from a pillar of the community as much as I enjoyed having the conversation! To see jobs available at this and other cool rust companies, check out our extensive rust job board.
Brought to you by:
Want to advertise here? Reach out! filtra@filtra.io
Drew: Usually I ask the person about their company, but that question doesn't really make sense with Microsoft. So, I thought it would be interesting to ask what your day-to-day work looks like.
Nell: Sure, yeah. Before I came to Microsoft, I did nine years of startups. It's really nice that now when I say where I work everyone knows where that is. Day-to-day, I work on a large variety of things. The overall org I'm in is called Azure Core, which is responsible for, as the name implies, the core functionalities of Azure. That’s compute, storage, networking, and things like that. Within Azure Core, which is a big organization, I sit in the Azure Core Linux engineering team. So, we’re focused on the Linux experience on Azure.
Nell: When I'm on call, I'm on call for Linux VM provisioning across all of Microsoft's regions and clouds. That’s manageable, but it can be very intense. There's a lot of Microsoft regions and clouds. When I'm not on call, I'm working as tech lead for the Linux community engineering team. We focus on upstream Linux contributions to community distributions, such as Fedora and Debian. We work to make sure not only that Azure supports these distributions, but that the distributions also support Azure in their documentation and how they work. So, we make sure that the two of them work well together. Last year, one fun thing I got to do was make my first two contributions to the Linux kernel, which was really exciting. I removed some import statements that were no longer necessary, and that got accepted right away. Removing no longer necessary code is a good way to get your foot in the door.
Drew: Yeah, that's funny. I actually have heard multiple people say that their first contributions to a new project were cleaning up things like that.
Nell: As a long-time open-source maintainer, I love getting pull requests like that.
Drew: I bet. It always has to be done, but I bet a lot of the core people don't want to do that stuff. So, it's great to have people come in and help keep things clean.
Nell: Yep, and then the last thing is that I also co-lead the Memory Safety SIG in the OpenSSF. That’s also part of my job at Microsoft. And, of course, I represent Microsoft on the Rust Foundation Board of Directors, where I serve as chair.
Drew: You sound busy.
Nell: Very, very busy, but it's good. It's stuff I'm interested in.
Drew: I didn't really realize that you worked on Linux stuff. That's cool to find out.
Nell: Yeah, Linux on Azure is enormous. They need a lot of engineers to make sure it's as good an experience as possible.
Drew: That makes sense. So one of the things that we mentioned wanting to talk about when I reached out for the interview was Rust adoption at Microsoft. It seems like there’s this growing drumbeat of Rust's adoption at Microsoft, but I don’t really feel like I have the full picture. I thought you would be the perfect person to kind of help me and the readers understand what that looks like. Could you lay out the different highlights of where Rust is being adopted?
Nell: Sure. So, the area where we're seeing the most Rust adoption is in Azure. It's a much younger codebase, so that kind of makes sense. I'll touch on Azure more in a moment. But, there are a few other highlights. At the hardware level, we're building firmware modules in Rust as part of UEFI. UEFI is a replacement for BIOS that allows devices to boot up with some fundamental security features that are not possible with BIOS. As your readers will know, firmware operates at the very foundational level of any device. So, if an attacker compromises the firmware, they get very deep control over the system. So, we are writing our firmware modules in Rust to reduce the attack surface of our devices at this fundamental level.
Nell: And then of course there’s what Microsoft is well known for, Windows. We are increasingly incorporating Rust into Windows. Windows is, as you can imagine, an enormous codebase. So, we have been starting by porting components into Rust. One that I can talk about is DirectWriteCore, which is involved in rendering fonts- those lovely fonts we all use on Windows. That was ported to Rust from I think C, and we saw something like a 5 to 15% performance improvement.
Nell: Then there’s also the other major software Microsoft is well known for, Office. We are also incorporating Rust there. So far, that has included re-implementing the algorithm that powers semantic search in Office 365 in Rust. I'm sure some of your readers are Office 365 users. So, when you search for Word Documents, PowerPoint slides and so forth, the algorithm that powers that search is now powered by Rust. I know there was a big performance improvement with that project.
Nell: As I mentioned earlier, most Rust adoption is happening in Azure. This includes Azure Boost, Azure's new integrated hardware security module, parts of Hyper-V, which is Azure's hypervisor that powers the Azure platform, and HyperLite which is a lightweight virtual machine manager that you can use to create micro virtual machines or sandboxes to run untrusted code in a safe and very low-latency environment. Those are the major ones that I can talk about. There are experiments going on all around Azure, and it's been really cool to see all the adoption popping up.
Drew: Yeah, that's super cool to see it kind of spreading to all the major parts of the business. I know you mostly deal with Azure. You mentioned several projects going on there. Is there any one project you’re particularly excited about?
Nell: Yeah, I'd say the one I'm most excited about is Azure Boost. Azure Boost is a physical card that is attached to a dedicated server in Azure. All of the software that's involved with running the hypervisor and managing that dedicated host is offloaded from the host onto this physical card. This allows Azure customers to use the whole host to run more VMs and bigger VMs in a more isolated environment than in traditional dedicated hosts. As you can imagine, when you have software that's controlling very fundamental parts of the hardware, particularly from a separate card, security is absolutely crucial. So, the software that runs the dedicated card and manages the host virtualization from that dedicated card is written in Rust.
Drew: One of the things I look at a lot is what categories or industries Rust adoption is growing in the most. We’ve seen the growth at Microsoft but never have been exactly sure how to categorize it because of all the different lines of business within Microsoft. But what I’m hearing you say is that it's totally the cloud piece that's driving the growth.
Nell: Yeah.
Drew: I think that's a huge narrative in Rust overall. A lot or maybe even most of the cloud companies are adopting Rust to some extent. The growth has been cool to watch. Speaking of which, I think you have a great view of all this as the chair of the Rust Foundation Board. I wanted to ask you a couple of questions about that.
Nell: Certainly.
Drew: What's been most surprising or challenging in your role kind of stewarding the Rust ecosystem at that level?
Nell: Before I came to Microsoft, I was at Mozilla. Starting to get the ideas together for the Rust Foundation is one of the things I was working on. The idea was to have an entity that could have a bank account where companies, especially big tech companies, could donate money to facilitate the Rust ecosystem. I had been a member of the Rust community for a really long time. I've been the lead editor of This Week in Rust since 2020. So, I had a really good feel for what interacting with the Rust community at the foundational level would be like. But, what I didn't fully appreciate until later was how different the culture is at different big tech companies. It's not a monolith. Microsoft's culture is very different from Amazon culture, which is very different from Meta's culture, different from Google's culture, different from Huawei's and so on. We didn't just need to figure out how the Foundation interacts with the project, which is technically a separate entity. We had to figure out how to have very different companies interact with both the Foundation and the project. And, there were some stumbling blocks at first, as there always are. It was a very big challenge, but I feel like we're in a much better place now.
Drew: I think that is an underappreciated aspect of these big companies, and it might make my next question a little weird. So, feel free to take it in whatever direction makes the most sense to you. What are some of the learnings about Rust adoption in these big organizations?
Nell: Something that seems consistent across many big orgs or even small orgs is that once developers get past the initial learning curve and start writing Rust, they really like it because of the memory safety aspects and the very helpful error messages that guide you to write better code. There is certainly an initial hesitation. For example, Microsoft has been writing things in C and C++ for a very, very, very long time. So, within Microsoft, there’s been plenty of initial hesitation. But, once people actually use the language, it is a game changer.
Nell: Getting over the initial learning curve is probably the hardest part of Rust adoption overall, but it has been getting better. I first started writing Rust in either 2016 or 2017 when I was at a startup called Chef. And the learning curve was huge. But, it has been getting better, both because of improvements to the language itself and the training that is available. Much of that training is free and open source, and I'm highly confident that this will continue to improve rapidly.
Drew: Is the Foundation invested in sort of easing the learning curve at all? Are there any initiatives around that?
Nell: There is a training initiative, with which there's active work ongoing. Something we're hearing more from companies outside the US than companies in the US is a desire for some sort of certification. They want their developer to do a particular training, pass a test or something, and then get a certificate that shows what that developer's base knowledge of Rust is.
Drew: Okay, interesting. You said that it was mostly outside of the US where you've heard the request?
Nell: This is not a scientific survey by any means, but I've been hearing it more from companies outside the US than inside the US. That said, there's certainly companies inside the US who are interested in that as well.
Drew: That kind of matches cultural differences I've seen. So another thing that I wanted to ask about is a follow-on on that. In your role at Microsoft, do you end up getting involved with other teams with their Rust adoption at all? Are you kind of a Rust advocate in the organization or do you just work on your team?
Nell: I do get involved. A lot of the time it's other teams that are just starting with Rust and are looking for people to do initial code reviews. So, I get involved there. We also have a pretty good internal Rust community within Microsoft. For example, there's a Teams channel where people can come in with questions. The best thing about the Rust community in general for me has always been how supportive it is.
Drew: Yeah. It’s a notably supportive community.
Nell: I'm seeing a similar level of supportiveness with the Rust community inside of Microsoft as well. People are very willing to help others get started and answer the questions that come up. Also, I'm not by any means the sole Rust advocate. In fact, we have a cloud advocate, Yosh Wuyts, who is a developer advocate for Rust.
Drew: Since Microsoft is such a large company, does the culture vary a lot from team to team?
Nell: It definitely does. Microsoft is 200,000+ people. So, I'd say it varies a lot from organization to organization, and the organizations are pretty darn big. It varies to a lesser extent from team to team within an organization. It’s also changed a lot recently. I would say that ten to fifteen years ago, I would not have wanted to join Microsoft based on what I knew about the company's overall culture. When Satya Nadella became CEO, he stewarded a massive improvement in the culture. The way he framed it was, "We're moving from a know-it-all culture to a learn-it-all culture." That change took the better part of a decade, but it is real. If that hadn't taken place, I wouldn't have wanted to join Microsoft, and I probably wouldn't have wanted to stay at Microsoft. So yes, there's a variation in culture from team to team, but that overall improvement of Microsoft culture has really made my experience in everything that I've touched so far.
Drew: I hadn’t heard that "know-it-all to learn-it-all" quote. I love that. I assume part of that has been manifest in the embrace of open source that we've been seeing.
Nell: Very much so.
Drew: So just to clarify one point, when you talk about an organization within Microsoft, do you mean like Office versus Azure type thing?
Nell: Yeah, exactly. Office versus Azure. Azure is also huge. So, Azure Core for example is an organization within Azure. I'm sure there are some differences between Azure Core and other large organizations that are part of Azure.
Drew: If someone wanted to find a job where they can write Rust at Microsoft, I imagine just applying to Microsoft is kind of rolling the dice. So, how would you advise someone to go about specifically targeting Rust jobs at Microsoft?
Nell: Honestly, the best thing is to go to careers.microsoft.com and use the search term "Rust." Headcount is usually for specific teams at Microsoft. Even in my case, searching for Rust at Microsoft is sometimes how I learn about different teams that are using Rust. I don't know if you can set up an alert on that. You might be able to, but I haven't delved into that.
Nell: Also, I would recommend following Rust developers at Microsoft on LinkedIn. A lot of us will post positions when they open on our teams. Also, knowing someone on the team you’re interested in can be a very good way to get your foot in the door. That said, if you don't know anyone on the team, definitely still apply. That's not necessarily a barrier. It's just a helpful thing if you have it.
Drew: Totally sound advice. One thing I wasn't sure about is the return to office trend. I haven't heard a lot from Microsoft about that. Are you guys in person now or what's going on there?
Nell: So far there has not been an RTO mandate, which I'm really happy about because it's a pretty long commute from where I live to the Microsoft campus. It's about an hour going in. It's sometimes 90 minutes coming back. I don't want to make that commute every day. Obviously, it is possible that this all changes. Obviously, those decisions are way, way, way above my head. But, so far hybrid work has continued to be the norm. The official guidance at Microsoft is that, by default, you can work remotely up to 50% of the time. There are some positions where that's not possible. For example, you might have to use very specific machines or work in specific areas. For the vast majority of us, you can work remotely up to 50% of the time and you may be able to work more with the permission of your manager. We’re also often spread out. For example, I live in Seattle. My manager lives in Florida. My skip level manager lives in Texas. My skip, skip lives in North Carolina. We are all over the place. So, thankfully no one's had any issue with me working remotely. I go in once or twice a week, but the rest of the time I'm working from home.
Drew: Do you get involved with hiring decisions at all? Is that part of your work?
Nell: Yeah, I've done quite a few interview loops.
Drew: In your experience, how do people tend to think about hiring at Microsoft? Are there characteristics that you're looking for?
Nell: When it comes to the behavioral part of an interview, there are core competencies that Microsoft gears its interview questions around. Those are collaboration, drive for results, customer focus, influencing for impact, judgment and adaptability. For the record, I did not have that memorized. I have that screen pulled up in front of me. But anyway, there are questions about experiences that speak to those competencies in the interviews.
Nell: Another nice thing is if you head to Microsoft's careers website, there is a section for hiring tips. There are some useful ones that include things like key things to prep. That includes the core competencies, how technical interviews are conducted, and so forth. Something I do like about Microsoft is the way technical interviews are done, because I've never been a person who's comfortable with whiteboarding. We use a platform that allows candidates to use an actual compiler for almost any language they want. It's a shared screen between the candidate and the interviewer. So, you can actually run your code and get the feedback that error messages give you. I find that a much better experience than trying to remember syntax and such in an interview.
Nell: Overall, the biggest tip I can give is keep on applying if you don’t get the position you initially applied for. Unlike other big tech companies, there's no cool down period where if you don't get a position you have to wait a certain amount of time before you can interview for another position. Microsoft does not do that. There are positions opening all the time. And, if your first application does not get accepted, the next one might. So definitely be persistent.
Drew: Remind me what it was you mentioned earlier. Were they called competencies?
Nell: The core competencies, yes.
Drew: Can you explain a little bit more how that works?
Nell: When we do an interview loop, each interviewee is assigned one or more core competencies to evaluate. So, for example, I've evaluated candidates for judgment. When that happens, I usually ask them questions about areas where they've had to use judgment. The question will be something like “Can you describe a time when you've had to make a judgment call about a technical decision or a non-technical decision?” I might ask them how they had to weigh different trade-offs and how those tradeoffs influenced the decision they ultimately made? That can show me a lot about someone's judgment.
Nell: Collaboration is another big one. I might ask someone to describe a time when they had to collaborate with another team where they didn't really know the other people on the other team well. These questions are always pretty open-ended, but what I'm looking for is people's experience in those core areas. My interviews are always over Teams. So, what I also do is copy and paste the question into the Teams chat so the interviewee can have it in front of them. Not all interviewers at Microsoft do that, but that's something I try to do because I know that always gave me a feeling of reassurance when I was interviewing.
Drew: So, to wrap things up, I wanted to ask from the Rust Foundation angle if there are opportunities to get involved that you think more people should know about?
Nell: Sure. So, I think it’s important to set the context beforehand that there is a separation between the Rust Project and the Rust Foundation. The Rust Project controls the technical direction of the Rust compiler, Rust language, et cetera. The Foundation supports the Project in those decisions, including running an on-call rotation for crates.io and other things, but it is technically a separate entity.
Nell: So, to get involved in the Rust Project, I recommend checking out the Rust language community site. That will guide you to where the community has conversations about different topics. This is how I got involved in the project years ago. And, it's a great way to get to know how the project works and where you might want to become involved.
Nell: To get involved in the Foundation, you can go to the Foundation website and check out the "Get Involved" section where you'll find some information about becoming a member of the Foundation, potentially hosting your project at the Rust Foundation, and more. For both the Rust Project and the Rust Foundation, I would love to see as many people as possible at RustConf 2025, which this year is in Seattle. It's in my hometown, so I’m super excited about that. That'll be from September 2nd through 5th. Lots of Foundation people will be there, and lots of Project people will be there. It's usually one of the most positive-feeling technical conferences that I've ever been to, and I've been to a lot of them. So, it's wonderful to get that sense of community as well.
Drew: Is there anything else you want to talk about that we didn't get the chance to talk about?
Nell: I guess I would just say that the security problems we face are only going to get bigger and more complex. Organizations are going to need more and more to incorporate security into their software at the compiler level. So, being skilled in the languages that allow you to do this, such as Rust, is only going to become more valuable. That’s especially true for that lower-level software that runs really close to the hardware.
Drew: I think you’re right. Personally, I’ve been seeing a lot of momentum behind that idea in, well, specifically defense actually. But, I think all of embedded- robotics, aerospace, etc. is realizing the value of the security that Rust brings. These are physical systems, and they are often some of the most sensitive systems in the world. They need to be totally secure. So, I think you're exactly right. I expect to see a lot of growth in Rust because of that. Thank you very much Nell. I really appreciate your time.
Nell: Thank you!
links:
Know someone we should interview? Let us know: filtra@filtra.io