I love C#, and have been using it since the 1.0 days back around 2002. What has really annoyed me as of late is the confusing branding. Standard vs Core vs what the hell is Framework 4.7 called?
Along with the branding confusion, the formally very approachable and discoverable MSDN documentation for the class library has become a near useless clusterfuck. They've deprecated made.microsoft.com/library/ (at least for .Net) but don't mention it on the site!
> What has really annoyed me as of late is the confusing branding. Standard vs Core vs what the hell is Framework 4.7 called?
I agree that it's confusing at first, but when you step back and look at why Microsoft went down this path, it starts to make a lot of sense.
When .NET was launched in 2002, it was a closed-source, Windows only development framework.
Microsoft was a very different company back then, and Windows was its gravy train. If you were a developer inside the Windows ecosystem, you were showered with (closed-source) love. If you were outside? Well, fuck you, Microsoft will crush you. Everything was oriented towards getting retail/enterprise consumers to buy Windows (and Office etc).
The 180 degree flip to embrace open source is a very recent development. Microsoft realized that desktop OS's were less and less relevant commercially, and that the future was in cloud services.
I haven't looked at the figures, but I assume it's a lot more lucrative to lock in tens of thousands of dollars per month in cloud subscription/support fees than selling Windows direct to consumers.
So with this reorientation, Microsoft needs a strategy to capture the cloud services market (and keep in mind that this is 5-10 years after AWS has been running the shop).
The solution? Open source .NET to accelerate its adoption and entice developers towards Azure.
First, Microsoft won't care if you use their implementation of .NET or Mono - as long as you're using it on Azure, you're fine. Hence .NET Standard - literally, an open-source standard that anyone can code against, and know that their stuff will just run, no matter which implementation is used under the hood.
Second, Microsoft then release their own implementation of this standard - .NET Core.
Third, we come to .NET Framework. For most entrants to the ecosystem, you can consider this to be legacy. This is the evolution of the original (2002) closed-source approach to .NET, and is only sticking around due to Microsoft's long-term commitment to its software releases.
Again, I agree that none of this is clear when you're new to .NET. It makes a lot more sense when you realize the naming evolved from Microsoft shoehorning a legacy platform into a fundamentally new, open-source/SaaS subscription strategy.
Along with the branding confusion, the formally very approachable and discoverable MSDN documentation for the class library has become a near useless clusterfuck. They've deprecated made.microsoft.com/library/ (at least for .Net) but don't mention it on the site!