By John Gruber
Build web apps, iOS apps, and workflows with Retool.
In a Macworld Expo keynote address full of surprises, one of the biggest was the news that “iPhone runs OS X”. But what that means, precisely, is not yet entirely clear, and speculation has already led to a few common misconceptions.
It is clearly not the case that the iPhone is running Mac OS X 10.4 Tiger (or 10.5 Leopard) as we know it. Minor differences between the Intel and PowerPC versions notwithstanding,1 every Macintosh ships with pretty much the same version of Mac OS X. If you’re running 10.4, your System folder contains pretty much the exact same software as everyone else’s who is running 10.4.
Clearly, just by looking at the UI, this is not so for the iPhone. There is no menu bar. There are no windows. There is no mouse cursor. These three things have been the defining fundamental elements of the Mac UI ever since the original Macintosh, and none are present in the iPhone UI.
It’s also the case that, by the standards of the iPhone’s 4 and 8 GB storage capacities, Mac OS X 10.4 Tiger is just way too big. My /System/ folder alone is a little over 2 GB. And, as Apple vice president of iPod marketing Greg Joswiak told Macworld UK, the iPhone’s operating system is stored in the device’s flash memory. Macworld’s report says the iPhone’s version of OS X weighs in at about 500 MB (meaning there will be about 3.5 GB of free space on a 4 GB iPhone).
So, misconception #1: The iPhone Contains a Full Version of Mac OS X 10.4 or 10.5.
Wrong: If the OS only weighs 500 MB, it is clearly a subset of the full installation.
This has led to misconception #2: The iPhone Isn’t Really Running OS X, and Claiming That It Does Is Just ‘Reality Distortion Field’ Marketing Bullshit.
Leading the way is this post from Slashdot, “iPhone Not Running OS X”, the gist of the argument of which is that (a) since the currently available Darwin distribution doesn’t support ARM processors; and (b) the Darwin open source license states that changes must be released publicly; and (c) a Cingular spokesperson has (supposedly) stated that the iPhone OS will not be released publicly; and so therefore the iPhone OS isn’t based on Darwin and can’t be OS X. The problems with this chain of logic are manifold. For one thing, Apple owns the copyright to Darwin, and it can do whatever it wants with its own modifications;2 everyone else is bound by the open source Darwin license, but Apple isn’t because they own it. For another, Cingular almost certainly has no say in the matter.
Apple is no more likely to release the entire iPhone version of OS X than they are to release the entire Mac version of OS X (which is to say: not likely at all). But I see no reason why they might not release an updated version of Darwin that supports whatever processor is inside the iPhone (which we still don’t know for certain, but which I’m still betting is some sort of ARM chip) a few months after the first iPhones ship.
I’ve been investigating this since shortly after the keynote, and everything I’ve learned indicates that it is entirely fair and accurate for Apple to call the iPhone operating system “OS X”: the kernel is Mach;3 the low levels are Darwin; the UI for the apps is Cocoa’s AppKit. The math looks like this:
Start with Mac OS X as we know it.
Subtract everything in Mac OS X that is needless or undesirable on the iPhone — drivers for hardware the iPhone doesn’t have, frameworks and libraries for features that don’t make sense on a small screen mobile device, all of the applications designed for the Mac UI.
Add the things that the iPhone needs but that Mac OS X as we know it lacks: multi-touch screen support, on-screen “smart” keyboard, cellular phone networking, drivers for the iPhone sensors (proximity, light, accelerometer), apps written specifically for the iPhone UI.
In other words, the iPhone’s version of OS X contains everything from Mac OS X that’s applicable to a mobile phone, plus new bits specific to the phone. It’s a “full” version of OS X not because it contains everything from Mac OS X, but because it contains everything you’d actually want from Mac OS X.
And so that Slashdot-style skepticism, where everything uttered by Steve Jobs during a keynote is considered marketing bullshit until proven otherwise, couldn’t be more wrong in this case. It’s more accurate to call the iPhone’s system software “OS X” from an engineering perspective than from a marketing one.
Mac nerds, and Cocoa programmers in particular, would look at the iPhone’s system and agree, Holy crap, that really is Mac OS X.
But a typical non-technical Mac user might hear “iPhone runs OS X” and assume they’re going to feel right at home; that the UI and the apps look and behave just like the software they’re used to, albeit on a smaller screen. As stated before, a few minutes looking at Apple’s demos shows that the UI is totally new, both for the system as a whole, and for each of the currently included apps. Yes, the email client is called Mail, but it’s not Mac OS X Mail. Yes, Jobs called the browser “Safari” (although on the iPhone screenshots it’s just called “Web”), and it does use WebKit for rendering (as does iPhone’s Mail). But there’s no Finder. No menu bar. No windows, or close/minimize/zoom buttons.
Judged only by what appears on screen — which is how lay people judge an “operating system” — the iPhone neither looks nor acts like a Mac. That’s not a complaint. You wouldn’t want to take a UI optimized for 20-inch displays and squish it onto a 3.5-inch screen (nor vice-versa; please, no more emails speculating that the iPhone UI is actually secretly the new Mac UI coming in Leopard).
Apple is calling the iPhone’s system software “OS X”. At least in writing,4 Apple has always been scrupulous about calling the Mac’s system “Mac OS X”. It’s hard to say what the difference is, exactly, until we know a lot more about what’s inside the iPhone. But here’s what it looks like to me:
“OS X” is the operating system in the computer science sense: the kernel, the drivers, the FreeBSD stuff, and the frameworks and APIs. “Mac OS X” is OS X for Macs, plus a bunch of bundled apps. Macs are desktop and notebook computers; the iPhone is not a Mac.
And although there’s been much less speculation about it, I suspect this is also true of the Apple TV — that it too runs “OS X”, which is to say a subset of Mac OS X specific to the (relatively limited) list of features the Apple TV supports.
This distinction between “OS X” and “Mac OS X” is loose, but makes sense. There is no brand for “OS X Mobile” or “OS X TV” because there doesn’t need to be; these derivatives of Mac OS X aren’t standalone products in the way that system software is for Microsoft.
OS X is technology; Mac OS X is a product. The version of OS X for iPhones is not itself a product; only the iPhone as a whole, hardware and software combined, is a product. iPhones will get iPod-style software updates, not Mac-style major new upgrade revisions to the operating system.
One other branding consideration, perhaps, is a desire by Apple not to confuse or scare away Windows users. To some lifelong Windows users, “Mac” means “the other side of the computing fence”. Saying that the iPhone runs “Mac OS X” might sound to some ears as though it’s something that isn’t meant for use with a Windows PC.5
In the wake of the legal dispute with Cisco regarding the “iPhone” trademark, several readers emailed me to suggest that, since the phone is running OS X, the obvious solution would be for Apple to rename the product “MacPhone” — and that perhaps that’s what they should have called it even if there weren’t any dispute regarding “iPhone”. That misses the entire point of what Apple is trying to establish with both brands. The renaming of their Intel-based hardware — PowerBooks, iBook, and Power Macs giving way to MacBook Pros, MacBooks, and Mac Pros — was done for one reason: to emphasize that Apple’s computers are Macs, and that “Mac” is the name for Apple’s computers.
On a technical level, yes, an iPhone does appear to be much more like a Mac than an iPod. But on a marketing level, the iPhone is very much like an iPod, floating high above the fray of the 20-year-old Mac-vs.-Windows rivalry.
“Dont Steal Mac OS X.kext”, for example. (And which, by the way, is the only kernel extension Apple ships with spaces in the bundle’s file name.) ↩︎
Remember the minor league brouhaha last summer regarding the source code to the Intel version of Darwin kernel? Apple did not release it publicly until several months after the first Intel Macs shipped, and during the interim, many, including Slashdot’s own CmdrTaco, speculated that Apple was taking the kernel closed source — which they could do if they wanted, but in fact did not. ↩︎
For some circumstantial evidence, check out this listing on jobs.apple.com for “Bluetooth/WiFi SW Engineer — iPhone”; listed among the “additional success factors” are “Mac OS X / IOKit driver development experience” and “Mach IPC and/or Mach Server design experience”. ↩︎
I went back and skimmed a bit of the keynote address from WWDC 2006 back in August when Leopard was introduced. Verbally, Steve Jobs does tend to refer to the OS as “OS X”, sans “Mac”, but all of the slides say “Mac OS X”. ↩︎
Thanks to Ambrosia Software’s Andrew Welch, who suggested this line of reasoning for the “OS X/Mac OS X” distinction during a conversation a few hours after the keynote last week. ↩︎