Opening the .NET framework

13 November 2014
Earlier this week I heard that Microsoft has not only open-sourced the .NET run-time, they are releasing a Linux version. To me this is Microsoft's realisation that .NET's reputation as a Windows-only technology is now a liability, as all modern competing technologies (Python, Ruby, Java, etc) don't give a damn about the underlying platform, and Windows is in decline. It all looks like another big push for C#.NET to supplant Java in the new world of heterogeneous platforms, because if .NET does not rapidly increase its mind-share, Microsoft is finished.

My own interest

Although my first job using C#.NET v1.0 was an experience that gave me a somewhat negative view of the post-dotcom IT industry, C#.NET was nevertheless something that has subsequently popped up on my radar every now and then since. Partly as a result from the realisation that most IT jobs in New Zealand are basically Microsoft, I decided to get back into C#. My overall impression was that it had been cleaned up a lot, and that compared to Java it had become a language that is quite nice to use. Visual Studio's GUI had taken steps backwards, but I quite liked the third-party SharpDevelop and MonoDevelop, that latter of which I used for two project in early-2014: Sprigfern and IconSharp. Looking back I am not quite sure what my underlying motive was for doing two such projects in quick succession, but either way they were exercises in learning GTK#, which I was left with a good impression of.

The downside is that it became apparent that Mono/GTK# was stuck in the past, as far as I could tell using .NET v2.0 and (even worse) GTK v2.14. The ease at which C# code interfaced with Glade soon gave way to the horror of how backward the range of supported controls was. I was on the verge of recommending GTK# to a former colleague who used C & Glade on Linux, but the sheer distance the C# bindings were behind made me question its development & maintenance effort, and in the end my attention shifted to C++ & wxWidgets. I have always thought Mono had the disadvantage on being an unofficial reimplementation, so Microsoft releasing an official and properly open-source .NET runtime might actually kick life back into GTK#.

Broken Windows

Windows8 has basically been a failure in the market as it tried to position itself in the rapidly-emerging tablet market, but as collateral damage alienated much if its existing desktop user-base. Windows8.1 was a panic back-track, and partly as a result the final retirement of WindowsXP mostly benefited Windows7's market share. Windows Phone was an even bigger botch-up because Microsoft threw away what few advantages it had, and a decent set of handsets was far too late to market. Basically Microsoft tried to muscle in on the fight between Apple and Android, but with no incumbency to lean back on, it got floored.

Microsoft has realised that its long-term future is as an applications software house, with much of its bread-and-butter earnings still coming from Microsoft Office. With Windows dying in the serves & desktop markets and stillborn in the mobile market, it knows its future depends on expanding its target client base, and the most cost-effective way of doing that is to commoditise .NET itself as a platform. It is noteworthy that Xamarin and the Mono Project are on board and it would not at all surprise me if the bulk of C#.NET mobile programming is using these rather than native Windows Phone.

Licensing terms

Microsoft have quite a bad reputation when it comes to open source initiatives, particularly as their Shared Source licence is mostly licences that are not exactly open, and I have in the past wondered whether the choice of ‘shared’ is meant to have a deliberate association with shared needles. It certainly would not be out of line with some of the other things they have said in the past.Perhaps partly because of this previous criticism they have released the sources under the MIT Licence, which is as close as you can get to public domain without surrendering copyright.

More importantly is the announcement is a patent right promise, which although the devil is in the detail, is clearly aimed to alleviate a long-running concern about Microsoft lock-in. This is clearly mindful of the damage done to Java by Oracle's action against Google over Dalvik, because anyone put off Java as a result will think twice about .NET. At the moment there is a lot of disruption in the general IT market as a whole, with emphasises shifting away from enterprise legacy and towards from-scratch projects, which is potentially lethal for incumbents who don't adapt to start-up preferences.

Conclusion

Microsoft have realised that they don't have a future as a vertically integrated company, so it is in their interest to get .NET accepted as a genuine operating system agnostic platform. People are no longer interested in learning closed platforms, and it is a logical extension to how most of Microsoft's development tools are basically free for everyone except “enterprise” sized companies.