If you are a frequent reader of the Coding section of this blog, there's a good chance you are an ASP.NET Core developer - or an IT enthusiast interested in Microsoft web-related technologies: more than half of our programming articles are dedicated to ASP.NET Core - the high-performance, cross-platform, open-source web development framework introduced by Microsoft in 2016 as the successor of ASP.NET.
The reason for that is quite simple to understand: most of the developers who contribute to this blog are working daily with ASP.NET Core, creating sites and services for small and large organizations. We have chosen to use this framework not only because we know its great potential, but also because we greatly appreciate the open-source and community-driven approach demonstrated by Microsoft over the last few years.
However, perhaps some of you will be surprised to know that this has not always been the case: as a matter of fact, Microsoft used to view the growing open-source movement as a threat to their business model, which was mostly based upon proprietary technologies and extensions - until less than a decade ago. In this article, we'll briefly recap the backstory that led a fierce opponent of the open-source software paradigm to become one of the biggest open-source contributors in the world.
Trying to understand the (r)evolution accomplished by the Microsoft web development framework(s) within the last 20 years is not an easy task, especially for new developers. What brought a company known for its opposition to the open-source software paradigm to embrace such an approach to the extent of acquiring GitHub, becoming one of the biggest open-source contributors in the world, and creating an open development framework such as ASP.NET Core?
In a nutshell, we can say that the shift started in 2004, when the first Microsoft projects (WiX, WTL, FlexWiki) started to be released under open-source licenses: however, the real deal took place after 2014, when Satya Nadella was appointed as the company’s new CEO: that was the day when Microsoft started to embrace the open source philosophy not only for some ancillary projects, yet also into its core business.
It goes without saying that Microsoft’s choice was not so much a philanthropic initiative, but rather an attempt to maintain a high standing in several emerging IT trends – such as cloud computing, scalable architectures, and web development – where open source played a dominant role. Such a goal was mostly achieved through the wide-range support of several operating systems (including Linux, macOS, and Android), the adoption of a solid cross-platform approach, and – most importantly – the release of several successful open-source projects, such as:
- Visual Studio Code, a cross-platform code editor available for Windows, Linux, and macOS, released under MIT License.
- PowerShell Core, a cross-platform, open-source task automation and configuration management framework, consisting of a command-line shell and scripting language, released under MIT License.
- .NET (formerly known as .NET Core), a cross-platform managed computer software development stack available for Windows, Linux, and macOS, introduced as a successor of the existing .NET Framework and released under MIT License. Microsoft’s .NET can be used in five development scenarios: web applications (with ASP.NET Core), console applications, general purpose libraries, Universal Windows Platform apps, and cross-platform mobile apps.
… and, of course, ASP.NET Core: first released in 2015 (v1) as a complete rewrite of previous Microsoft’s web development framework known as ASP.NET (2002), which in turn was the successor of the very first technology created by Microsoft for building dynamic web pages: Active Server Pages (1996), better known by developers as ASP or classic ASP.
Although both .NET and ASP.NET Core have undergone a lot of changes in the last 7 years, their initial “revolutionary” approach has remained the same: the full adoption of a cross-platform and open-source development model to build modern, cloud-enabled, scalable, and high-performance apps.