(NB: I've kept the original title. )

I have decades of .NET experience, and I had to double-take reading this news and took a while to sit down and understand what's happened here.

I'm writing this up as a note to point to for when I'm next wondering why .NET isn't more popular.

This quote sums up everything that's wrong with microsoft's .NET strategy:

> We recently reshipped ASP.NET Core 2.1 as ASP.NET Core 2.3 for ASP.NET Core users that are still on .NET Framework. To stay in support, all ASP.NET Core users on .NET Framework should update to this new version.

> This post only applies if you’re using ASP.NET Core on .NET Framework. If you’re using ASP.NET Core 2.x on .NET Core 2.x, it is already out of support, and you should upgrade to a supported version such as .NET 8.

Got that as a polyglot looking to try out dotnet? Clear as mud!

The page does try to explain in background, and I'll try to take you through it here.

So it's ASP .NET Core 2.1. This was a technology really developed for .NET Core 2, which was released years ago and is now well out of date. It also targetted .NET framework to encourage people to migrate to .NET Core.

If you're not already familiar with .NET lingo, you're probably already lost and I've barely started.

.NET framework was the "original" .NET, but they wanted to basically make a new .NET with language parity but SDK / standard library breakages, so they did that and called it .NET core.

( They also open sourced it, and .NET Core is actually amazing. It brought AOT compilation, first class linux support and performance improvements. )

You might think .NET Framework, which is legacy from before .NET Core, is unsupported legacy, but it's not as legacy as .NET Core itself is, because .NET Framework is actually still well supported, and it's .NET Core which is now long dead, with much shorter support cycles. ( It's also now just ".NET" or "dotnet", depending who you ask ).

So they were left holding the bag supporting something they called "ASP.NET Core 2.1". They also released "ASP.NET Core 2.2" and didn't make it clear it wouldn't be supported for long. So they continnued to support "ASP.NET Core 2.1" well after "ASP.NET Core 2.2" with no easy way to downgrade.

And this isn't part of the SDK, so it's delivered part of a nuget package.

Except it isn't a package, since ms doesn't do meta-packages, so it's actually dozens and dozens of separate packages: https://dotnet.microsoft.com/platform/support/policy/aspnet/...

And because it's version 2.1, re-shipped as 2.3. So it'll appear as newer than 2.2, but it's actually older, but it's better supported. They've shipped 2.1 as 2.3 to extend support in .NET framework.

ANd throughout all of this, you have to know that the ".NET" in ".NET Framework" is different to the ".NET" in "ASP.NET" which is different to the .NET in ".NET" core which is sort of different from the ".NET" in ".NET" or "dotnet".

You can also install mismatching versions of parts of ASP.NET Core. And because microsoft are actually really good at backwards compatibility, that actually works. ( Right up until it doesn't, sometimes with a runtime binding failure so you don't notice during compile and might not even notice during start up / smoke testing if you're forcing late assembling binding. )

I love dotnet, but MS make it really hard to evangelize it.