Threads like that twitter thread. Or to put it another way, the community and it’s single minded focus on everything Microsoft produces or endorses and nothing else is frequently off-putting to me.
I strongly believe there is no “best” in software, or maybe in anything. There is only “best” when you put it in context of your projects and constraints. .NET may very well come out on top in your context, it’s a solid ecosystem. LINQ is great, integration of major functionality comes out of one hand and often just works, you can hire from a large pool of candidates, performance is generally sufficent, I only hear great things from anyone who ever tries F#. The list goes on. I generally think the technology itself is a great general purpose choice and I've enjoyed writing C# for my job for a while, as well as for a few side projects.
But other things have other strengths. For one, the amount of open source library choices is much better. .NET is slowly growing on that front, but I’m still not convinced whether it will ever get to a level of JS or Java, despite sharing almost the same marketshare in case of Java. And frankly, that’s the community that breeds innovation. Lots of things are tried, very little sticks, but in the end you always have options. In .NET you don’t until Microsoft builds something for you.
Even Microsoft reconizes that:
There is a perception that other ecosystems (specifically Java, JavaScript, and Python) have more technological diversity and thus an overall stronger open source ecosystem. Historically, we’ve taught customers to expect all the features to come from Microsoft. Since we can’t build everything, especially not at a pace at which other OSS ecosystems evolve, the set of trusted libraries for .NET must grow beyond just Microsoft.
...
Getting critical adoption of this model in the .NET ecosystem will likely take years, but the goal for .NET 6 is to create the vision, get buy-in from the .NET Foundation and the open source community at large, as well as getting some of the fundamentals in-place.
I am not convinced that this buy in from the open source community exists yet, in particular because Microsoft kept up their antics and showed their hand with things like the hot reload drama or shifting key parts of their products out of open source (pylance, the .NET debugger binaries, key parts of VScode are examples that come to mind).
And so .NET keeps taking on things that have been proven first elsewhere, behind the innovation curve. For example C# language features such as records or pattern matching. Or integrating open source technologies that become too big to ignore. Hello docker. Hello react integrations. Hello WSL. Hello functioning terminal in Windows, after having lived with the good old cmd for decades.
But until Microsoft officially starts endorsing and publishing things like that, it's the worst in other languages when you ask the community. The truth is, other things have other strengths, but if you ask about LINQ and nameof() in Rust you will be disappointed. If you ask for a safe, performant alternative for embedded devices, it's great (how is .NET doing on embedded ARM these days anyway?).
And maybe I'm making a problem where there is none. But I want to work with open minded people who focus on results, not tools based on some strange techno-religion. Unfortunately in .NET I often get that vibe. But to be entirely fair, I've also seen it in other places, like the functional world (Haskell, or Scala). And it's slowly getting better in .NET with every integration. So not all hope is lost.
We also miss the kind of integrations other eco systems have. Like the good Rust integation with Python. I think the future is to write good memory efficient libraries in Rust and use the from Java, Python,nodejs and .net.
I am missing a library for the delta format and find it strange that Microsft spent all marketing during build to talk about OneCloud and the delta format and we can't even use it from .net besides from Synapse.
You speak much truth, but I think ther is more open source than even Microsoft sees in the ecosystem. Getting started producing working projects feels easier in .net to me.
I was a Java developer in the early days, and found the platform very frustrating. Things started to improve with the spring framework. And when I heard about spring boot, I was very pleased to see that it was all about making a standardized easy initial project startup configuration.
I recently had to do some Java for the first time and literally decades. I was able to use Java 17.
I felt it was vastly better than the early days, I was frustrated by things like the incomplete implementation of generics. And it appears that was a direct result of the way Java evolved.
Unfortunately, it appears many if not most Java projects are still stuck in Java 8 because of all of the Legacy installed code and a lack of decisiveness toward upgrading.
As for .net, I'm a little worried about some of the things coming out of Microsoft lately. I fear they may be returning to some of their old ways. Time will tell.