Microsoft Abandons DotNet For Rust?! - Uncover The Truth
February 19, 2024
• 2,003 views
You probably saw the news... Microsoft is abandoning DotNet and C# in favor of Rust! Except that news is completely exaggerated and a misrepresentation of what's actually happening in Substrate, O365, and M365 teams at Microsoft. Thanks to a Reddit thread, things got a bit out of control so I stepped in to discuss C++, Rust, and the usage of CSharp with our services.
Check the thread here:
https://www.reddit.com/r/dotnet/comments/1aezqmg/came_across_a_job_posting_on_microsoft_career/
Have you...
View Transcript
all right so you've probably seen by now that Microsoft is completely abandoning C to go in favor of rust and of course this is completely incorrect but this is something that seemed to get a little bit of traction on Reddit thanks to a job posting a couple of weeks back and fortunately for me I engaged pretty early on to try and bring some clarity to that thread this has already been covered by some big YouTubers like Nick chaps and in fact he pulled up my comment and discussed it on his video which I thought was pretty cool but I figured because I wrote the comment I discussed it and I actually am one of the teams that is hiring for people working in Rust that it would make sense that I try to have a video about this whole conversation now before I jump over
to Reddit just a quick reminder to check that pin comment for a link to my free Weekly Newsletter and my courses on dome train with that said let's go over to Reddit and see what's up so originally this post went up and it was regarding a job posting for Microsoft hiring Russ developers and this blew up a little bit out of proportion but what this says is that someone came across a job posting on Microsoft's career page which says that they're rewriting C services in Office 365 with rust now for a little bit of context I just transitioned teams at Microsoft I'm a principal level engineering manager there and I managed multiple deployment teams well co-managed multiple deployment teams that are in M365 or Office 365 and we were responsible for deploying hundreds of services that are built inet now since then and right around
the time that this was put up I was actually transitioning from the deployment teams into a team that does routing and proxying so I feel that I am someone that can speak to this with a high degree of accuracy and when I was reading through some of the comments on the thread including this original post on the title I realized that this was getting a little bit out of control now I'm not going to pull up the career posting because since this went up and because of all the comments this did get adjusted and I'll touch on that by the end of this video to let you know what kind of happened as a result of of all of this conversation now I'm going to scroll down to find my comment here because this is really what I responded to originally to try and bring
some clarity to this thread so the first part that I want to call out is no absolutely not Microsoft is not abandoning CP and.net to try and move everything over to rest there are hundreds of services within Office 365 alone that are built on CES sharp.net and there's absolutely no plan to move away from that in fact as part of the deployment teams I was responsible for helping teams transition over to later versions ofet and those teams are getting tons of benefits out of the newnet versions getting performance out of that which means we're able to save a ton of money as part of our entire service offering so no it's not something that's taking place at a massive scale where everyone's moving over to rust and abandoning C sharp.net quite the opposite we are still heavily investing into C sharp.net there are plenty of
service owners that are completely happy staying on this track because they're getting tons of benefits out of it and again we're talking talking about hundreds of services now what I need to call out here is that when it comes to rust this is something that is being looked at for a handful of services now the other thing that's worth mentioning too is that for these handfuls of services these are things that are already written in things like C++ or they're written inet and they are at this point we're migrating them to a new version ofet is already putting them at the point where we may want to consider rewriting them because we want to squeeze other performance characteristics out of them when decisions like this happen and they're under analysis this isn't something that someone just woke up one day and said you know what
Russ is a pretty cool language I think we should switch to that in abandon CP and.net this is a very select number of services and pieces of our infrastructure and like I said some of them are already not written in net for these very reasons so out of this handful of things that are being looked at we have some things that are not in net they're in C++ we have some things that aren't even even built yet that we're considering building and going if their performance critical we may want to consider just going straight into rust for them and a handful of other things that are being migrated from net to C++ or rust but the number of these things is extremely limited and I wanted to give you some context here so for example the team that I'm now going to be a manager
for we do routing and proxying we're talking about proxying and routing at a planetary scale for services that means that we need to be able to support extremely low latency and tons and tons of requests coming through we're not just talking about a service or a website that has 100 users a thousand users you know maybe tens of thousands of requests per day we're talking millions billions so being able to squeeze a tiny bit more performance out of something like this goes a huge way in terms of savings and this is a really big business decision because we have tons of developers at Microsoft that are excellent in CP and.net there's a smaller number of these developers that are good in C++ and they've written some of these pieces already but the number of developers that are excellent in Rust is even more limited so
in terms of getting the agility and our ability to deliver quickly in things like rust compared to things like C and net means we have a smaller pool of people to be able to pull from so this is a tradeoff in terms of our development agility and our ability to have software that's going to be able to operate more quickly at a massive scale so what I was trying to call out here is that for these particular situations we're just trying to be pragmatic about which tool we use so I'm going to scroll through some of the comments and we can see how some people responded to this so the one comment that I got right at the beginning was right here that it seems uh to this person that it's ironic that we have these REITs taking place and that there's mixed messaging coming
out of Redmond and I think that this is kind of just a failure to realize the scale of what we're talking about here we're not talking about massive rewrites across the board of all these Services no one's abandoning CP andet theet team is still investing heavily into performance the service owners that are still using net are getting tons of benefits out of the performance there's really something missing here I think from this person's perspective because we only have a couple of things that are moving to rust and like I said already some of them are already not inet so I'm not really sure what mixed messaging they're talking about I think this is just a matter of us looking at some you know very general purpose language like C and and then trying to say we have these very specific scenarios that we need a
more highly optimized language for so I wrote this response back to this person just trying to say like hey look we're talking about these very hypers specific situations so I'm not really sure if it landed well for them but I tried to offer that context I had this person trying to tell me that uh my definition of rust and calling it a system level language wasn't really accurate they're saying that it's supposed to be a general purpose language and maybe that is the goal of it but I really don't think at this point that people are you know making as p.net core style applications and rust and having the same flexibility of something like C I could be wrong about that but I really just think that this person was missing my point which is fine you know if they don't want to call it
a system level language and they do see it as more general purpose that's cool but even something like C and C++ I don't see those being as general purposes something like c i could be a little bit biased there I probably am but in terms of just the ease of use and the different areas that people use them in I think of things like C C++ and rust and there's some other languages that are a lot more specific for performance and you know resource utilization so you can see right here that it's characterizes a general purpose language like C by its maintainers I just don't really think that that's accurate in terms of how people are currently using it but that's my opinion I had this person a little bit earlier today before I recorded this video say cool now go make C rust fast
um I don't really know what this person thinks I do like I just run the net team or something I work at Microsoft like thousands of other people but I don't work on the net team I don't even work with the net team I work in Office 365 and I have nothing to do with the net team uh I just am one of the teams that has openings for being able to have rust developers work on some of these pieces so I don't really know what this person was after maybe their butt hurt or something or just trying to get you know some reaction out of me but here you go here's the reaction so have fun with that I guess um I think there's a couple of other comments that I wanted to scroll through here that were kind of interesting cuz I think
some people did get it there's a lot of people that really missed it and you know they're kind of overreacting to oh my God you know Microsoft is going over to Rus and abandoning C but um you know this person here saying this is job this is a job posting referring to substrate so for context substrate is the infrastructure level of all of The Office 365 and Microsoft 365 services that we build on top of so like they're saying here this does not mean the entirety of 0365 is being Rewritten in Rust and uh like substrate is not being Rewritten in Rust like absolutely not that would be pretty ridiculous it's just a small subset of it um this one I thought was interesting so I responded to this but this person said service is moving to if not already running in Linux servers rust
would yield better performance than net it's the obvious choice and I don't think that this is an obvious choice I think if you take a very narrow lens of saying we only hyp specifically care about performance then sure you could make an argument that perhaps rust is a more obvious choice for the same reason that c or C++ might be as well but I think the reality is that it's not that trivial we don't just get good rust development for free it's a huge cost to a development team that has C and net developers to bring in and start almost from scratch with rust like that's not a free thing that you get so it's not just a trivial business decision like it keeps saying it's not like someone just woke up and said rust is cool let's use rust it's not an all obvious
choice like it's a lot more involved in that and it means that we are going to be trading our development agility to be able to hopefully set us up to have more Performance Services in these very specific cases and you can see that they're a little bit salty in some of their comments right like this person said do you design systems just with performance in mind like I mean that's part of it right they're it seems like they're only specifically focusing on that they say no I designed systems to waste money and ego trips like I just think that this person's completely Miss the point like it's not it's really not that obvious just to say oh go to rust um you know like I said a handful of times already this is some things that are already in C++ and those decisions weren't just
a light decision to make in the first place you can see this person I think is kind of getting the idea based on the comment from a Microsoft employee above I think that's probably me it's more likely that lowl c that's essentially close to C++ where you use unsafe context and pointer arithmetic they could write on C++ and like I said yeah we have a lot of it that in this small context is in C++ already but they've decided to use rust for it instead and again we have some stuff in C++ that's staying in C++ we have some stuff in C++ that we'd like to move to rust we have some stuff that hasn't been built yet that we probably would have built in C++ and we've made a decision that we should just go to rust in the first place and then there
is tons of other stuff that's just staying in C andet because it works awesome so a majority of their services will be staying on C while the more lower level stuff just gets moved over to rust yeah and it's like I keep saying a very very tiny subset of these pieces I hadn't seen this originally but this is a former Microsoft developer here so I thought this is a really good response um the last part here just saying C especially with net core is at an amazing sweet spot and one should not hesitate to invest their time on it and I thought that was a really important thing to call out because there's a lot of you know perspective on this thread where you know people are freaking out about Microsoft just abandoning CP and.net and I think it's just a knee-jerk reaction to the
job description that went up this person here it's another person that's kind of taking the performance part I think a little bit too specifically right so say why rust why not Zig Zig is faster than rust and this person said more people know rust and it's fast enough I can't say I've ever met a single Dev who knows or cares about zigg now I don't know anything about zigg and I hear nobody talking about zigg that doesn't mean that there aren't Zig developers but there certainly are going to be more rust developers and I think based on where things are at it's going to make sense that if we're looking at C++ or moving to rust that we're going to have an easier time finding rust developers to help out with this stuff so if we're looking at you know squeezing out more optimizations we're
probably at the point let's assume that zigg is faster for this stuff let's just assume I don't know how much more performance we would get by going from rust to zigg to squee squeeze that little bit more out and the additional overhead that it's going to cause on development teams it's already a big cost to development teams to go to rust from even C++ so it's just it's not that trivial it's not that obvious to just go pick the most performing thing like why don't we just go WR it an assembly then right like I think people might just be oversimplifying this kind of decision I thought this response is pretty good and I'm going to wrap it up on this one for this thread but this popped up in the C sub it says the upside is if the C team doesn't have to
squeeze blood from turn-ups anymore they might be able to focus on other things and provide more features of the wide reach the next fee versions instead of taking 80% of the effort being devoted extremely to esoteric performance scenarios so yeah like if we think about the net team and the fact that they're focusing on improving the language features like we can keep squeezing performance out we can keep adding new features but there's only so many developers that can contribute there's only so many things you can jam into the road map in a given period of time so if we have a general purpose language like C yeah we should keep trying to get performance out of it of course but we also need to make sure that we're focusing on adding more features as well this is just a scenario where we have a general
purpose language and if you keep hyperfocusing on only performance and we keep doing that we're going to end up falling behind on some of these other features as well so I think it's important to be balanced I think that this is a great point that instead of just trying to have you know all of these people in Microsoft that are like we have these very critical performance scenarios like stop everything you're doing net team and hyperfocus on these things like we have other tools that we can use and as net continues to improve in performance maybe it gets us to that point but the reality is there are these purpose-built languages that are perhaps always going to be a little bit further ahead and that's okay they're different tools for different purposes and I think that their last point right here is really important it's
okay and healthy to admit that for some things C sharp isn't the right choice and I wanted to end on this note because I think it's important to think about languages like tools you know we have screwdrivers for screwing things in we have hammers for nailing things in saws for cutting you don't just have one tool that's good at absolutely everything like you could use a spoon to eat peas and rice and you could technically eat chicken with it too but at some point if you're cutting your food with a spoon it's a little bit weird like why don't you just use another tool for that purpose but aside from people having a little bit of overreaction here I thought that this was a really cool experience because I engaged on this thread really early and on the same day that I engaged on this
thread I had Microsoft Executives email me at work and make a comment about the interactions that were going on here they realized that some of the language in the job posting needed to be improved because they didn't expect that people were going to react this way and after reviewing it they said look we don't want that kind of reaction out of people because it's misleading it's not what the original intent was so I thought it was awesome that they saw that as feedback and they said we need to make this better the people that put the job descriptions together are humans right and even if other people are reviewing them it's going to be difficult to predict all the scenarios about how people will react so I just thought it was really cool that there was visibility into this and that they swiftly tried to
make sure that people aren't going to blow this out of proportion because that's not really the intent so again I hope you found this helpful like I said I am someone that works at Microsoft in this space I feel like I have the ability to speak about this accurately so I just wanted to try and offer some clarity so thanks for watching and I'll see you next time
Frequently Asked Questions
Is Microsoft really abandoning C# and .NET for Rust?
No, absolutely not. Microsoft is not abandoning C# and .NET to move everything over to Rust. We have hundreds of services built on C# and .NET, and there's no plan to move away from that. In fact, we're still heavily investing in C# and .NET.
Why is Microsoft hiring Rust developers if they are not abandoning C# and .NET?
We're looking at Rust for a very select number of services that are already written in other languages like C++ or are performance-critical. This doesn't mean a massive shift; it's about being pragmatic and using the right tool for specific scenarios.
What prompted the confusion about Microsoft's direction with programming languages?
The confusion arose from a job posting that suggested we were rewriting some services in Rust, which led to a lot of speculation. I engaged early on to clarify that this is a limited situation and not indicative of a broader strategy to abandon C# and .NET.
These FAQs were generated by AI from the video transcript.