Lately, things are getting confusing. There’s .NET Framework, there’s .NET Core, and there’s .NET. They’re all pretty much the same, but they are very much different.
How Open Source changed .NET forever
Lately, things are getting confusing. There’s .NET Framework, there’s .NET Core, and there’s .NET. They’re all pretty much the same, but they are very much different.
It all began with the .NET Framework in 2002. In the past twenty years software changed our society. Individuals and businesses rely on software much more than back in 2002. Software development as a profession has changed too. The typical software development is much more eager to share the knowledge of their profession with other software developers than in 2002.
.NET development changed over the years. .NET has become a community rather than the programming language some thought it to be. .NET Framework and .NET Core/.NET are very different things.
This article describes how .NET Framework, and thus the job of the average .NET developer has evolved over the past twenty years. Let’s take a quick trip down memory lane:
How the .NET Framework came to be
It all started in 2002. Before 2002 building things with a Microsoft programming language was no picnic... Instead of .NET we had Visual Basic for a programming language. It was possible to build websites with it too, that was called ASP. It worked, but PHP and Java were superior to it, and more and more developers moved away from Microsoft programming languages.
So, in 2002 Microsoft introduced the .NET Framework. A far more powerful application framework designed to be easily adopted by C++-, Java-, and Visual Basic programmers. The goal? Getting everybody back to programming Microsoft languages. And it worked.
The adoption of Open Source
When .NET Framework was first introduced in 2002, sharing ideas amongst other programmers online wasn’t an absolute no-go from a company perspective. Yes, Open Source existed back then, but most people didn’t understand the concept and thought it meant free software.
Over the years more and more Open Source projects arose. People spent their free time building things and they shared their code online. Others approached Open Source from another perspective. Some companies thought: Why pay for maintenance on software that does not give the company a competitive advantage? Let’s Open Source it, share it with other companies and have maintenance be a collective effort. This reduces software development costs and makes software development a lot cheaper and faster. Other companies made a business model out of Open Source. By Open Sourcing their software, they could create a demand for a paid product. In other words, it can result in an upsell.
As a result, today, most of your codebase isn’t yours
Around 2010 Open Source really took shape in the .NET community. A package manager called NuGet was introduced. Basically, this meant developers were able to download chunks of Open Source software into their software with Visual Studio:
The NuGet package manager in Visual Studio. Download whatever you want!
Open Source got tangible for the average software developer and a lot changed. Wanna send an e-mail? Don’t write code for it! Download a NuGet package! As a result, any arbitrary thing to do was being downloaded into the software in the form of a NuGet package and all a developer had to do is write things that mattered: the business rules.
More and more the nature of software changed. The bigger part of any application was a bunch of NuGet packages sewed together with some custom code. The part that was managed by the development team got reduced to a lot less than it used to be.
Long live .NET Core
In 2016, the goals Microsoft had set with the .NET Framework had been accomplished. .NET Framework was considered a mature, powerful application framework and lots of companies had been using it to build their software.
By then Microsoft had set new goals. In 2010, Microsoft introduced Microsoft Azure. Instead of selling Windows licenses, Microsoft wanted to sell infrastructure that runs on the Azure platform. To do so, their programming language had to be platform-agnostic and the .NET Framework is the opposite of that. So .NET Framework got ditched. Microsoft introduced its successor: .NET Core: a platform-agnostic application framework that is compatible with Azure, AWS, and Google cloud.
The volatile nature of .NET (Core)
Before 2016,.NET Framework updates didn’t have a big impact. Microsoft tried to keep supporting features from older .NET framework versions. But they changed. Microsoft declared to stop releasing new major versions of the .NET Framework. They could not abandon it because too many companies had depended on it too heavily.
Soon, Microsoft introduced .NET Core 2. They didn’t care too much for compatibility with .NET Core. Then they released .NET Core 3. Again, they didn’t care too much for compatibility with .NET Core. And then they ditched .NET Core and introduced something completely different: .NET 5 and then they introduced .NET 6. They declared .NET Core 1 and 2 end-of-life. All of this happened within 6 years.
Obviously, both companies and Open Source communities that had invested in .NET Core had a hard time keeping up with this pace. Because all these framework versions were incompatible with each other, it was practically impossible to keep supporting software versions for all of these .NET versions. So, practically there were two options: Either you stick with .NET Framework or you keep updating to the latest (LTS) .NET Core/.NET version.
As a result of this, the community got split up: There are .NET Framework developers and .NET (Core) developers. And they are very much different.
Most Open Source projects choose to stay up to date with the latest .NET versions. So, most Open Source projects stopped supporting .NET Framework. As a result, .NET Framework is much more difficult to use with the newest platforms and techniques. .NET Framework got demoted to the old-school, big-enterprise, non-cloud programming language.
Microsoft ❤ Open Source, Java, and Linux
Microsoft made some other drastic changes. For starters, they Open Sourced .NET Core. Everybody can now contribute to it. At some point, they decided to top that off with acquiring the biggest online Open Source platform (GitHub) itself.
And since Microsoft is in the business of selling infrastructure on Azure, it makes no sense to exclude Java-based applications. So, Microsoft Azure is compatible with that too.
How Docker and cloud introduced a new dimension to software development
As mentioned earlier, Open Source manifested in NuGet packages. These are small chunks of software that can be included in a .NET Application. But with the introduction of Docker, this concept went next level.
On Microsoft Azure (or any cloud platform, for that matter), it is possible to run Docker containers. A composition of containers manifests in one logical consumer-facing application. This allows developers to build applications that are a composition of parts that may be written in different programming languages.
This concept introduced a new dimension to software development. To work this way, efficiently, developers now had to have a thorough understanding of how infrastructure works. As a matter of fact, the developer got responsible for choosing chunks of infrastructure.
The scarcity of Software Developers
A long story short, in contrast to .NET Framework development, .NET development had changed into much more than just writing code. It has become a matter of staying up to date with the latest Open Source initiatives, container platforms, infrastructure, and much more.
As a result, .NET developers needed sources to stay informed. Preferably in a fun way. So, developers started sharing their knowledge by hosting free mini-seminars too via meetup.com. There’s no entrance fee and participants usually get free meals. Usually, people chat with one another to get a different perspective on the matter.
TLDR
The .NET Framework is a powerful application development platform that runs on Windows. This makes it hard to run on Azure. Microsoft decided to introduce .NET Core: an operating system agnostic application development framework.
After introducing .NET Core, Microsoft decided to not spend too much effort on keeping newer .NET Core versions compatible with one another. This forced many developers to choose one of two paths: Either stick with .NET Framework or go with .NET Core.
Usually, people chose .NET Core when they run their software in the cloud. But developing software in the cloud became a profession by itself. It’s much bigger than just writing C# code.
To keep up to date, .NET developers started arranging meetings with one another, writing blogs, sharing code on GitHub, and so forth. This way they could keep up to date with the world that’s been changing faster than ever before.
A long story short: .NET Framework and .NET Core are two completely different things.