There’s been so much wild speculation about what Steve Jobs is up to with the new Apple Boot Camp tool for Intel-based Macs. For those who haven’t been already inundated, Boot Camp is a boot manager that makes is possible to install both Max OS X and Microsoft Windows XP on 2 different partitions of an Intel Mac. When you start up the computer, you can pick which one will start up. (I don’t know if it provides any ability for one OS to see the partition of the other.)
Speculation has included some crazy ideas like Steve Jobs wanting to get out of the Operating System business by embracing Windows Vista, writing a OS X compatibility layer to cover old Mac software. Others talk about Windows Vista and OS X running “side by side” at the same time on Intel Macs. I’ve got my own 2¢ on a specific angle, and it has to do with my previous rant about how the new Windows Vista is nothing but Windows 2000/XP with a slight face-lift.
To reiterate what I’ve said before, Windows Vista has very little in it that’s new. (Come to think of it, I can’t think of a single major new feature.) The desktop will have a major face-lift, suggesting that pretty “transparent windows” are a major breakthrough. Okay, some of the window manager rewrites incorporating this new Windows Aero interface are pretty significant (Apple did it earlier with Aqua and Quartz), but let’s not get distracted: the “desktop” window manager serves the purpose of getting programs in front of the users’ eyeballs.
At the heart of your Windows experience is still the same old Win32 and DirectX APIs. That might have been different had the whole .NET thing been different, but apart from some shareware apps and web applications (which don’t apply) I haven’t seen anything major deployed on .NET. The point I’m trying to drive is that Vista will have no features that Windows XP (or Windows 2000) don’t already have that will have people writing “Vista-only” applications.
(In contrast, Apple keeps releasing major new features like Bindings in OS x 10.3 Panther and Core Data in OS X 10.4 Tiger that are incredibly powerful and make it so much easier for developers to write powerful software quickly that you often will find applications that have a minimum OS version requirement.)
So what if OS X 10.5 hosted a Win32/DirectX subsystem that would allow OS X to behave as “just a new window manager” just like Vista will be? Imagine having all your old Windows applications running inside OS X without booting an entire Windows Virtual Machine like the currently effective but sluggish Virtual PC. Imagine having a Windows application window sitting right next to a Mac application window, the same “close, maximize and minimize” buttons on the toolbar, etc. But imagine being freed of the clunky Windows experience itself, freed from having to reboot your computer five times every time you install a new program.
There are two historic examples of this. First of all is the Open Source (read: Linux) Wine project, which aimed to rewrite all the Win32 APIs from scratch—partially to avoid licensing and copyright issues. The other example is the long-forgotten IBM OS/2 which has a seamless integration of Windows 3.1—because of their previous work together, IBM was able to actually include Windows 3.1 libraries in it’s release. When licensing situations changed later on, you were able to supply your own legally purchased Windows disks and OS/2 would copy the OS libraries into place. OS/2 was rightfully known as “running Windows better than Windows” because it was able to host a truly independent, multi-threaded and memory-protected process from within which the Windows programs could run. Hence, a badly-written application would no longer cause the Blue Screen of Death but at most cause itself to die with an error.
Here’s where the Microsoft Vista failure [to include any new features] guarantees the success of such an endeavor: for the forseeable future, no applications developers will be writing anything that requires Vista. It will all run on Windows XP/2000 and hence would also run on OS X—assuming they incorporate a Win32/DirectX subsystem like I’m mentioning. Had Vista offered some truly powerful and must-have new paradigm like their WinFS filesystem or .NET then Microsoft might have offered incentive for Vista-only applications to be written, but no, they will all be Windows XP/2000 compatible for the foreseeable future. And if Apple manages to secure a decent level of success in offering a “better Windows than Windows” then application developers will avoid any new Windows lock-in feature Microsoft might add in later.
So now you’re asking, “is this doable?” My expert technical opinion (guffah) is “Hell Yes!” Apple has such an amazing ability to develop side-by-side subsystems. Case in point: Cocoa and Carbon and Classic, playing together happily. QuickDraw and Quartz, the legacy Mac OS and newer OS X drawing systems, show radically different systems coexisting peacefully. Actually, “Carbon” is a case-study in paving a graceful migration path from legacy Operating Systems. It allowed developers a way to gradually modify their legacy applications to conform to an intermediate API where they could write old-OS and new-OS applications with the same code base. OS 9 wasn’t much more than OS 8 with the new Carbon libraries, encouraging that last step before developers jumped to native OS X code.
An identical strategy could be used for Windows XP/2000 migration.
- A compatibility subsystem could be introduced in OS X 10.5 (Leopard) much like Classic. It would have to “start up” a Windows subsystem, but once that was done, your Windows apps would run side-by-side with OS X apps.
- Create a Cocoa/NeXTSTEP installable subsystem that you could install on Windows 2000/XP/Vista where developers could essentially write OS X (Cocoa) programs that would run on Windows. There has already been development on this with the project called “Yellow Box”. This would be like the Carbon libraries in OS 9 and it would allow developers to take advantage of the incredibly powerful programming environment that makes it so easy for Apple developers to knock off such powerful applications.
- For that matter, Apple could also provide the Carbon API for Windows. In a nutshell, you have to use Carbon if you develop with C++, and you have to use Cocoa—the super powerful and revolutionary one—if you develop with Objective-C or Java instead. Windows is C++ based, and most application developers write in C++, so this would help. Learning Objective-C takes a bit of a paradigm change, but in my opinion it is fantastically more powerful and easy to write with. Many big application developers stick with Carbon because it allows them to establish a common code-base between their PC and Mac offerings, so they’re stuck with C++.
- Application developers can easily offer versions of their software that run on both PC and Mac, with the Mac versions offering nice little features like Spotlight searching or iSync multi-computer synchronization. If fact—hold onto your hats!—Apple could make it possible to produce Super Universal Binaries that would run on legacy PowerPC based Macs (32- and 64-bit), Intel based Macs (32- and 64-bit when they come out) and Microsoft Windows!!!
All from the same code-base!
Voila! If Microsoft stagnates (“if” ????) users and application developers can gradually drift over to OS X with nothing to lose. (Except their cheap PCs.) It’s an incredibly elegant plan, it falls easily within Apple’s technical ability, and if follows the tried-and-true playbook that Apple has been using for over a decade—ever since they performed their first amazing feat by moving from the Motorola 68xxx chipset to the PowerPC.
Just a footnote: I could see a really good article I could write in which I created a “mock review and technical explanation” of Steve Jobs’s “hypothetical” unveiling at the next Apple Developers Conference in August. I could basically spell-out the above theory in a single “fake future tense” article that would be much more readable and understandable.
I’m finding way too many projects to do while I’m unemployed, though. I really need to refocus on the job-hunt.