I was discussing the merits of Windows RT with a colleague, and the conversation came to that old chestnut about how Windows RT can’t run so-called “legacy” (x86) software. I got a Surface RT back in February, and pretty much the first thing I did (after unboxing it) was to try to install a classic Windows title, which of course, failed miserably. Today I posited that it might be possible to run portable x86 apps on the platform. Again I was met with the same failure. Which got me thinking, why exactly can’t Windows RT run x86 programs?
I understand that Windows RT is designed for ARM and that’s a completely different platform with a different instruction set, etc. It would be like saying “why can’t a Mac or Linux program run on a Windows PC? Or vice-versa?” It really has nothing to do with whether you can/need to install files on the host OS, but rather whether the OS knows what to do with the instructions that the program is attempting to execute. And remember, the application software doesn’t really communicate directly with the hardware layer anyway; that’s what the OS is for. And the truth is that you can run software on a non-native OS, but you need an emulator (BlueStacks) or virtual machine (Parallels, VM Ware) to do it.
So here’s my quasi-technical perspective on the issue. Windows RT has a Windows desktop. Now especially after having used Windows RT for the better part of a year, you’d have a hard time convincing me that Microsoft completely re-coded the Windows desktop to run on ARM. It just doesn’t make sense, either logistically or functionally. Windows represents the culmination of over two decades of development. You don’t re-build all that completely for ARM in 18 months. And even if you did, there’s a ton of settings, utilities, etc., in the RT desktop that would have no business in a true ARM environment. If you were building a legacy desktop from scratch to support Office, IE, and maybe a few file operations, you wouldn’t go to the trouble of rewriting the entire Windows 7-era speech recognition engine or the Task Scheduler – stuff that you’d really have no need to run on RT devices. Let alone re-building the core Office programs specifically for this environment. So that tells me there’s probably some kind of emulation layer that exists, which allows the Windows x86 code to run on ARM. And that makes the limitation that Microsoft put on traditional x86 desktop software (whether installed or portable) seem completely artificial. Did you notice that when you try to install an x86 application on the desktop in Windows RT, the popup that says “This app can’t run on your PC” uses the new modern UI? That screams “gatekeeper” to me.
Call me a conspiracy theorist if you want, but it’s more likely that Microsoft didn’t want to damage the value proposition they had carefully constructed for Windows RT. After all, if RT could run any x86 software on low-powered ARM devices (even if it was sluggish), then they’d have a hard time selling casual users on a full-blown version of Windows that only runs on a “real PC.” Besides, banning x86 software from RT set a nice low bar for the platform; if you expected to run all your legacy software, and then the experience wasn’t so great, guess who gets the blame? (Hint: it’s Windows)
Look, I appreciate Windows RT and I love my Surface RT. I believe in Microsoft’s long-term vision for it in the post-PC landscape. If it could run a couple of my favorite desktop apps, it’d be all I need. Microsoft should have said, “Hey, we’ve got a version of Windows that can run on top of ARM. It’s designed to work with our new Windows Store apps. If you want to install legacy apps that weren’t designed to run on this thing, then give it a whirl. Your mileage may vary, and if it doesn’t work, don’t blame us.” I think there’s a handful of us that would be OK taking that risk. And my gut tells me it can be done. Here’s hoping someone cracks that nut before RT becomes extinct.