Jason Bock

Home Biography Speaking Articles Books Music

An Open Future for .NET

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.

But the world has changed drastically from the first release of .NET and Visual Studio in 2002. Java didn’t end up everywhere and essentially found it niche in the enterprise, on the server-side … though it also experienced a renaissance of sorts when mobile applications became widely used, as Android used Java as its primarily language. Speaking of mobile apps, Apple became a force with its iPhones and iPads, gaining wide acceptance and praise. And web applications matured over time, with frameworks like Ruby on Rails and rapid evolution in the JavaScript world. None of this had anything to do with Microsoft. IE6 and Windows Mobile were left frozen in time and languished as other companies innovated. Sure, Microsoft kept .NET fresh and alive, but over time its appeal, as well as Microsoft in general, started to fade.

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!

Published: 11.14.2014 11:07:00 AM CST