Miguel de Icaza’s barrage of criticism against Microsoft comes with a lot of credibility. This is the developer who has spent much of his career building open source projects within the Microsoft ecosystem and spent years working for Microsoft on Xamarin and other projects. His primary complaint? “That Microsoft would subvert an active open source project by ramming in a proprietary extension to continue to lock down .NET.” This comes after last year’s Hot Reload open source dumpster fire.
For those who choose to see this as a resurrection of Microsoft’s old “Linux is a cancer” trope, not so fast. On balance, Microsoft has been a consistent contributor to open source communities, at least since its public declaration of open source devotion back in 2014. It’s doubtful that the company is suddenly reverting to type, closing off one of its most visible open source successes. Instead, I suspect this is one division’s decision to satisfy corporate revenue targets with a well understood, if out-of-favor, licensing model.
Still think it’s just Microsoft being evil? Have you ever worked at a big company?
Right hand, meet left hand
The reality of big company existence is that “the CEO said to do it” is more persuasive than “my cubicle mate thinks it’s a good idea.” Also, even executive edicts take time and persistence to enforce. Think about it this way: The CEO says, “Everyone must sell our new monkey glasses.” Sounds good, right? Well, it does until the general manager of the zebra glasses division reminds the CEO that she has $1 billion depending on selling zebra glasses, not monkey glasses. Oh, and then the partner lead reminds the CEO that they have $500 million in commitments to partners related to hippo glasses. Sales folks will need to be trained, marketing will need to update all the collateral, etc., etc., etc. A year later (or five), that edict will still largely be unmet.
Back to Microsoft.
In 2014 Microsoft CEO Satya Nadella declared that “Microsoft loves Linux.” Hell didn’t freeze over because by this time what else could Microsoft do? Linux was a fact of life, as was open source. I won’t rehash history that Steven J. Vaughan-Nichols has already captured exceptionally well. The TL;DR? Cloud computing (IaaS, PaaS, SaaS) was sprinting to open source, and if Microsoft wanted to have a future, it would have to learn to minimize its obsession for Windows. (Remember when Azure was called Windows Azure?)
Microsoft had a compelling financial reason to go all-in on open source, and it largely has. But, as mentioned, executive edicts take time to enforce.
This was particularly true in 2014. At the same moment that Nadella was exulting in Microsoft’s newfound love for open source, other parts of the company were actively fighting against it and the principles that underpin it, as Simon Phipps wrote at the time. Things got better. By 2016, I could reasonably write that Microsoft had become the world’s largest open source contributor, as measured by number of employees actively contributing to open source projects on GitHub. It’s not a perfect measure, of course, but it’s directionally accurate. By 2018, I ran the numbers again using an open source project and, again, Microsoft came out ahead, measured by employees actively contributing to GitHub open source projects. (You can use this same project to get updated numbers.)
Let’s get back to the specific matter that riled de Icaza and other open source advocates. Microsoft communicated some changes it was making to the C# extension to Visual Studio Code, making it proprietary. That communication was a bit hard to follow, leading de Icaza to summarize: “Over time, the .NET platform is becoming closed, to ensure it is only useful if you are a customer.” For those who had hoped open source .NET would pave the way to C# and other key Microsoft technologies, this seems like a hard reversal.
One commenter on de Icaza’s post suggested that despite the “we love open source” corporate slogan, “many of the old-timers who were there in the nasty era are still there now. There’s a lot of them, and very senior, and some certainly still have those nasty ideas.” To this de Icaza replied, “Yup.”
It’s possible to accept de Icaza’s view of the situation and still think that, on balance, Microsoft gets more decisions on open source right than wrong. This is the same Microsoft that recently funded the GNOME project, a direct (if not particularly threatening) challenge to the Windows desktop. It’s a big sponsor of the Apache Software Foundation, plus it contributes cash and other resources to Python, Java (!!), Kubernetes, OpenTelemetry, and more.
Of course, one rejoinder to all this is that of course Microsoft does that! It’s in their self-interest, and maybe they see closing off .NET as in their self-interest, too. To which I reply, sure. I can’t think of a single instance of a company contributing to open source projects out of altruism. Open source is inherently selfish, and that’s why it continues to sustain itself and thrive. There’s no shortage of self-interest in developers contributing and companies paying them to do so.
On Microsoft and .NET, I don’t have any particular complaint. I’ve followed Microsoft for more than two decades and have spent my share of time raging against that machine. One thing I’ve learned: A company is never as bad as it seems on the surface because ultimately it’s made up of individual people making decisions. Some of those decisions I like, and others I don’t. My opinion (and probably yours) doesn’t really matter, though, because the acid test will be what developers and customers do. If Microsoft’s .NET developer community hits back and takes their employers’ money with them, Microsoft will blink and walk back the decision. It was money that influenced Microsoft’s love for open source, just as with every other company, and Microsoft will follow the money in this case, too.