April 17, 2015 // By Magenic
When .NET first came on to the scene in the late 1990s, it was primarily viewed as a competitor to Java. But where Java’s emphasis was on “write once, run everywhere”, .NET’s story was “many languages, one runtime.” C# was hailed as a new language for .NET and VB was re-targeted for the CLR, but other languages, such as Eiffel, Component Pascal, and Cobol (!), were now being tailored to use the CLR. This interested me so much that I ended up creating a (now defunct) website to track this evolution at dotnetlanguages.net. Unfortunately, this vision didn’t catch on. Other languages came and went (though one, F#, is now a first-class citizen in the .NET language ecosystem). But the vast majority of .NET applications are written with C# or VB.
Another .NET effort was to have the CLR run on different operation systems. The Shared Source Common Language Infrastructure, typically referred to as Rotor, was made available such that .NET would run on FreeBSD and OS X. Mono was arguably a more successful effort that still endures to this day (and was also arguably a catalyst that culminated with recent announcements in the .NET world … but we’ll come back to that later). The reality was that .NET was primarily used on Windows, and most developers used Visual Studio to produce applications that targeted that platform.
The world has changed. And Microsoft, being as large of a company as it is, has rapidly pivoted and radically changed its message, a message that has loudly and clearly come through with the latest Connect event. No longer is it “Windows-only”. Sure, Microsoft is continuing the evolution of Windows with Windows 10, Windows Phone, and Xbox all using the same base so applications are now “universal”. But Microsoft is embracing other platforms. Web applications can now run on Linux machines with ease. Mobile applications can be written in C# and run natively on Windows Phone, Android, and iPhone devices via Xamarin (the folks that gave us Mono). And what may be one of the biggest surprises of them all is how much Microsoft is opening up to the world by open-sourcing vast amounts of code from .NET along with a free, extensible version of Visual Studio. This, frankly, is astounding. This would never have happened 5 or 10 years ago at Microsoft.
It’s not all there yet. While the new “.NET Core” runtime that powers ASP.NET 5 is OSS, the “full” .NET framework isn’t completely available, and the parts that have been published are just read-only. But it’s clear to me that Microsoft has changed. It’s not about them working in secret and only letting a small group of outsiders influence their choices. Now the .NET community as a whole has a tangible way to affect the direction of .NET in the future. This is a new world, not just for Microsoft, but for .NET developers as well. Sure, there are lots of open source projects on GitHub for .NET as well as related packages in NuGet, but that has only been a relatively recent change. With the .NET world truly becoming open, it’s up to both sides to ensure the community stays active and vibrant. With lots of opportunity available it’s an exciting time to be a .NET developer!