Skip to content

Bad Medicine In .NET OSS

Published: at 12:17 PM

A recent flare-up of chronic drama in .NET OSS has got me re-thinking the prevailing diagnosis & cure for our ecosystem woes. For context, the prevailing diagnosis & suggested cure goes something like this:

Anytime Microsoft introduces common abstractions / libraries that overlap with current OSS offerings, .NET developers will abandon relevant OSS libraries en-mass to adopt Microsoft’s “lowest common denominator” offerings. To avoid cannibalizing the ecosystem, Microsoft must abstain from participating in any areas occupied by existing OSS libraries.

This worldview is almost canon in some corners of the ecoystem. No matter how much Microsoft’s engineers plead their innocence or try to tiptoe around old wounds, some folks just never seem to put the pitchforks down. This is disappointing because these corners of the ecosystem (heavily populated by long time oss authors & other contributors) are my favorite parts. And also because i’ve come to believe this worldview is likely the wrong one.

It’s important to note that the observed symptoms are mostly accurate. Microsoft’s releases do tend to snuff out relevant OSS libraries (RIP all the awesome DI containers). And over the years, some of Microsoft’s responses to valid OSS author concerns have been less than stellar.

Flawed Diagnosis

At the core of the prevailing diagnosis is a belief that .NET developers adopt Microsoft libraries (instead of OSS ones) for irrational reasons such as fear, a lack of sophistication or a mistaken belief in the quality of Microsoft’s efforts. Even worse, some proponents of this diagnosis ascribe no motives at all to this behavior, all the while insisting it will occur, as if .NET developers writ large are some sort of submissive horde of lemmings.

Now, I’m sure some .NET developers choose Microsoft’s libraries for the clearly bad reasons and non-reasons above, but believing that this is the mainstream opinion among .NET developers seems both uncharitable and simplistic.

What the prevailing diagnosis fails to explain is why. Why do .NET developers make the choices they do? The diagnosis fails to consider any systemic, structural or rational reasons for the choices of millions of .NET developers. It encourages those who believe it to see themselves as a much smaller, more sophisticated and highly beset upon cohort of .NET developers who must spring into action to defend the fragile ecosystem from Microsoft’s machinations. It’s an unfortunate framing of the issues that has mired some of the smartest & most passionate contributors to the ecosystem in recurring dust-ups for a decade.

We have to find a way to get past this framing. There are likely systemic, structural & social factors that contribute to the behaviors we see in the ecosystem and the sooner we start looking for other answers, the better.

Ineffective Cure

My gripe with the recommended cure (that Microsoft abstain) is simple: it has not worked. A decade later, Microsoft’s library releases have grown inexorable & even more OSS libraries have faded away while wide swathes of .NET developers (rightly) cheer on general progress in the ecosystem. Things haven’t even worked out when Microsoft has attempted to leave gaps for OSS libraries to fill (IdentityServer) or when it tried to support OSS (.NET Foundation).

And it kind of makes sense that this cure doesn’t work. Dominant participants in ecosystems don’t just stop participating because smaller participants ask them to. Dominant participants leverage their dominance in business, in the arts, in politics and yes, in open source. Multi-trillion dollar companies, willingly or unwillingly, knowingly or unknowingly will have an outsize impact on any ecosystems they participate in. And not participating is not an option for them. We need to find solutions that aren’t contrary to social & corporate history.

This is bad medicine. Not only is the cure ineffective, it comes with side effects: a blind spot. This diagnosis & cure have everything you need for a compelling distraction: an authoritarian empire, a small group of democracy loving rebels, conflicts over idealogy & governance etc. We all love that movie, but this isn’t the only way to frame the issues.

Thought Experiments

Much to my dissatisfaction, I don’t have any easy answers here. What I do have is growing conviction that there are more answers out there. Here are some things I am mulling over to get past the current frame:


Previous Post
Modular Monoliths: The Hard Parts
Next Post
Tech Stack Religion Will Let You Down