Microsoft has a complex relationship with the .NET ecosystem it created. Recently it seemed intent on dumping .NET which, after all the work, would be madness. Now the relationship seems to have entered a different phase and there might just be method in the madness.
.NET has just been open sourced and Microsoft has big plans for it being a multiplatform system.
This has to be good news doesn't it?
The big problem with open source is that it can be a dumping ground for software a big company no longer wants to support.
What the gods wish to destroy they first open source.
Of course there are exceptions where the intention is quite the reverse.
Which is it in this case?
Microsoft is going through some interesting times and it is all down to the big change in direction that eventually led to Windows 8. What happened is history.
Windows needed to be changed to allow it to work in a mobile touch environment. Instead of finding a way to make the change in a way that was as backward compatible as possible, the opportunity was taken to throw out technology that wasn't much liked by the operating system team. Rather than working with .NET, we had a return to C++ and COM. WinRT wasn't just an attempt to rebuild Windows as a mobile operating system, it also was a weapon to be used against managed code.
In the past Microsoft has given clear signals about what you should use:
Creating a web site? Use ASP .NET and there was only one flavour of ASP .NET.
Creating a desktop enterprise application? Use C# with WPF
.. and so on.
Microsoft in the past was strongly opinionated.
Now it is an "anything you want to use is fine by us" sort of outfit.
The trouble with this lax attitude is that if you do choose to use, say, HTML then why bother running it on Microsoft technology when there are a lot of free alternatives?
So the general feeling settled on Microsoft's loyal programmers that perhaps they had been sold another pup by the company.
After the killing of VB6 many programmers felt damaged and bullied by Microsoft.
After the killing of Sliverlight many programmers couldn't find it in them to trust Microsoft ever again. A case of fool me once shame on you, fool me twice shame on me.
So the trust in .NET and its long term future declined.
With the failure of Windows 8 and the installation of Satya Nadella as its new boss everything had to change.
Of course there was no guarantee that Nadella would be any better disposed to the existing technologies and to .NET in particular. Extracting Microsoft from the mess it found itself in was, and is, no easy matter and a sure strategy far from obvious.
The good news now is that suddenly .NET is open source and there are plans to make sure it works on a much wider range of platforms - OSx, Linux, Android, iOS - you name it and it is a target for the future .NET.
Suddenly .NET looks like it's part of Microsoft's future plans.
The fact of the matter is more complicated, however. What has been created as an active open source project is a new incarnation of .NET based on the old one. The original .NET framework is just being used as a reference for the new.
The intent is to build .NET from scratch all over again.
This is a big task and it isn't going to happen overnight. For a few years at least it is unlikley that this is going to make a real difference to anyone.
At the moment it is difficult to tell if Microsoft is serious about .NET or just wants rid of it.
Much more indicative of Microsoft's intentions is the sudden and surprising revitalization of WPF. Silverlight was a subset of WPF that could run in a number of different configurations - including as a browser add-in. When browser add-ins went out of fashion, and when .NET in general became a dirty word, Microsoft dropped it. This, of course didn't bode well for WPF. Killing it wasn't a real option as too many big companies had committed to it, but letting it wither was a reasonable alternative and this seemed to be what Microsoft was doing. The WPF blog was silent for four years and there was virtually no progress and no enthusiasm for the technology.
Now we have news that there will be a new version of WPF and its going places.
If Microsoft was dumping .NET in the form of an open source project why revitalize WPF?
Why also not take the opportunity to dump WPF as part of the open source project?
The bad news is that WPF is not open source but this is also the good news because it really does indicate that Microsoft still has an interest in .NET.
It also looks as if this new interest has been thrown together in a hurry. There isn't much of .NET actually available as open source at the moment, the new cross platform .NET Core has hardly been started and the WPF announcement doesn't include anything particularly impressive.
We will have to see how quickly things progress to get a measure of how much interest Microsoft has in .NET.
These events do fit in with Nadella's claim that he wants Microsoft technologies on everything. This is reasonable if Microsoft is to stop being a one-operating system company and spread into cloud services. Microsoft has failed to make any progress in the mobile world and it is now probably far too late to expect any Windows based operating system to shift iOS, let alone the huge user base that is Android.
Google has proved that it is possible to give an operating system away and still make money from it. Microsoft doesn't need to sell a mobile operating system to make a profit.
Windows on mobile is pretty much dead, but Microsoft on mobile has a really good chance of succeeding.
If you keep thinking these thoughts then it seems very reasonable that .NET should be your multiplatform system. After all, Xamarin has already got .NET on iOS and Android so it shows that this is possible.