The Palm Pre/iPhone Multitasking Myth
July 28th, 2009
Daniel Eran Dilger
Vendors in the smartphone market desperately need to offer unique strengths that can offer a credible alternatives to Apple’s blockbuster iPhone and its App Store. A primary strategy of Palm’s new Pre is to advertise the potential of “multitasking apps” as a key differentiator. The problem is that Palm and its boosters don’t seem to understand what multitasking is.
This is nothing new. “Multitasking” as a concept has been stretched into an almost meaningless buzzword for decades. It joins a variety of other abstract technical ideas that are used to distract attention away from usability and toward pointless features that can be worse than the problem they are attempting to solve. Here’s why, following a story arc that begins over thirty years ago.
Multitasking on the Mac
Multitasking is a great idea; why not enable computers to do more than one thing at once? The primary reason, of course, is that some systems can’t handle doing more than one task at a time. The original 1984 Macintosh was designed primarily to make computing accessible by presenting an intuitive graphical interface. Its early 80s hardware couldn’t really handle doing anything else at the same time.
Once users grasped the concept of launching a graphical application, say MacPaint, then quitting it to launch MacWrite, the obvious next step was to want a faster way to jump between the two applications. The original Mac was a lot like the iPhone: users had to quit the foreground app in order to launch the next one from a central launching pad: the Home screen on the iPhone or the Finder on the first Mac.
Almost immediately, the desire to accelerate the use of multiple applications resulted in Switcher, a hack for the Mac that enabled the system to pause the foreground app, load the next program into memory, and then jump back and forth between the two. The next step was the MultiFinder, which enabled users to instantly jump between applications presented on the screen in overlapping windows.
Neither solution was true preemptive multitasking, which required a more sophisticated operating system than the original Mac OS delivered. However, to users who needed to get jobs done, switching back and forth between different applications solved most of the problem without introducing significant disadvantages, at least until applications stopped cooperating.
After successfully delivering the premise of an intuitive graphical computing environment in a commercial product, Steve Jobs wanted Apple to aggressively move the Mac environment on top of a more sophisticated foundation. A new “Super Mac” operating system was explored, as was a partnership with both AT&T (then the owner of commercial Unix) and a joint engineering project with Apollo, a workstation vendor that produced a Unix-like, sophisticated operating system called Domain/OS.
Apple’s conservative management rejected new investment in the Mac’s underlying operating system, resulting in a split where Jobs and many of the company’s best engineers left to develop the next thing in computing: a pairing of the essence of the Mac with the technical sophistication of a true multitasking operating system: Unix. Jobs’ NeXT shipped its first computers in 1988, and continued to advance the state of the art into the 90s, albeit being commercially unsuccessful.
Nothing successfully rivaled the Macintosh user interface until Windows 95 appeared more than a decade after the original Mac. Within that decade, while Apple shipped lots higher-level technology from QuickTime multimedia to advanced typography and effortless networking, the company did very little to advance its core operating system technology. It certainly recognized the problem, and took stabs at delivering so-called “modern operating system features” in the Pink, Taligent, and Copeland projects.
However, by the time Windows 95 became available, Apple had not enabled the Mac OS to preemptively schedule applications; essentially, this meant that a rogue app could hog the system’s resources, preventing any other program from running. In order to deliver true multitasking, a system needs to centralize command in a kernel process capable of taking back control from a failed app and distributing the computer’s processing resources among the apps that need to access them.
Multitasking in Windows
Unix systems like NeXTSTEP could do this, as could certain other platforms including Commodore’s Amiga. Neither of these niche players could command significant enough sales to bring true multitasking into the mainstream, which was then dominated by the Mac in graphical computing and MS-DOS in the larger market outside of Apple’s professional graphics and education-oriented business.
When Microsoft announced that it would bring Unix-style multitasking to the PC with Windows, the tech media ignored the fact that this technology was already widely available on both the low end represented by the Amiga, and the sophisticated higher-end represented by NeXT and other Unix-based workstations. Instead, they uncritically presented Microsoft as an innovator in bringing true multitasking into the mainstream.
Microsoft’s first effort to ship its own multitasking operating system was Windows NT 3.1 in 1993, a half decade after NeXT. Microsoft had earlier shipped its own branded version of AT&T’s Unix under the name Xenix, and more recently had worked with IBM to deliver a true multitasking kernel to replace the more simplistic DOS named OS/2, but Microsoft had not developed any of the core kernel technology for either of those earlier efforts.
Windows NT was new to Microsoft, although it was largely derived from VAX/VMS, a high performance operating system developed by DEC as a competitor to AT&T’s Unix. Microsoft hired Digital’s VMS development team, led by Dave Cutler, and paid them to create an original operating system for Microsoft that could itself be pitted against Unix.
There were key differences between Windows NT and Unix; NT was heavily influenced by Microsoft’s efforts to clone the Macintosh, resulting in a graphical-orientation and a self-tuning design philosophy. Microsoft hoped to essentially take its copy of the Mac environment and pair it with its commissioned copy of VMS, creating a credible alternative to NeXTSTEP, which similarly paired the essence of the Mac with Unix.
NeXT vs NT
Jobs achieved his goal with NeXTSTEP in 1988 and established it as the most stable and productive development system by the early 90s, creating a platform sophisticated enough to be used in high-end research and mission critical industries ranging from the banking industry to the NSA and CIA.
In contrast, Microsoft’s NT was a continual disappointment throughout the 90s. It ultimately couldn’t replace DOS as the mainstream operating system for PCs until Windows XP appeared in 2001, nor could it even pose as a reliable alternative to Unix in servers; NT was notorious for suffering abysmal uptime, even in a carefully controlled server environment, well into the late 90s. Mission critical systems from telephone PBXs to ATMs typically relied upon the use of IBM’s OS/2, as NT was simply not up to the task.
Anyone who was paying attention throughout the 90s was fully aware that Microsoft’s terrible NT software was only suitable for companies that could afford to throw ridiculous amounts of hardware at it. When Microsoft bought Hotmail and then WebTV, both systems originally built using Sun’s Unix servers, it ran into a major boondoggle of needing to build out massive PC server farms to account for the terrible performance and reliability of NT.
Microsoft’s monopoly position enabled it to eventually shovel sufficient billions into NT development until it could compete as a worthy competitor. Windows 2000 (aka Windows NT 5.0) could reasonably be compared against IBM’s OS/2, commercial Unix, and NeXTSTEP in terms of sophistication, but only because those alternatives had been repressed from competing in the market over the previous decade. By 2000, Microsoft had only caught up with the state of the art from ten years’ prior.
During this period that fixed such great attention upon the supposed catch-up in technical sophistication by Windows NT, Microsoft was actually selling something else to the mainstream market: Windows 95 and later variants of the DOS-based (as opposed to NT-based) system: Windows 98/98SE/ME. Microsoft claimed that Windows 95 offered something that the Macintosh didn’t: preemptive multitasking.
This was sort of true, as Windows 95 could preempt control of certain applications. In practice however, Windows 95 was not significantly better than the increasingly creaky classic Mac OS. Users didn’t care about how the kernel worked, they cared about the symptoms caused by a lack of proper multitasking: crashing, locked-up applications, and the general inability to do multiple actions at once. Windows 95 did not outshine the performance of the Mac OS from the 80s, and was far behind the technical superiority delivered by NeXT and the Amiga OS many years prior.
Feature dependance: memory protection
Before ever really achieving technical superiority in its operating system, Microsoft began making severe compromises to boost performance and maintain backward compatibility. A key partner technology to preemptive multitasking is protected memory. It doesn’t matter if your applications are preemptively scheduled if a rogue application can stomp on the memory in use by other applications; a lack of protected memory erodes any benefit of scheduling multiple processes at once.
Under Windows 95/98/ME, applications could stomp all over critical shared memory that belonged to the operating system, resulting in frequent crashes and general instability. It wasn’t just Windows 95 that suffered from a lack of effective memory protection. The design of Windows NT also took liberties with memory protection in an effort to make it run acceptably fast. Even after delivering its NT-based Windows XP to mainstream PC users in 2001, Microsoft continued to shove all types of unrelated tasks into a single process running within a shared (unprotected) memory space.
This was due to the fact that, unlike Unix, the NT kernel was not designed to accommodate lots of concurrent processes. Instead, NT was designed to run tasks as threads within a limited number of concurrent processes. Spawning a new process in NT is an expensive job requiring significant resources. For this reason, third party developers are forced to avoid kicking off independent tasks as their own processes, and instead must typically package them up as single a multithreaded process, defeating the purpose of having preemptive multitasking or protected memory.
NT’s Shared Services contradiction
Microsoft itself bundles a variety of Windows system tasks into the mysterious svchost.exe process, a practice known as “shared services.” The company describes this as if it were a good idea, but in reality it is a terrible idea forced by the inability of the NT kernel to launch lightweight processes the way Unix does. And unlike Unix, it becomes harder to identify which process is causing a problem, harder to isolate processes and assign them the least privileges necessary on the system for security purposes, and harder to manage system resources in general.
The point of preemptive multitasking and memory protection is to put the kernel in charge of the system. By bundling up tasks into fat shared services with a communal memory space, Microsoft has turned NT into a beast from the 80s. In fact, the main reason Windows users complain about iTunes is because it spawns a variety of independent processes that work fine on Unix but cause Windows to kneel over and beg for mercy because it isn’t designed to handle multitasking with the same level of modern sophistication as Mac OS X.
And so, for the last decade and a half of Windows, Microsoft’s enthusiasts have been trumpeting accolades for Windows’ “multitasking,” a buzzword feature that wasn’t novel, wasn’t the best implementation, and most importantly, wasn’t contributing to security, performance, and stability as it was supposed to. Simply put, a feature that does not achieve what it is supposed to do is not a real feature.
This is all happening again.
During the late 90s, Palm introduced its Pilot PDAs with a striking similarity to the desktop Macs from the previous decade. Like the original Mac, the Palm Pilot was largely an effort to introduce simplicity and ease of use using a graphical environment. Also like the Mac, the original Pilots had limited resources, and conserved these by only allowing one process to run at once.
The original Palm OS used a kernel capable of true multitasking, but only licensed it for use in a single-tasking environment. This meant that Palm devices could only run one app at once. This wasn’t a big problem until users began to desire increasing sophistication as PDAs began to morph into smartphones. By 2005, Palm was in the same position as Apple’s Mac in the early 90s: an inherently single-tasking core OS with a demand for true, preemptive multitasking that would be difficult to bolt on as an afterthought.
The Palm OS was blindsided by the iPhone, which like Mac OS X, was based on a Unix kernel and therefore inherently capable of running multiple processes at once. Like the original Mac and the Palm Pilot before it, the iPhone’s hardware was far more limited than what currently existed on desktop computers. It made no sense to try to run multiple windows of applications on a small mobile device with a 3.5“ screen, a lesson embarrassingly hammered into Microsoft after a decade of failure in trying to deliver exactly that with Windows CE.
Apple’s iPhone approach to multitasking.
Instead, the iPhone only multitasked things that made sense: users could surf the web while taking on the phone, or listen to music while playing games, but third party developers couldn’t install their own background processes to sap performance and battery life or introduce unanticipated security issues. This engineering trade off was politically unpopular among the tech press, which has lambasted Apple for not ”supporting multitasking,“ as if the company had simply forgot to include it.
In reality, the iPhone goes beyond simple preemptive multitasking and memory protection to deliver a tightly secured environment for applications that strictly manages what individual third party applications can do. The much publicized downside is that apps can’t do things like regularly report your location to a service like Google’s Latitude; the unstated upside is that applications can’t do things like regularly report your location to a service you have not approved, without your knowledge or consent.
The iPhone’s kernel is a particularly strict overseer. It refuses to run code that hasn’t been cryptographically signed by a party known to Apple; it does not permit apps to stomp on system memory or memory of other apps, and it makes the installation of viruses and spyware effectively obsolete, expressly because it does not delegate away multitasking control to third party software. In a jailbroken phone, all bets are off because the system’s security is bypassed to allow anything to happen.
When multitasking isn’t.
Two years after the iPhone’s debut when the Palm Pre arrived, the inevitable accolades surrounding the new phone’s ”unlimited multitasking“ began to bellow like clouds of steam from a whistling teapot.
This is not necessarily a bad thing, but simply an easier-to-accomplish alternative approach to delivering a mobile platform. It is not comparable to an actual application development framework where real applications run however. There are advantages and disadvantages, but hiding all this meaningful subtlety behind a dummy buzzword is simply irresponsible reporting.
Even more shocking, however, is the conspicuous lack of attention to the reality that the Palm Pre, currently running on Sprint’s CDMA network and expected to reach Verizon Wireless’s CDMA network early next year, can’t do simultaneous voice and data. This isn’t a limitation in Palm’s operating system, but rather a major lapse in Qualcomm’s CDMA/EVDO network technology.
CDMA (voice) and EVDO (3G data), unlike UMTS/HSDPA, can’t perform simultaneous voice and data at once. It also lacks GSM’s inherent ability to conference multiple parties at once into the same call. ”EVDO rev A“ has the technical capacity to handle a voice and data connection at once, but this requires handling the voice conversation via VoIP as data rather than a normal cellular voice circuit, something the Palm Pre can’t do (and apparently no other Sprint or Verizon phones can do either).
The features we do not speak of.
All those iPhone ads that show useful multitasking scenarios, where the caller jumps on the web, looks up a restaurant, and then emails their friend a picture of some adorable child, all while talking on the phone, are impossible on CDMA networks like those operated by Sprint and Verizon. This ironically seems to be a huge secret, despite the fact that everyone also seems to know this. Call it M. Night Shyamalan’s Village Taboo.
While everyone seems to be emotionally in tune with the flaws of AT&T’s network, including its regions of threadbare 3G service, nobody seems to recognize that Apple has a variety of very strong reasons to want to stay on a UMTS/HSPDA network rather than jumping ship to a voice-multitasking impaired one that is slated for obsolescence within the next couple years.
Would Apple prefer that AT&T get to work to fill in the remaining holes and bolster its mobile backbone? Certainly, and AT&T is working to do that. It also seems to be forgotten that AT&T is really an amalgam of regional networks that is no older in name than the iPhone itself. Apple invested in where the puck would be, not where it is. This is particularly annoying for users like me in San Francisco or New York, where AT&T’s already imperfect network coverage has been hammered to death by legions of iPhone users each incessantly and mercilessly pounding the network.
There’s no need to make excuses for AT&T’s seeming lack of rapid progress, or its delay in releasing a competitive femtocell, or its apparent inability to recognize the demand for tethering or MMS data features. But ignoring the inherently multitasking crown jewels of the 3GPP technology portfolio while criticizing the iPhone for not being able to swipe between fake apps like the Pre is absurd.
What’s the point of having a fast data network when you can’t even browse the web to occupy yourself while on hold with Sprint over handling the return authorization for your faulty Pre hardware due to its defective return rate rivaling the troubled Xbox?
Once again, ”multitasking“ is being confidently thrown about in a way that ignores half of the story while falsely presenting the weakest of implementations in an unfair comparison with something that works at least as well, if not better in many respects. Is it too much to ask that those presenting technical comparisons do so evenhandedly and accurately?