One framework to rule them all. Is it a good thing? Is it dangerous, or is it the best thing to happen to Software Developers since the creation of Javascript? (In 10 days…)

Depending on which software eco-system you spend most of your time in, you may have conflicting ideas on the questions above. You may have never touched .NET. Maybe because it has largely been a Microsoft-centric framework for a long time, skewed towards a more ‘corporate’ user-base.

Until the (still relatively recent) introduction of .NET Core, the .NET Framework has been a framework which ties you to Windows.

Windows Forms.

Windows Presentation Foundation.

Universal Windows Apps.

Windows Store Apps.

For a long time, if you have been developing desktop apps in .NET, you’ve lived in Windows. Even on the web, for ages you were usually deploying to IIS, looking to other runtimes like Mono to deploy elsewhere.

.NET Core has been a liberating arrival for developers wanting to take their code cross-platform but we still had this segreation of frameworks, this division between .NET Framework and .NET Core.

How long will it take us to port our code to .NET Core? I want to run this stuff on Linux!

This has been a big part of my dev-life recently.

Even running with the policy of ‘new code might as well use .NET Core‘ isn’t bullet-proof. You may have experienced that common issue where one of your key dependencies is not yet supported in Core.

You may have also had major a dilemma when looking to move a VB.NET codebase to .NET Core in that you had to wait until 2018. (By which time you may have already re-written it in C#, which I think is a good idea to be fair.)

What’s my stance on .NET Core?

Put simply, I think it’s awesome.

Microsoft’s decision to open-source huge amounts of the .NET Framework has introduced fixes and amazing new features we may never have seen had it stayed closed.

It has democratised the code-base so much that, while it may be governed by Microsoft, it feels like a more open, agnostic framework.

I mean, take C#. I can safely say it is my main language. It’s the language I use the most on a day-to-day basis. For me, it’s the cream of .NET. So when the C# Roslyn compiler became open-source, it blew my mind.

You’re telling me I can go through this thing’s guts and even change it if I want to!?

So yeah, I sometimes still can’t believe .NET Core is actually a thing.

So Isn’t this a Golden Age Already?

I don’t think so. I think the best is yet to come. I think the Golden Age will arrive in the form of .NET 5.

What is . NET 5?

.NET 5 is the next release to follow .NET Core 3.0. That means no .NET Core 4.0, just one single framework.

In fact, it takes the innovations brought to us by .NET core and expands on them, meaning that with a single framework, we will be able to write applications for Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly to name a few.

Microsoft has openly admitted that this next iteration on the framework will be a combination of the best bits of .NET, .NET Core, Mono and Xamarin combined.

Why Does this Matter?

It matters because it takes the democratisation I referred to above and feeds it a shipping container’s worth of Red Bull.

Having all the benefits of Core in one place, one visual studio project, one CLI and knowing that I can deploy it pretty much anywhere, as well as fix any bugs in the framework myself is pretty much God-Mode for any .NET developer.

It’s the icing on the cake if you already love .NET, and it may be the very reason developer’s who don’t currently touch it pull up a seat at the table.

There’s a hell of a lot of competition out there still for .NET. For example, I’m fascinated with the things developers are churning out with speedy languages like Go and how new versions of the language like TinyGo are challenging Microsoft in the IoT space.

But who is to say that the new phase in .NET’s life-cycle will not be the catalyst in a movement of new, .NET inspired languages?

Most of us are used to the fact that C#, C++, Javascript and Java are heavily influenced by (or even abstracting on top of) C. Just as Go gives developers the power of a lower-level C-like language with some handy memory management to boot.

Now that the .NET framework is being unified on top of being open-sourced, could we see a new off-shoot of C# as TinyGo is to Go, or Go is to C?

What’s certain is that competition can only be a good thing, and so it will be fascinating to see how other frameworks from players like Google and Apple will respond to the great ‘Microsoft Unification’ to come.

In the mean time, while we eargarly await the arrival of .NET 5, take a look back on the evolution of .NET on this great episode of the Dot Net Core Podcast which looks back on how far .NET has come throughout the years.

Nick Proud Nick is a Software engineer specializing in systems automation using .NET Framework / .NET Core / ASP.NET and Node.js. See author's posts