This article is more than 1 year old
.NET Core: Still a Microsoft platform thing despite more than five years open source
Making .NET cross-platform was a radical step but not enough for broad appeal
Comment Key people working on the .NET platform at Microsoft are concerned about the continuing perception that it is tied to one company.
"Tell your friends that C# and F# are free, open source and run on Linux and Mac," said Microsoft software architect David Fowler, who works on the design of .NET Core and ASP.NET and is also the co-inventor of the SignalR real-time messaging framework.
Fowler made the remark at the weekend, as part of a Twitter debate sparked by .NET developer Billy Collins, who said: "What's up with non-.NET developers thinking C# is a Windows only, corporate bloatware language? It's not 2005 any more."
The problem is that although Microsoft went open source with .NET in 2014, there is a perception that it remains a Microsoft-platform framework which holds back the growth of a wider ecosystem.
The forthcoming .NET 5 is key to Microsoft's appeal to developers, but despite going open source it is still largely perceived as Microsoft's platform
It is hard to get solid data on this. C#, the main language of .NET, remains popular, used by 31.4 per cent of developers according to StackOverflow's survey and ranked the fifth most used language in the Redmonk language rankings. According to Redmonk's data, C# usage has remained steady since 2012.
That said, Microsoft's platform has a large community and this data is consistent with the idea that the evolution of .NET Core has been successful in keeping hold of existing developers but not so good at attracting new ones. In January, some members of that community reflected on issues like: "In its current form .NET is for 40-year-old white men," and ".NET doesn't get much love from younger devs."
Microsoft has proved itself capable of creating open source projects with a broad user base, two examples being the Visual Studio Code programmer's editor and the Typescript language (created by the inventor of C# Anders Hejlsberg). Both are widely used on non-Windows machines, and with projects that have nothing to do with Microsoft.
Why is .NET different? Among the points made in the recent debate:
- "Everybody sees StackOverflow as the only real example of an optimal system built in .NET. There needs to be more examples."
- "The ecosystem is still far behind other languages and it's still very dependent on Microsoft … in the case of Java there is a big group of companies behind Spring Boot, you can't say the same about .NET Core as it's mainly supported by Microsoft."
- "Outside of contributing, technical direction and roadmap is still highly driven by Microsoft."
Fowler tends to see this as a perception problem that can be fixed. He remarked: "We've been cross-platform for five years and Microsoft never endorsed Mono [a third-party implementation of .NET for Linux] before that. Some of the hurdles were technical and we've removed most of those in 2020. Now our ecosystem is catching up."
While it is true that Microsoft has struggled to communicate the value of .NET beyond its own platform, it is also possible that the company has failed to find the right balance between opening up the technology and retaining commercial advantage from it.
Microsoft had sound business reasons to make .NET cross-platform. Running well on Linux is critical given the dominance of Linux on the server and its role in platforms such as Kubernetes.
However, Microsoft also uses .NET Core and the web framework ASP.NET Core to steer developers towards its other products, not only the Azure cloud, but also the SQL Server database manager in its various forms. The .NET Foundation set up by Microsoft to oversee the open source project is inevitably skewed towards the company; it cannot be a neutral steward despite the involvement of other companies in its governance.
It's all about perception
Don Syme, inventor of F#, said: "[This] is the perception we much change, isn't it? Why not bring more companies visibly on board in .NET leadership? Make .NET a proper DMZ consortium, to reflect the huge range of economic interests involved in it."
Syme is supporting an initiative from .NET Core Principal Program Manager Richard Lander to "improve credit for community contributions", the idea being to raise the profile of non-Microsoft contributors and to promote diversity and inclusion. "There should be no specific different treatment for "The .NET Team" or "Microsoft" in the rules - Microsoft contributors are just part of the community like everyone else," said Syme.
Tweaks like this may help .NET perception. Microsoft has also learned that VS Code must play a part in broadening .NET usage. Senior Program Manager Philip Carter popped into the debate to add: "People with 2-5 years experience with .NET used VS Code way more than people with 5+ years' experience with .NET (despite suboptimal tooling)."
It is not difficult to identify things Microsoft could do to make .NET a more neutral technology and therefore more likely to attract a broader ecosystem. Ideas include switching away from the .NET Foundation, revising the documentation to remove the strong ties to SQL Server and Azure, and making VS Code as good as the Windows-only Visual Studio for .NET development.
But would that fit in with the company's commercial goals? There is also a risk that if Microsoft distanced itself from .NET for the sake of broader usage, the company's customers might worry that it was losing its existing solid backing. It is a problem which the company needs to keep working on, if it does not wish to see .NET usage decline. ®