Microsoft has finally issued a statement about Windows 8 on ARM. What does it all mean for developers? We have a summary that reads between the lines.
For some time it has been speculated that Windows on Arm (WOA) wouldn't support the usual Windows Desktop environment, aka Win32. From a programmer's point of view this seems a very likely scenario. The reason is that it is difficult to see how the Win32 API could be ported to another architecture without putting in huge amounts of effort. If this was to be done then presumably it would then be possible to simply recompile applications from the Intel Win32 API to the Arm Win32 API. Even then there would be problems with apps that made use of features of the Intel architecture. In the case of the initial port, and the port of any applications, the problem of testing would be an expensive nightmare. So, much better to take the opportunity to start over afresh.
After so much silence Microsoft, in the form of the Building Windows 8 blog, has suddenly released a torrent of words, most of which clarify the situation without spelling it out in a blunt and clear way.
So what are the important facts that have just been revealed?
The first is that starting to use WOA will be just like using Windows 8. This much is easy to promise, as the whole initial interaction with the user is via the new WinRT/Metro style interface. So the new code runs on both Intel and ARM - this isn't a surprise. However, Steven Sinofsky then says:
and if you wish [you can use] the Windows desktop with tools like Windows File Explorer and desktop Internet Explorer.
Notice that this doesn't say that you can use the Windows desktop with any desktop application i.e. with any Win32 app. What we are told is that Metro style apps will work on both WOA and x86/64 Windows 8. Again, this isn't surprising and even the fact that the Windows Store will be the only source of such apps, utilities and drivers isn't a shock if you have been following what has been happening.
However, this does mean that we are entering a new world. Windows was until now a relatively free environment. You wrote your code and when you were ready you installed, or sold, the application wherever you wanted. Now it is a closed world with Microsoft holding the key to the door.
Of course, you can still create any apps you want for the Windows desktop. but these won't run on WOA or any Windows 8 tablet based on an ARM processor. The only desktop apps that will be available on WOA will be specially constructed by Microsoft and its partners.
This is a strange situation - we have a desktop environment and yet we don't have the ability to create a desktop app.
Microsoft is at pains to make clear that the desktop isn't going to be a key element:
...WOA (as with Windows 8) is designed so that customers focused on Metro style apps don’t need to spend time in the desktop. Availability of the desktop incurs no runtime overhead. It is just there should you want or need it.
The desktop will come with versions of Word, Excel, PowerPoint and OneNote. What else will be allowed we will have to wait and see. Interestingly these apps, which together are referred to as Office 15, are claimed to be more than just a port of Desktop Office:
...as these are not simply recompilations or ports, but significant reworking of the products with a complete and consistent user experience and fidelity with their new x86/64 counterparts.
So in what sense the WOA desktop really is Win32 on ARM is a good question. If you re-work an app to that extent there is no guarantee that the API is preserved. This too might be another reason that Microsoft needs to control access to the development environment.
To be clear, it seems likely that WOA desktop is a desktop environment in name more than substance and porting from Win32 isn't likely to be straightforward.
If it was why wouldn't Microsoft simply make the tools available? To quote:
WOA will not support any type of virtualization or emulation approach, and will not enable existing x86/64 applications to be ported or run.
This is a confusing statement, as emulation and porting are two very different things, but it seems to be clear that the WOA desktop is not for us.
Microsoft is also going to control the hardware that runs WOA in much the same way that it controls the hardware that can run Windows Phone 7 or 8. It will release WOA at the same time as the full Windows 8, but again with the difference that you won't be able to buy WOA - it will only come with the approved hardware.
There are some ARM test machines ready to be distributed to the chosen few when the consumer preview of Windows 8 is made available, but the majority of developers will have to make do with testing on Windows 7 compatible devices.
This is a very complicated situation and we need to summarize what it means to the average Windows developer.
You can continue to create desktop apps using the tools you know, but these will not run on ARM tablets - only on standard x86/64 machines.
There will be WOA desktop style apps, but who can create them will be controlled by Microsoft.
If you create a WinRT/Metro style app then it will run on all Windows 8 devices. Notice that there are many restrictions on what a WinRT app can do - and in particular WinRT does not support overlapped windows.
WinRT/Metro style apps will only be available via the Windows store.
You will only be able to get WOA pre-installed on approved hardware
So if you want to work with WOA you will have to start from scratch and write a completely new code base for you application.
How is this different from Microsoft simply introducing a completely new operating system for ARM devices and x86/64 tablets?
At the moment no one has a single operating system that spans phones, tablets and desktop machines. Apple has iOS for phones and tablets and OSx for desktops. Google has Android for phones and tablets and nothing really for desktops. Microsoft has Windows 8 for desktops and some (perhaps non-typical) tablets and WOA for ARM tablets and presumably WP8 for phones.
The only unifying factor is WinRT, and this looks to be the API of the future for the Microsoft programmer.
Xamarin has announced a Unified API for Xamarin.iOS and Xamarin.Mac which allows developers to support both 32-bit and 64-bit applications with the same source code (as well as binaries) on both [ ... ]