Hacker News new | ask | show | jobs
by paranoidrobot 659 days ago
> Nowadays it sounds like .NET Core + third-party GUI libraries is the way to go.

For reference for those unfamiliar with the terms:

.NET Core was the name given to the cross-platform fork of the .NET runtime.

It was forked out of .NET 4.x and dropped support for a lot of things in the first versions.

It ran on various distributions of Linux and MacOS.

At the same time there were forks of other libraries/frameworks in the .NET ecosystem to have 'Core' variants. Often these were dropping support for legacy parts of their code so that they could run on Core.

Later versions of .NET Core brought over support for a many of the things that had been dropped.

.NET Core and .NET had stand-alone versions until .NET Core was renamed to . NET and became .NET 5.

So, if you want to do the most modern cross-platform C# you would use .NET 9.

5 comments

Okay, this helps a lot! So .NET Core is now out of date, and any version of .NET >= 5 is cross-platform and has no Core variant?
More or less. any version of .NET >= 5 is cross-platform and is a direct descendant of the "Core" side of the fork, and so has no "full framework, windows only" variant.

It is "Core" in a lineage sense, but there's no need to make that distinction any more. The term "Core" is out of date, because the experimental "Core" fork succeeded, and became the mainstream.

I've been a long way from Windows development for a while, so missed that shift. I knew it was coming since moving functionality to the open source thing seemed to be Microsoft's target (with some skeptics doubting it, understandably). I didn't know it already happened.
The shift is slow, but it has been ongoing for years, and is pretty much wrapping up now. .NET 5 was released in November, 2020 and that was the "beginning of the end" of the shift over.

For what I do, it's not really "Windows development" in any meaningful way. It is business functionality with HTTP, message queues etc, developed on mostly Windows laptops, and deployed to mostly Linux instances on the cloud. Not that the host OS is something that we have to think about often.

For this, .NET 3.x "the full framework windows only version" services are regarded as very much legacy, and I wouldn't go near one without a plan to migrate to a modern .NET version.

However, YMMV and people are also making windows desktop apps and everything else.

It sounds like .NET is on the way toward becoming the Java competitor it set out to be.
Is Java on the way to being a .NET Competitor yet? I can't answer that, I don't know Java well enough.

I am told that the C# language has evolved faster and better than Java. Despite its origins in .NET 1.0 being basically a "Microsoft Java".

But paradoxically there is now more diversity of actively used languages that target the JVM. e.g. Kotlin, Scala, Clojure.

It has always been, but for 20 years Microsoft used it as a way to maintain lock-in at the OS level.

They've now abandoned that strategy, and instead they use it as a way to maintain lock-in at the IAAS/PAAS level (Azure).

That's correct
Minor nit: from what I understand dot net (core) is not a fork but rather a reimplementation / rewrite as far as I understand

> It was forked out of .NET 4.x and dropped support for a lot of things in the first versions.

It's a fork with a lot of modifications (mostly removing deprecated stuff and making it cross-platform). You can still see a lot of ancient stuff in the sources such as referring to the base Object class as "COM+ object" (.NET was originally envisioned as a successor to COM).

>An early name for the .NET platform, back when it was envisioned as a successor to the COM platform (hence, "COM+"). Used in various places in the CLR infrastructure, most prominently as a common prefix for the names of internal configuration settings. Note that this is different from the product that eventually ended up being named COM+.

For example, see the top comment in https://github.com/dotnet/runtime/blob/main/src/coreclr/vm/o...

Correct, the bytecode wasn't even 1:1 compatible. They then brought over missing pieces, and consolidated .NET Framework features into .NET Core, thus becoming just .NET to end the dumb naming war, since everyone calls it .NET anyway...
Good write up that wonderfully encapsulates how stupid Microsoft’s naming is - you didn’t even mention .NET standard.

I love .NET. It’s a great stack, especially for backend web apps. Blazor is a great SPA framework too. But I loathe how Microsoft continue to handle just about everything that isn’t the framework and C# / F#. It’s laughable.

Well, to be fair .NET Standard wasn't a framework, it was a standards/compatibility label and compilation target.

.NET Standard includes various versions of things that MS doesn't even touch.

I stopped doing .NET stuff before .NET 5 so I'm not hugely up to date with the latest shenanigans.

Oh don’t get me wrong - I wasn’t criticising your write up. It was concise and still relevant.

It’s just funny for newcomers to peel back the onion more. Writing a source generator? Target .NET standard 2.0 (not even 2.1) for a whole host of reasons.

But….net is everything! And also nothing ! It’s a product? It’s a suite! It’s a system !

Visual Basic .net ! What ?

The ".NET" label was applied to a bunch of things at Microsoft. It was also an early name given to their social networking / IM things.

But for the last 20-ish years it's really only been applied to things related to the .NET Framework.

So, yes - Visual Basic.NET is a language - it's the language that replaced Visual Basic 6. It compiles to the Intermediate Language (IL) that the Common Language Runtime (CLR) executes. There are other languages that compile to IL, too like C#, F#.

The .NET Framework is really a bunch of libraries and tools that are packaged together.

The .NET Standard is a standard that allows you to build a library to a known set of supported libraries and IL / CLR features.

So, yes, depending on which specific part you're referring to - it's all of those.

This was probably copying Sun's "we put the dot in .COM" advertising. Yes, this is stupid.
Microsoft needs to stop letting marketing decide product names. Just look at Xbox: Xbox, Xbox 360, Xbox One, Xbox Series X/S.
It's the Microsoft way to apply the same name to bunch of unrelated products.

everything is .net, azure, 365, now also copilot.

Copilot is just Clippy II+.
More like Clippy-II/ChatGPT.
Branding be branding, yo.
Absolutely!

I’m just sad the video is not readily available because the facial expressions enhance the spot-on vocal inflections.

We do have the vocal inflections: https://m.youtube.com/watch?v=wPO8PqHGWFU

Among the other small nits in your otherwise concise post... the windows only versions of .NET (1-4) were known as .NET Framework. So, Framework is the only windows only version, followed by Core being a limited feature set but cross platform and then .NET 5 (no suffix) being a full featured version that is cross platform.
> So, if you want to do the most modern cross-platform C# you would use .NET 9.

The current release is .NET 8

.NET 9 is about 3 months away from the usual November release.