Things are changing at Microsoft (or maybe they changed a while ago and it took me all this time to notice). The short story is the company no longer cares whether you use their development tools, they only care that you target their platforms: Windows 8 and Windows Azure.
One interesting question to ask is “is this a good strategy for Microsoft?” I honestly don’t have an answer for this. Clearly the tablets pose a threat to their traditional cash cows of Windows and Office, so getting developers to develop apps for Windows 8 and Azure ‘using any tool’ seems like a good thing for them. Clearly getting Windows Store Apps developed is vital for them, but with so mobile developers already very busy building stuff for iOS and Android, will the ‘using any tool’ be enough to win them over? As for Azure it’s difficult to see why they’re chasing it so hard, sure the rental model is very attractive to them because it means a nice steady income rather than a one off sales, but the margins on Azure are so very thin. The figures I’ve heard, and admittedly this is rumors rather than hard facts, is that they’re only making a few cents for every dollar spend on Azure, were as with Windows and Office they’re used to 30% or 40% margins. Microsoft make some money from Visual Studio and MSDN licenses, I guess the ‘using any tool’ strategy threatens this but I think perusing this strategy doesn’t necessarily mean they lose much revenue from Visual Studio/MSDN. Developers like Visual Studio so, will continue to use Visual Studio and buy MSDN Licenses. Plus the money they from MSDN licenses goes in the small change jar.
Another interesting question to ask is “is this a good thing for Software Developers?” I think it’s mostly a good thing, but there are problems with the model too. .NET being more open means it’s now easier to use from other platforms. Sure, you’ve always been able to use .NET from other platforms thanks to Mono, but now it’s feasible to use more and more libraries that Microsoft have provide themselves. We don’t get the full benefits of open source, such as contributing patches, small incremental releases and features requests as .NET is not full open yet. There’s also a danger of fragmentation. To be fair .NET is already pretty fragmented with different framework version for targeting Windows Desktop, Windows App Store, Windows Phone, Silverlight, and Xbox, and that’s just the Microsoft versions, not even taking account the Mono ones. There’s also a new interesting development, Miguel de Icaza has recently been talking about extending C# to include non-null types. Although, I like the idea of non-null types in C# I’m not completely sure this is a good idea. A Mono C# compiler that supported a superset of Microsoft C# would only add to the fragmentation. Though, I think this shows a growing confidence at Xamarin, this is something the mono team would have never dreamed of in the Novell days.