Baseless Apple-Windows speculation

Last week, Ars Technica posted “evidence that Mac OS X could run Windows apps soon”:

Leopard apparently contains an undocumented loader for Portable Executables, a type of file used in 32-bit and 64-bit versions of Windows. More poking around revealed that Leopard’s own loader tries to find Windows DLL files when attempting to load a Windows binary.

That’s nowhere near being able to “run Windows apps soon” by any conventional understanding of “soon”, but it’s interesting. Why spend development time on that feature if there weren’t intentions to use it, or at least experiment with it?

Loading Windows binaries and DLLs is an important step to running Windows applications, but is only the first step. You still need to replicate and translate the Windows API functionality somehow under OS X if you want to run Windows applications outside of a completely virtualized Windows instance (such as Parallels’ Coherence feature).

Where would you get all of that Windows API functionality without requiring Windows itself and a license for each copy? Oh. Right.. Will Apple work with Wine in the future?

According to Bob Cringely’s April 2006 speculation, it wouldn’t be necessary:

I also believe that Apple will offer in OS X 10.5 the ability to run native Windows XP applications with no copy of XP installed on the machine at all. This will be accomplished not by using compatibility middleware like Wine, but rather by Apple implementing the Windows API directly in OS X 10.5.

[…]

Remember Steve Jobs’ first days back at Apple in 1997 as Interim-CEO-for-Life? Trying to save the company, Steve got Bill Gates to invest $150 million in Apple and promise to keep Mac Office going for a few more years in exchange for a five-year patent cross-licensing agreement? The idea in everyone’s mind, of course, was that Microsoft would grab lots of Apple technology, which they probably did, and it quite specifically ended an Apple patent infringement suit against Microsoft. But I’m told that the exchange wasn’t totally one-way, that Apple, in turn, got some legal right to the Windows API.

That agreement ran for five years, from August, 1997 to August 2002. Even though it has since expired, the rights it conferred at the time still lie with the respective companies. Whatever Microsoft grabbed from Apple they can still use, they just aren’t able to grab anything developed since August 2002. Same for Apple using Microsoft technology like that in Office X. But Windows XP shipped October 25, 2001: 10 months before the agreement expired.

I’m told Apple has long had this running in the Cupertino lab — Intel Macs running OS X while mixing Apple and XP applications. This is not a guess or a rumor, this something that has been demonstrated and observed by people who have since reported to me.

Cringely is usually hilariously wrong, so take this with a truckload of salt. I don’t believe that a patent licensing agreement would cover trade secrets and API implementations except those particular algorithms that were patented, which probably doesn’t cover much. The Wine project doesn’t violate patents — it reimplements Windows API functionality with original code using (presumably) non-patented algorithms. Apple could easily use Wine if they needed to.

The PE loader in Leopard is a pretty clear sign that Apple has at least experimented with this idea in the labs. That doesn’t mean much — if every experiment made it into production, we’d all be using Tablet Macs with resolution-independent multi-touch displays and ZFS. But it’s a start.

Why do it?

The biggest reason to do this, hands down, is Microsoft Office. There’s a native Mac version, but it’s terrible. Launching the Windows versions of Excel and Word on a Mac are so incredibly desirable to so many people that Parallels and VMWare have developed huge features just to make it more seamless under full-OS virtualization.

Many businesses also need applications that are only available on Windows, such as QuickBooks or AutoCAD. Even unfortunate employees of Exchange-running companies would much rather use Outlook than Entourage, its bad “equivalent” in Office for Mac.

There’s also potential cost savings. If I paid $300 for the Windows version of Office last year and I want to buy a Mac now, it’s a lot easier to swallow the cost if I don’t have to repurchase the Mac version of that expensive license.

Ultimately, far more people will switch from Windows to OS X if they can run Windows applications easily within it — and while Parallels is nice, it’s no replacement for true compatibility.

Why not do it?

Application compatibility wouldn’t be universal — the same problem Wine has. Programs that call obscure functions or rely on Windows’ implementation bugs will crash, and plenty of Windows resources won’t exist or won’t have direct counterparts in OS X.

Furthermore, it might discourage developers from writing native OS X applications. Why develop only for OS X when you can just write a program for Windows and have it run under both operating systems? This is a common argument, but I don’t buy it. Native applications look, feel, and behave very differently, and Mac users historically have shown that they’re willing to pay for great native Mac software.

Windows application compatibility would be a great technological feat, but I’d rarely use it myself. I only use Windows for testing websites in Internet Explorer and occasionally using Streets and Trips on my laptop when offline on road trips (which doesn’t happen much anymore). I’ll occasionally boot into Windows for gaming, but that’s unlikely to ever be fully virtualized or emulated enough for anything except a real, native Windows installation to properly host.

But the biggest problem isn’t ideological or technical — it’s economic. Development time and ongoing maintenance for this feature would be huge, and the opportunity cost of many of Apple’s best OS engineers working on this is massive.

Which would you rather have: a giant feature as well-executed and useful as Time Machine every 18 months that benefits all Mac users, or a limited Windows XP compatibility layer in 5 years, when Windows XP is 11 years old, that benefits only the subset of Mac users that still want to run Windows?

This feature won’t make it out of the labs.