Hacker News new | ask | show | jobs
by octotoad 4957 days ago
This got me thinking about the whole Windows ARM port and x86 compatibility. I'm sure it's been mentioned before, but, why the hell didn't Microsoft make use of .NET for cross-platform compatibility?

Have developers write applications in C# or any other language supported by the CLR and let .NET work out the x86/ARM differences.

I'm sure there are valid technical and possibly political reasons this didn't happen, but I still find it very strange that Microsoft went to the trouble of developing this entire platform/framework/ecosystem just to ignore it when the opportunity arises to actually make good use of it.

4 comments

> "but, why the hell didn't Microsoft make use of .NET for cross-platform compatibility?"

But they did. .NET is the platform of choice when it comes to Win8/ARM development. Any standards-compliant .NET code (more on this later) will with very little work build on ARM.

> "Have developers write applications in C# or any other language supported by the CLR and let .NET work out the x86/ARM differences."

This is exactly what's happening, though with a few caveats.

Note that all of this is from about a week of playing with the Win8/Windows Store SDK, so it may not be entirely accurate or complete.

The main problem with developing for the Windows Store (and, consequently, Windows RT) is that it badly fragments .NET. Very basic classes (like System.Collections.Hashtable) are not available for inexplicable reasons, even though they are in full-fledged .NET.

So sure, theoretically if you wrote your app in C# it will still build - unless you were calling parts of the API that are for some unknown reason unavailable in WinRT. Lots of the API has disappeared, and many, many parts of the System namespace have been replaced with equivalent-but-not-quite classes in the Windows namespace. All of this is very confusing and creates a huge fragmentation problem that will make even the most hardcore Android developer blush.

So yeah, conceptually MS is right there with you, but execution-wise that remains to be seen.

I just fired up VS2012, created a C# Store (Metro) app and looked in properties. One of the platforms available is ARM.
Judging by Microsoft's recent choices to kill .NET-based products like XNA and Silverlight it seems to be the case that management aren't fans of it anymore. Dropping support for XNA is particularly mysterious given Microsoft's struggles to get game developers to support Windows 8 - they literally had a dedicated community of game developers that could have put titles on the Windows 8 store on day 1 if Microsoft had provided any support. Instead, even game developers with titles being published by MS are stuck using MonoGame for Windows 8 support. It's insane.
Yes, plenty of C# developers were shafted over the changes to the infrastructure. I'm ignoring the "Metro" Apps for now, most of what I do is either server, web or a "real desktop" application. (Not to mention lots of CRUD corporate projects.)
I think Windows 8 Metro apps can be written in either a .NET subset or using HTML5/javascript, right?