Microsoft has spent the past 10 years embracing open-source software and, at several points, even admitting it loves Linux and the open source community. The Linux Foundation even praised Microsoft for working with the open source community after the company joined the foundation nearly five years ago. All of this goodwill could be about to come crashing down, thanks to a storm that’s brewing in the .NET community — Microsoft’s flagship development toolkit and core software framework.
A controversial business decision inside Microsoft has left many questioning the company’s commitment to open source. Multiple sources at Microsoft tell The Verge that it has also angered lots of developers inside the company but that they’ve effectively been told not to complain.
Microsoft has quietly removed a key part of Hot Reload in the upcoming release of .NET 6 this week, a feature that essentially allows developers to get instant feedback when they’re creating a project and change code to immediately see the results. It’s a big selling point for Google’s rival Dart programming language and Flutter toolkit, and Microsoft has been playing catchup to bring it to .NET and Visual Studio.
Microsoft described its original plans as “an ambitious project to bring Hot Reload to as many .NET developers as possible,” but a last-minute change has left it mainly limited to Windows and Visual Studio developers instead of being open and available across multiple platforms. Microsoft has been testing near-final “Release Candidate” versions of .NET 6 that allowed developers to use Hot Reload across a variety of environments and platforms with dotnet watch, including the popular Visual Studio Code development environment. A Release Candidate generally means Microsoft considers it production-ready, feature-complete, and that people should just beware of bugs before it’s fully released.
But a last-minute change announced earlier this week means Microsoft “will enable Hot Reload functionality only through Visual Studio 2022 so we can focus on providing the best experiences to the most users.” Dmitry Lyalin, a program manager working on the Hot Reload feature at Microsoft, says the company “had to prioritize” and dropped Hot Reload as a feature of the dotnet watch tool as a result. A thread on GitHub questioning the removal highlights the community frustration, alongside comments on Hacker News and Microsoft’s own blog post.
“It’s even more disappointing looking at the source code to see that support for it was ~1-2k lines of code, and that code has now been ripped out at the last moment,” says Phillip Carter, a former Microsoft employee on the company’s F# team, in a comment on Microsoft’s blog post. “This is a clear backslide, especially because hot reload did not start out as being only for Visual Studio. I really hope this isn’t the start of a pattern.”
The Verge understands that the decision to remove the functionality from .NET 6 was made by Julia Liuson, the head of Microsoft’s developer division. Sources describe the move as a business-led decision, and it’s clear the company thought it would fly under the radar and not generate a backlash. Engineers at Microsoft that have worked on .NET for years with the open source community feel betrayed and fear the decision will have lasting effects on Microsoft’s open source efforts.
“If you want a good developer experience, you’re forced to use Visual Studio — which seems to go against all of the .NET team’s cross-platform efforts,” says Reilly Wood, an independent developer who originally raised the removal issue on GitHub.
The decision also comes after weeks of unrest in the .NET community over Microsoft’s involvement in the .NET Foundation. The foundation was created in 2014 when Microsoft made .NET open source, and it’s supposed to be an independent organization that exists to improve open source software development and collaboration for .NET. A resigning board member questioned the role of the .NET Foundation recently, asking whether it’s “here to enforce Microsoft’s will on .NET Open Source, or are you here to help foster and promote a healthy community?”
Microsoft also locked and limited a pull request to remove this Hot Reload functionality in .NET 6 for dotnet watch. This effectively shut out the community from commenting on or rejecting the last-minute changes. The community has now submitted its own pull request to revert Microsoft’s changes, but it’s unlikely to be approved.
A recent controversy also led to .NET Foundation executive director Claire Novotny resigning recently and others questioning the independence of the .NET Foundation given Microsoft’s special privileges. This latest .NET 6 controversy won’t improve the storm that’s been brewing in the .NET community.
We’ve reached out to Microsoft on the .NET 6 changes and .NET Foundation, and the company wasn’t able to issue a statement in time for publication.
Update, 5:18PM ET: Article updated to clarify details of Microsoft’s pull request lock on GitHub.