- .NET doesn't have a real community: there's no sense of belonging to a community. There are more or less big clusters, usually attached to particular projects.
- Microsoft usually acts like a competitor instead of a facilitator.
- You can't try to do better than Microsoft. Whenever a project is doing some real good job in an area in which Microsoft has already placed its bet, you'll not only be ignored, but also repudiated by a big bunch of microsofties. You'll be on your own.
- Eventually, if a community project looks like a winner and is getting momentum, Microsoft will try to catch up and make up for lost time creating an enemy product (usually inferior) in an attempt to undermine it.
- .NET fails to get to the young people. Why? because beginners usually start doing front-end, and front-end isn't .NET:
- Front-end catches young people because it's visual and looks "easier" to get fancy results with minimal effort
- Front-end is dominated by frameworks based on an overrevved language, the infamous JavaScript, which isn't necessarily related to anything .NET.
- Thus, .NET doesn't get much love from younger or uninitiated devs.
- Microsoft does little to nothing to encourage the .NET community. The MVP program doesn't help at all. IMHO, Microsoft should empower the community giving real support and being in direct touch with developers and teams. Microsoft loves Linux, loves the cloud, loves Android… but doesn't love us.
- Bad reputation. New generations of devs think .NET is oriented to the enterprise world, not funny or top-notch. Microsoft's reputation has spread to .NET since it's creation.
- Most people still ignore that .NET is open source, worsening the previous point.
- There are lots of things that are unfeasible without using Visual Studio, that is a pricey IDE (Community doesn't count, because people read "community version" and translate it to "capped version for losers")
- .NET doesn't have an official GUI technology, so point 2 is even worse. If you can't design an interface you lost the interest of newcomers quickly.
- No official open source debugging solution. Trying to develop to a non x86/x64 architecture laptop is just infeasible due to restriction of the debugging stuff for .NET Core.
Hey! But there are a lot GUI frameworks for .NET! WPF, Xamarin Forms, Comet, Windows Forms, UWP...
Right. Ehmm.. Let me get into extra reasoning to get the point: In .NET, current GUI systems are one or more of the following:
- Outdated
- Windows-Only®
- Workable under VS-only
- Browser-based crap
- Handicapped
- Unsupported by an ever decreasing community with no future
That should change, or point 7 will apply. We live in a world dominated by images. GUIs matter. A lot.
Somebody also posted an very interesting point that adds to the previous. "Messaging from Microsoft is that Windows' successor is Azure. Should anyone choose Windows as a client for any new project? Does any dialect of XAML have long term relevance in Microsoft's "post-Windows" world? The OS itself needs a renaissance. Unrest stems from that"