Daniel Eran Dilger
Random header image... Refresh for more!

Ten Myths of Apple’s iPad: 9. It can’t multitask

Daniel Eran Dilger

Here’s segment nine in my series taking on iPad myths: no the iPad isn’t incapable of multitasking.

Ten Myth of Apple’s iPad: 1. It’s just a big iPod touch
Ten Myth of Apple’s iPad: 2. iPad needs Adobe Flash
Ten Myths of Apple’s iPad: 3. It’s ad-evil
Ten Myths of Apple’s iPad: 4. It was over-hyped and under-delivered
Ten Myths of Apple’s iPad: 5. It’s just a Tablet PC or Kindle
Ten Myths of Apple’s iPad: 6. It needs HDMI for HD video output
Ten Myths of Apple’s iPad: 7. It needs cameras
Ten Myths of Apple’s iPad: 8. It’s a curse for mobile developers
Ten Myths of Apple’s iPad: 9. It can’t multitask
Ten Myths of Apple’s iPad: 10. It needs Mac OS X
.

Dear rubes: 9. It’s a myth the iPad doesn’t multitask.

Okay, so this gets a bit tiring, but Apple didn’t design the iPhone OS “without multitasking capabilities.” The simple truth is that the iPhone OS inside the iPhone, iPod touch and the iPad explicitly multitasks all the time, using the same preemptively multitasking Mach/BSD kernel as the desktop version of Mac OS X.

The iPhone is constantly running processes that listen to the mobile network for incoming calls and texts, it runs an iPod process for playing back music all the time, it watches for background notifications being sent to idle apps, and there’s a variety of other things always going on. This is the definition of multitasking.

Understanding multitasking

A preemptively multitasking operating system appears to run multiple processes at once by very quickly switching between processes, a task managed by the OS kernel itself. This happens so quickly that several processes appear to be running at once, something like frames of a movie creating the impression of motion.

In many cases, the iPhone and its sibling devices are actually multiprocessing as well by running concurrent tasks on different processor cores. For example, when playing back video, the iPhone can spin off the heavy lifting involved with decoding H.264 to a specialized processor core while the main processor core continues to handle other tasks, such as listening for updates or maintaining the user interface.

A cooperatively multitasking system expects apps themselves to relinquish CPU control and share communal system resources in order to allow the user to work with several apps at once. The Classic Mac OS appeared to offer multitasking in this way, but if an individual app ever stopped responding, the illusion of multitasking immediately collapsed because the system might likely never recover.

With a preemptively multitasking kernel like the iPhone OS’s Mach/BSD, the kernel will simply take control back from a bad app and terminate it, or the user can kill an app that isn’t responding. In any case, the system continues to multitask without apps needing to cooperate; the kernel enforces this behavior.

iPhone multitasking

When less is more

A single-tasking operating system would be one that can only ever run one app at once, like the classic Palm OS or the original 1984 Macintosh. In both systems, everything was designed to only allow one app to run at once. The reason for this in both examples was to provide the foreground app with full control of all system resources at a time when there wasn’t much RAM or CPU available.

For similar “finite resources” reasons, the iPhone, while it is completely capable of preemptive multitasking, is artificially and arbitrarily limited from running multiple third party apps concurrently.

The iPhone OS does not launch a bunch of foreground apps at once because there’s no room for a windowing environment and insufficient resources to support multiple concurrent applications all trying to hog the processor behind the foreground interface that the user sees.

The iPhone is not a server and it doesn’t present multiple concurrent app windowing, but it does multitask.

Multitasking in a mobile environment

Most of the people talking about “multitasking” in the iPhone OS do not seem to understand what they are talking about. Using a single word to broadly cover up many nuanced details is simply not useful. What they usually mean to say is that the iPhone does not run any third party apps as background tasks, at least without first breaking its security model (via a “jailbreak”).

How well does this aspect of “multitasking” — actually “app concurrency” — work in a mobile environment? Well, the implementation is important. All multitasking models are not the same, so speaking of “multitasking” as a simplistic bullet feature is very misleading.

Microsoft proved what a dumb idea multiple app windowing would be in Windows CE / Windows Mobile. It launches multiple apps at once, each in full screen, overlapping windows. When you close a window however, it doesn’t necessarily shut down the process. And windows may be hidden behind other windows. It’s a mess, it robs the battery, it makes no sense to the user, and it does not allow any clever interaction between apps. It’s “multitasking” in name only, not in the sense of being useful.

In many ways, Palm’s original single-tasking Palm OS was better; the battery lasted much longer and it was more understandable to users. There was minimal need for users to have multiple apps running at once at the time anyway.

Google’s Android proved that copying Microsoft results in the same degree of success as Microsoft, at least in mobile devices. Sure you can “concurrently multitask,” as long as you want to trade usable battery life for the freedom to manage processes yourself and if you don’t mind gaining the ability to install spyware and spread viruses without even knowing it.

A top Android app is a tool to kill out-of-control multitasking. However, there’s no app for Android that can protect users from installing malicious background spyware and viruses. Apple built in a security system that makes those things virtually impossible to install under the iPhone OS.

So anyone who complains that the iPhone or iPad “doesn’t multitask” is simply signaling that they don’t understand what this means. Or, perhaps, that they want to muddy the waters to ensure that their readers not really understand what it means.

Inside Google’s Android and Apple’s iPhone OS as software markets

Mobile Multitasking

When Palm created its original operating system for the Palm Pilot 15 years ago, it licensed a third party embedded OS kernel in a single-tasking configuration. In other words, the Palm OS simply could not run multiple processes at once due to licensing limitations imposed on its kernel.

In contrast, Apple started with its own preemptively multitasking kernel and implemented a variety of background services to provide its iPod, phone, SMS, notifications, clock, and other background features all the time, regardless of the foreground app. But Apple also took the novel step of making the iPhone simple enough to work in an understandable fashion.

Rather than allowing users enough rope to hang themselves with a mess of background applications that aren’t obvious to the user, Apple designed the iPhone OS to launch apps in a sandboxed environment where apps can only see their own data. They can’t access the private files of other apps or reserved system information.

When the user hits the Home button or accepts an incoming call, iPhone apps must immediately quit. This prioritizes the needs of the user over the convenience of the developer, and forces programmers to build apps that remain ready to terminate at any time. Apps simply can’t ignore the user or the OS kernel and remain running in the background, whether they have good intentions or malicious ones.

iPhone 2.0 SDK: The No Multitasking Myth

Multitasking and security models

The only way apps can be run concurrently on the iPhone is by breaking its kernel-level security, which enables both the idea of running multiple apps in the background and also opens up the device to spyware and other malicious threats. You can’t have one without the other. That’s why the desktop Mac OS X and Windows XP/Vista/7 both expose users to a certain risk of malware that the iPhone does not.

The Mac is largely protected from malware problems by virtue of its authentication mechanisms; users can’t install background apps without presenting their admin credentials, and can easily scrub away any malware after it gets installed. On Windows, it’s much easier to get infected without even knowing it, and it’s far more complex to clean up a problem afterward thanks to the convoluted Windows Registry.

Forcing users to manage their own security in a mobile environment is even more complex, and the risks are more intense because pervasively networked mobile devices can do more damage. Without a vigilant security model like the iPhone OS presents, a mobile device gone rogue could send spam in your name at your own expense, it could report your position to some malicious follower, and it could expose your personal contacts, calendar, and messages in ways that never really become a significant problem on the Mac desktop.

Google’s Android Market Guarantees Problems for Users

Thinking about security for users

In developing the iPhone and iPad, Apple actually thought about what users needed to do and what they didn’t want to do, and used that information to create an experience tailored to the mobile, networked environment.

In contrast, both Microsoft and Google have essentially worked to bring the PC desktop to mobile devices without really rethinking anything, which presents the illusion of greater functionality while secretly delivering a massive dose of insecurity, risk, and complication.

Most users are not only unaware of this, but also lack the expert security credentials to adequately manage this extra complexity on their own. And they shouldn’t need to. Even on the desktop, mainstream users have been forced to deal with and suffer through security issues that they needn’t have.

In the new frontier of mobile devices, thinking about security is critically important, particularly given the multibillion dollar mess that everyone witnessed blossoming around the naive PC desktop.

It’s too late to grieve about PC viruses, but it’s not too late to act to prevent a similar crisis from becoming pandemic on our mobile devices as well. Apple seems to get this, while Microsoft and Google either don’t or don’t care.

Three exceptions to the iPhone app model

While Apple’s mobile-optimized iPhone app model makes more sense for most users than the Windows PC desktop mess that Microsoft simply dumped on its own mobile devices (or the hybrid model Google used for Android which opens up some benefits along with its can of worms related to security, manageability and usability), there are several exceptions that the iPhone did not accommodate.

The first and most prominent is that many apps want to stay active in the background just to listen for updates: news, incoming calls, status updates and so on. Following the initial release of the iPhone SDK, Apple introduced a cloud notification service to address this side effect of its restriction on third party concurrency.

Apple’s notification server allows the mobile device’s operating system to accept incoming requests for its non-running apps, and either badge them or pop up an alert so that users can launch the app and take action based on the update. This allows apps to respond to external events without requiring that they be running in the background all the time.

Apart from listening for notifications, there are at least two other reasons apps might want to multitask: one is to provide a background local user service (such as replacing the features of Apple’s bundled iPod app for music playback while another app is running) and the other is to serve external data while the app isn’t in the foreground (such as reporting the phone’s location to Loopt or Google’s Latitude server).

iPhone Push Notification Server tied to Snow Leopard Server

Addressing exceptions in Apple’s iPhone OS app model

It’s widely expected that iPhone 4.0 will introduce a new mechanism for enabling specific third party apps to run in the background, either to provide an always on local service or to act as background external server of some sort.

Either option would rob the system of CPU power and memory, resulting in problems that most users would blame on the iPhone itself, rather than their own use of it. Which is, of course, why Apple restricts the way third party apps run.

The most prominent of requests for app concurrency relates to Pandora Internet radio and Latitude-style updates, both of which Apple could add to its own set of bundled apps and simply allow third parties to access as a system wide service.

For example, adding radio feed support to the background iPod process could enable third party apps to tap into it to provide a unique user interface that can play music that continues even when their app is quit.

Latitude or Loopt could similarly use a central OS service that reports the user’s location at a given interval. Those third party services could also send notifications to their app when other users send a messaging request, allowing the services to work even when the third party app isn’t actually running.

Most other needs for third party background tasks could similarly be rolled into the core OS, enabling the kernel to manage how much time to devote to those tasks itself rather than according background apps all the resources they demand as they run in the background, irrespective to what the user is trying to do in the foreground.

Engineering vs. marketing

As it is, Apple’s existing single app model (with notification exceptions) makes a lot of sense as a way to keep things secure and easy to understand for users. That’s especially the case right now because the iPhone and its generation of smartphones isn’t really capable of unlimited app concurrency or acting as a full-time server.

What about the blazing fast iPad? Well it certainly didn’t beg for multiple apps to be running in the background when I tried it, but anyone who wants to install a background process will probably get the opportunity within weeks of its release thanks to iPhone 4.0.

And again, there are a variety of ways Apple could roll out general background services that all third party apps could access without actually opening the floodgates and creating the potential for apps to do things that users must manage themselves.

Apple’s multitasking model for the iPhone and iPad really represent a triumph of engineering (making tough decisions to provide the best overall experience) over marketing (communicating to users that you’ve done a great job). After all, if Apple had made easy, populist decisions to satisfy the pundits first, the iPhone and iPad would face the same problems as Android.

Sure, the company would be getting less grief from sloppy incompetent journalists, but it would have also delivered a much less functional product that was harder to use and easier to exploit. As it is, users have their choice whether they want Apple’s product or Androids’s, and choice is a good thing.

  • ulicar

    @ adamk359 I have been saying all of the time, multitasking is available to a small number of Apple applications and that is about it. One cannot run multiple 3rd party apps on iPhone. That is what it makes it not-multiprocessing. One cannot run skype in the background (waiting for a call) and surf the web.

    I am saying that it is quite wrong saying it is multitasking if it does not allow you to use it as multitasking. It is CAPABLE of multitasking, because all jailbroken iPhones are multitasking using backrounder, but without the jailbreak it is not and should not be considered multitasking OS. It is CAPABLE of multitasking, but that is about it. Maybe in the future Apple will allow it, who knows, but right now, nope.

    P.S. as for downloading apps, Kindle, BookReader… all downloading and uploading stuff.

  • HCE

    @miloh

    > Could it not be argued that such scenarios are an indication of one
    > trying to use the wrong tool for the job?

    Quit making excuses for Apple.The iPhone has a GPS – so it was meant to be used to get driving directions. The iPhone is a phone – so it was made to send and receive calls. Getting a call while being directed to a destination is hardly uncommon. I should not have to turn off the turn-by-turn directions in order to receive a call.

    As I said, my old Garmin GPS does it. It has built in Bluetooth and I use it for hands-free conversation on the phone. If a phone call comes in while I am being directed, the call automatically gets backgrounded. I continue to receive visual guidance while talking on the phone. All that I see is a single phone icon on my screen while the call is going on.

    If I need to make a call, I can switch to the phone app and it will keep the GPS running in the background while I dial.

    This is pretty basic functionality that the iPhone should have had from day one.

    – HCE

  • Donald

    @ulicar
    “I have been saying all of the time, multitasking is available to a small number of Apple applications and that is about it….I am saying that it is quite wrong saying it is multitasking if it does not allow you to use it as multitasking”

    Well, that’s the point. It DOES allow consumers to use certain apps in a multitasking way, whether your requirement is that those apps run “simultaneously” or not. Obviously, then, claiming that it does NOT multitask would be both inaccurate and misleading.

  • http://joynerian@mac.com ijoyner

    ChuckO’s summary:
    >>
    1. Security reasons
    2. battery life on highly mobile devices.
    3. conserve processor resources for considerable background OS activity.
    4. Usability concerns on touch screen devices.
    <<

    To which you must add

    5. conserve memory resources

    Well shouldn't Apple put in more memory?

    1. memory chips take physical space and you can only stuff in so much stuff into a small form factor. I remember when a machine with much less memory than an iPhone used to fill a large room.

    2. memory chips use power – the more chips you put in, the shorter your battery life.

    Yes, chips will hold more and more memory and batteries will become better, but I'm not sure how much. If iPhone battery only lasted 40 minutes, people would be crying fowl.

    3. Virtual memory is not a fix – it has its own problems – thrashing when memory gets full.

  • miloh

    @HCE

    “As I said, my old Garmin GPS does it. It has built in Bluetooth and I use it for hands-free conversation on the phone. If a phone call comes in while I am being directed, the call automatically gets backgrounded. I continue to receive visual guidance while talking on the phone. All that I see is a single phone icon on my screen while the call is going on.”

    With the exception of automatically sending an incoming call to the background (not a feature I personally would want), the iPhone does all of this. I did it just now to make sure.

    “If I need to make a call, I can switch to the phone app and it will keep the GPS running in the background while I dial.”

    I don’t really see the value of this feature. I assume by “in the background” you mean it’s not visible to you. If that’s true, what’s the use of continuously tracking your position if the results aren’t even seen? What problem of any real significance does this solve?

    “This is pretty basic functionality that the iPhone should have had from day one.”

    Nobody’s arguing that such things are impossible or even difficult. The question is whether they have any significant value.

  • http://joynerian@mac.com ijoyner

    Dear Ulicar, please reread the rest of the comments. I’ll try to explain it a different way.

    Applications with user interfaces take a lot of memory. With only 500 MB, you can only run the OS, a few background tasks, and one UI application.

    A user only interacts with the UI of one app at a time. When a user switches applications, if the UI code for the first app is left in memory, it is chewing up the precious 500 MB memory resource for no reason.

    The case that you do have, is that non-UI parts of an app could be doing useful work in the background. Threads are in fact a weak way of doing this. Far better would be independent processes – that is a process invoked that has no dependency on the parent task. (Dependent processes, must terminate when the parent process terminates, since they can share common memory, which is actually quite dangerous and a source of many programming errors.)

    Unix unfortunately, has this phobia about ‘heavy weight’ processes, thus threads were invented, but these have their drawbacks, compared to independent processes, dependencies can make a real mess of things. I wish everyone had studied Burroughs architecture, which has the most elegant process architectue (as well as virtual memory), supported all the different process interaction models, etc, but anyway. Probably the best you can do is look up B5000 on wikipedia.

    I think Apple are heading towards this, but for two reasons are doing it cautiously. First is security… say no more. The other is the temptation for users to go… “Oh, while I’m running this, I’ll get something else going… oh and while that’s going…” Then memory gets tight, virtual memory starts the machine thrashing and user gets frustrated because nothing seems to be making progress.

    To remedy this situation, you need performance monitoring tools to show you what’s going on, and then allow the user to manually suspend/kill processes (another area where Burroughs won hands down). (Performance monitoring tools also require memory, especially if they have a UI.) So your hand held device starts to look like a full-blown enterprise system.

    Enterprise systems also support multi-tasking because they are serving multiple users at one time – your hand held device does not need this (nor even your desktop really). Toss this kind of multitasking out – really another MT model for small and limited devices is needed.

    You also need to remove the distinction between main and flash memory. It does not really matter where you save the state of a suspended application – the test of MT is that state is saved. Thus on the iPhone, you could view it as ALL APPLICATIONS ARE ACTIVE ALL THE TIME! In fact this is quite a radical and upside down notion if you think about it. Could you hold some application state in main memory for all these applications? Probably not – what about the people who have 100s of apps?

    Virtual memory is not the answer – it is not a panacea to all woes. It has its own overhead.

    You could also complain that apps are not document centric, ie cannot operate on more than one document at a time. Each open document requires more memory, more resources.

    I do agree that there is a case for apps being able to invoke independent background tasks, but I don’t think the state of technology allows it right now. I look forward to Apple’s solutions, but I think for most hand held users they have made the right choices for now.

  • http://joynerian@mac.com ijoyner

    HCE – what are you doing driving while taking phone calls? In this country it is illegal for good reasons. Even hands free has its problems, since talking takes your concentration off the road. When you are talking to a passenger, at least they can see what’s going on on the road, but not someone on the other end of a phone. My last accident (in my new car 8 years ago) was that the woman who ploughed into the back of me was talking to her young daughter in the back seat. It was obvious she had problems with not talking, she even chatted up the cops.

    People think they can multi task at this level – but really they can’t. People who talk on phones, fiddle with GPS systems, etc while driving are a menace.

  • http://joynerian@mac.com ijoyner

    I just thought of another scenario. As I said yesterday, when an application uses too much memory, it is given the opportunity to clean up its act by getting a message from the OS. If it does not do so, it gets terminated (this is most likely a programming, memory leak bug).

    Now if we have two or more apps running and memory get short, which app does the OS notify? If the situation goes on, which app is errant? The OS might arbitrarily decide which app to terminate, maybe the one using most memory. But that might not be the one that is at fault.

    So app A (the one you have sweated blood and tears writing) appears to crash. User gets frustrated with you, decides not to download any more of your software from the app store. gives you a bad name. And it’s not your fault.

    In a multi tasking environment processes can interact in subtle and not-so-subtle ways, especially when they are competing for resources (in fact that really is the only problem, but the symptoms are multiple). These sorts of problems are always very hard to track down.

    I think I’d rather give the user a robust experience, than one subject to the vagaries of unfettered MT.

  • ulicar

    @Donald “Well, that’s the point. It DOES allow consumers to use certain apps in a multitasking way, whether your requirement is that those apps run “simultaneously” or not. Obviously, then, claiming that it does NOT multitask would be both inaccurate and misleading.”

    If your car is limited at 150mph, even though it can unlimited run 200mph what is the top speed of your car? The same goes here. If the iPhone is not allowing you to run it in multitasking mode, is it multitasking?

    You car is CAPABLE of running 200mph, but is caped at 150mph
    iPhone is CAPABLE of multitasking, but it is not.

    If the plate your dinner was served on arrived empty, and you ordered a steak, would you consider it to have a steak on it, just because sometime in the past they served steak to somebody using that same plate? Well, Dan would like you to think so. I do not consider something that I cannot use to exist in the appliance we discuss, even if Dan said so. Be my guest, and enjoy nothing. Does nothing steak tastes like chicken, or a steak?

    [Your analogies are always so delightfully absurd. The reality is that the iPhone OS is multitasking, but that 3rd party apps are sandboxed and run one at a time. So the phone is always multitasking, but it does not “multitask” apps.

    The point is not to suggest there is nothing to criticize or to apologize for Apple’s sins, but rather to explain why Apple made that decision. There are more advantages than disadvantages.

    Harping on slight advantages while ignoring the serious disadvantages is a poor way to argue, unless you’re just working to make noise and don’t like rational discussion.

    As for you analogy, I believe it is missing the steak as well – Dan]

  • http://blog.cytv.com cy_starkman

    RE: Navigation apps and inbound calls

    wow, as an apple trainer, consultant and support person I’ve often read on blogs about apple apologists and now I’ve finally seen it directed as me.

    Just so y’all know, I pulled over while doing serious navigation and route planning. I’m also going to avoid an escalating conflict.

    – Apple on it’s existing iPhone platform provides a) press home in a call to return to main screen and launch app (any app from what I’ve seen), continue call and operate app. b) in any app (not tried all) you can double tap home while iPod is playing music in the background and be presented with a pop up that let’s you fwd/nxt/pse/vol.

    Let’s all mediate on this for a moment. Apple already let’s you switch in and out of the phone app while maintaining a call and use any other app at the same time. Apple’s other main app, iPod, presents you with a pop up on request without closing the currently active app to change and accept items. Notifications also do this.

    So let’s cut the crud and quit on excuses or fud (it’s illegal to talk hands free, pfft) and drop the attacks (menace etc)

    Cause based on Apple’s current operation of the iPhone platform and their own apps there is NO reason to drop out of an app to answer a call to then press speaker phone and then home and then the app and wait for if to load and maybe get back to where you were just so you can continue on while talking to you friend while reading the news from the comfort of your day lounge on Sunday with no traffc or menacing to be seen.

    Now pick at my gramma and spelling, there’s nothing left to argue.

  • fmlogue

    ulicar, you said: “I have Master of Technology”. What in the name of all that is holy is that. Sounds like you have a character from some video game in your dungeon.

    A Masters in something is an academic degree, but I don’t believe a Masters in Technology is offered outside of the classifieds in the back of a comic book.

    What university is your “Master of Technology” from? Hey, I get it, you work for Dr Doom.

  • http://blog.cytv.com cy_starkman

    Oh and ma Apple homies

    Apple it would seem does allow 3rd party apps to run in the background. I guess if there is a damn good reason.

    The Tom Tom car kit app for the Tom Tim car kit for iPhone (which is almost an advert for tom Tom just writing it) claims to run I the background controlling the accessory and routing it’s services to any iPhone app that might be looking for stuff it offers. It’s kind of obvious that it has already been running when you open it cause it’s already locked to satelittes for example and knows which ones, immediately.

    So quit the fud on that as well. Apple won’t let anyone blah blah, reason reason cause they already have.

    I mean this is actually pro Apple, pro their support of background apps yet nope ever a mention, just excuses.

    Personally, Apple is working hard on a really amazing security model that will allow background apps without the issues. The same as with the local app sdk, they said why it took an extra year, getting the security model right.

    [I believe the Tom Tom car kit is a hardware accessory that advertises itself as a GPS device, so the system simply opts to use it over the built in AGPS built into the mobile chip. Apps that ask the system for location data are simply fed more accurate GPS data by the system; no Tom Tom app is really running in the background – Dan]

  • Donald

    @ulicar
    “If the iPhone is not allowing you to run it in multitasking mode, is it multitasking?”

    Again, the point is that the iPhone DOES allow some apps to run in multitasking mode, thereby allowing the user to do just that — multitask. Some of the apps have been mentioned in the posts here, but you’d like to discount that because the majority are provided as native apps and not all apps are allowed to participate.

    So I ask you, if someone new to your neighborhood inquires of you how many freeways run within 5 miles of the location, would you leave out the one that has 2 of its six lanes deliberately blocked for some reason? Would it by correct to tell the person, “No, that one doesn’t count. It’s not a freeway”?

    No, absolutely not, unless you’re a fool. In the same way, you can’t arbitrarily limit the concept of multitasking to only those situations where it provides the capability of running every conceivable app. Multitasking with a few apps is still multitasking. It demonstrates “multitasking” technology at work. So why deny it? If you wish to say it’s an example of limited multitasking, fine! But no way can you be correct in saying that there is no multitasking.

  • Per

    I would just like to take a moment here to thank not just Daniel for the nice article but also many of you here in the comments. I have really enjoyed reading the discussions here, except from some half-witted analogies.

  • http://joynerian@mac.com ijoyner

    Ulicar: “If your car is limited at 150mph, even though it can unlimited run 200mph what is the top speed of your car? The same goes here. If the iPhone is not allowing you to run it in multitasking mode, is it multitasking?”

    That’s the wrong question. The answer to “does the iPhone multitask?” is YES.

    To be blunt, your analogies are simplistic and false. Drop it. As we have explained, maybe over and over, it is more complicated than that.

    You need to rethink your definition of multitasking. It does not mean keeping an application in main memory. You see these Apple devices blur the distinction between main and flash memory. Burroughs also blurred distinctions and this caused all sorts of confusion with regular industry shills who then just didn’t get it (well they didn’t want to having been brainwashed by IBM). Well, Alan Kay was a student of Bob Barton’s so I guess this is where we (Apple people) get this free thinking and blurring of the usual false industry distinctions.

    Why have main memory then? Because the trick to getting good system performance is to keep the data as close to the processor as possible. That is why you have cache (another invention of Bob Barton, who called it associative memory, Barton also invented reverse polish notation (simultaneously to a professor in Melbourne), which became the basis of a lot of HP products). Cache is kept in very expensive memory, and is small. You then have level 1, level 2… main memory and hmm permanent storage – disk or flash. Thus main memory is really just another form of cache, and virtual memory is just the cache algorithm. No wonder Burroughs had the first commercial application of virtual memory, which was actually invented in Manchester on the Atlas machine, ten years before IBM “invented” it.

    Are you absolutely denying that iPhone OS is multitasking?

    And just cut the dumb analogies. Analogies work where X is like Y or X is very similar to Y, but in this case X is not like Y and has little similarity. Thus the analogy is false and just blocking your understanding of this issue.

    And that is also not to say that you don’t have a valid point about background downloads, you do, but the point is obfuscated by your false analogy.

    I think Apple, if they are wise (and I think they are) will work towards an API to fork off fully independent tasks *safely* – none of this I’ve made a poxy dependent thread so don’t quit me or the thread must die as well. I emphasise *safely* because safety is a huge CS topic (something which the inventors of C forgot, or at least thought they could leave to someone else… how many more sacred cows must I slaughter in a single session?)

    You see when viewed this way, fully independent (sorry for the tautology to make the point) processes are in fact lightweight, and paradoxically, threads are heavyweight and lead to code bloat in a single application. The only reason you want threads here is to keep the UI alive and responsive.

  • ulicar

    As i said millions of times, iPhone OS is CAPABLE of multitasking, but is limiting that capability to several applications. I am not allowed to run it as a multitasking OS, therefore it is NOT A MULTITASKING OS, it is CAPABLE of multitasking, but it is not multitasking OS.

    If it is limited, than it is not. If I have to jailbreak it to use it as a multitasking OS, than, it is not multitasking. Simple as missing steak on the plate. It is as simple as that. That plate is CAPABLE of having a steak on it, but if the steak is not on it, than it is not my steak dinner, it is an empty plate. Who said it is a steak dinner because some guests will get steak dinner served on that particular plate in the future, or have been served in the past, or because there are some steaks in the kitchen, are idiots if they believe that. If I have to bring my own steak and prepare it and place it on the plate, it is not a steak dinner.

    If you do not know what Master of Technology is, I know more about you, than you about me :)

  • http://joynerian@mac.com ijoyner

    Ulicar: “As i said millions of times, iPhone OS is CAPABLE of multitasking, but is limiting that capability to several applications. I am not allowed to run it as a multitasking OS, therefore it is NOT A MULTITASKING OS, it is CAPABLE of multitasking, but it is not multitasking OS.”

    Now you are so much contradicting everyone that you are even contradicting yourself. It is not that IP OS is capable of multitasking – it is multitasking. OS X and Unix are multitasking OSes, plain and simple.

    iPhone does not let this multitasking be used in non-safety critical ways. This is the correct place to start for this platform, build it up from there. If full MT is provided and restricted later, things will break in undesirable ways. I think Windows Mobile and Android will be subject to these problems – how to restrict malicious software without breaking legitimate already-in-use software.

    I’m beginning to think you are a few plates short of a steak yourself. (I have no idea what that means, but it sounds funny, just to break the tension.) :-)

  • ulicar

    If you want simpler analogies, here is one. Pull your iPhone out.

    1. Turn skype on (if you don’t have it, download it)
    2. Turn Safari on.
    Question: Did you have to turn skype off?

    Get at your desktop/laptop/whateveryouhave
    1. Open skype (if you don’t have it download it)
    2. Open safari
    Question: did you have to turn skype off?

    That is the difference between “not-multitasking/multitasking capable os” and a “multitasking os”. It is as simple as that, but you kinda cannot see beyond what Apple tells you.

  • ulicar

    @ijoiner “iPhone does not let this multitasking be used”

    So if I put a parachute on you, but I stop it from opening, will you survive if i throw you out of a perfectly working airplane at about 2 miles height?

    Huh, I would recommend you do not purchase Apple parachute if they get in the business :)

  • http://joynerian@mac.com ijoyner

    Ulicar on Skype.

    That is not an analogy, it is a genuine case, and I think everyone accepts that as a possible shortcoming, but less of a shortcoming than the other potential problems.

    The solution is to have a small- memory-conservative Skype daemon running to test for incoming calls. If the user invokes another UI application, then the Skype application quits (saving its state) releasing a large amount of memory but the Skype daemon keeps running in a small amount of memory. You see this is why it is important to provide true independent processes, not just MT with threads.

    Apple already has applications doing this, which means the mechanism is there, and that iPhone OS is multitasking, not just capable.

    My guess is that this will very soon be an API available to the likes of Skype.

  • http://joynerian@mac.com ijoyner

    Ulicar on parachutes.

    Well, I’ll buy an Apple parachute in preference to all the others. You see Apple will design a parachute to do exactly what it has to – get the person down to the ground safely.

    The others will be worried about factors like getting you to the ground faster than other brands – well sometimes that’s too fast and you die, but “oh well, ours is faster”. (Linux and most Unix/C thinking is like that.)

    Microsoft would be showing off that their parachute spins around as you descend making a pretty display. Well half the time the wires get tangled and you plummet to the ground, dying a horrible, tasteless death, but gee it was pretty – and look they really thought about it because the parachute soaks up the blood.

    Well that’s another dumb analogy, but at least it applies more realistically to the situation than how you used it.

  • gus2000

    1. I live and work in Austin, and this morning at my office I could see a column of smoke to the north and another column of smoke to the south. I’ve therefore been reading quite a few babbling techno-rants today, and not just here. On that note…

    2. Do not feed the troll.

    3. The iPhone and 3G have 128MB of RAM.

    4. The iPhone 3GS has 256MB of RAM.

    5. Mobile OSX does not use paging space at all (no VM).

    6. If you can’t browse and Skype at the same time, try using the AT&T minutes you paid for instead. It’s a phone, not a VOIP terminal.

    7. I have never, ever, ever held my iPhone and thought “Gee, I wish I could multitask.” But I have thought “Wow, I’m so glad this is simple to use.” Jobs FTW

    8. My friend and his wife recently took the plunge and got iPhones. They’ve not been able to put them down or stop talking about them, and they have yet to complain or notice that 3rd-party apps can’t be backgrounded. They’ve also failed to notice that it doesn’t have Flash. I guess they don’t read Engadget.

    9. Anyone still claiming the iPhone doesn’t multitask is hereby awarded an honorary “Master of Pedantry” degree. Congratulations.

    10. I will gladly accept any app-backgrounding solution that can be explained to my mother in under 2 minutes. Keep in mind that you will first need to explain what “Apps” are, what “backgrounding” is, what “multitasking” is, how to use a task manager, and finally why she should give a damn when she can barely figure out what she’s doing in the foreground!

  • harrywolf

    USAGE.
    When we design things around actual usage, we tend to forget pointless lists of features and concentrate on the things we actually DO.

    I am, however, very disappointed that my car wont fly. I know that the makers could EASILY have put wings on it and a larger radiator fan to enable flying. I feel like jailbreaking my car and forcing the damn thing to fly.

  • Joel

    If a Flying Car was ever released to the general public it would have three buttons. Pilots would tell everyone that it was locked down too much because it couldn’t loop-the-loop and just flew from A to B.

    Great series of articles Dan…! Whats Myth # 10…? No-one will buy the iPad because people can’t look at LCD screens for more than 10 minutes…?

  • http://joynerian@mac.com ijoyner

    I’ll extend the cache idea a bit further (if anyone is still reading this). In the last message, I explained that making a computer system perform well is a matter of keeping data as close to the processor as possible. Thus we have L1, L2, etc cache, then main memory, then flash, then disk, (then CD, then tape).

    What is the next level? Well, it’s data across the network.

    The aim of good system design is to unify all these. Seems iPad takes a good step toward unifying main memory and flash. When considering multi tasking you should ignore whether the app is in main memory, or has been transfered (with its state) out to flash because it has ‘quit’. In fact, it hasn’t even really quit, more suspended. So people should not be tripped up by the fact that a processes state is stored on flash and not main memory in order to accuse the iPad of not multitasking. Yes it will take longer to resume an application from flash, but still an order of magnitude faster than disk (hardware types could be more accurate than me here).

    Applications can now be downloaded over the net with Java and ECMAScript. Can take a while, but Sun’s (whatever happened to that company?) view of the network is the computer works out to be right – it all just fits the processor/data model of things – a simplification, which happens to be accurate, but not a simplistic analogy.

    The point is to make all the differences between levels of data storage transparent and to unify the system. Hence we have URIs for uniform resource locators. (In this case resource refers to data resource, but can also refer to things like printers. But it is different to a resource such as processor or memory in a computer system, but maybe even these could be unified.)

    Thus a download can be viewed as just bringing the data resource closer to the processor. In the brave new world, streaming is probably better than raw downloads though.

    I think that’s a reason why Apple’s devices have proven so popular, because they blur the distinction as to where data actually is and transparently load data from wherever. Users don’t have to think about it – transparency and unification make for a pleasant user experience, not just cutesy dancing clips (spinning parachutes). This is still a work in progress, but Web 2.0 (even though it’s a marketing term) and open standards are making this happen.

  • http://www.greennotes.com.sg jaypres

    @ Ulicar
    Did you obtain your master of technology by burying yourself in books? The actual world is more complicated. You probably can solve many exam questions, but you can’t create products.
    I’m sorry I’m that blunt.

  • davitron

    Well, let’s consider the point of agrements along this discussion :
    – Considering ressource constraints, multitasking has be contained in strict usage limit.
    – Multitasking on iPhone is used by Apple for a limited set of use cases: Phoning, Music listening, notification background daemon, app download, and a very few others
    – The choice made by Apple simplifies the UI since the home button has only one signification: the current app is terminated, all its processes are stopped, its current state is supposed to be saved.
    – Some applications need time to start and to reload their previous context: 3D games, GPS apps.
    – Some applications do not need to have a visual interface and are more prone to a background usage: download, audio (music and VoIP phone).

    What it makes me conclude:
    – The general approach from Apple is good because it has a lot of benefits.
    The more interesting is in my opinion that every app must be designed to save their state at any moment and reload it quickly. This is an interesting constraint to start from.
    – With the rise of third party VoIP apps and GPS solutions, there is a need of a special treatment for them.
    – This special treatment should be done with new API that give system wide new capability for a limited set of functionnality.

    What is not yet clear for me:
    – How can context saving and reloading can be improved by the use of virtual memory and special dedicated api (data serialization, compression, ram image, …) ?
    – Does Tom Tom have really a special treatment regarding multitasking ?

    My two cents on iPhone OS4:
    – New api for VoIP in background. A great plus for iPad.
    – New batch download api.
    – New way to share documents between apps.
    – New persistancy layer useful for context saving.
    – Data synchronization with the cloud: app datas, music, videos,… everything on your iPhone or iPad. But I would expect this to be widely available only when the new giant data center will be ready. Probably only for iPhoneOS5.

  • benlewis

    First off – Hunter Thompson used to call his column “Hey Rube”. I would have loved it that’s what you called this essay. Second – The first three paragraphs should be required reading for “tech press”. Third – I am starting to think of “multitasking” and “swift boating” as the same thing. Thanks for yet another great article Daniel!

  • http://127.0.0.1 Netudo

    Ulicar,

    “That is the difference between “not-multitasking/multitasking capable os” and a “multitasking os”. It is as simple as that, but you kinda cannot see beyond what Apple tells you.”

    No, it’s not. What you are talking about is “Application concurrency, not multitasking.

    Multitasking is an OS feature that lets the OS to run multiple tasks (processes) at the “same time” to give the illusion of parallelism.

    Simplifying multitasking…
    0 running some task (process)
    1 saving CPU state to memory
    2 load other task (process)
    3 execute some cycles
    4 repeat from 1

    If you are complaining about Apple not letting third party applications to run concurrently, fine. It’s a legit complain.

    I don’t see reasons for most applications to run concurrently with other applications, except for things like Skype and IM.

    I expect to see this capability later in iPhone OS4, but granted as part of the approval process.

  • HCE

    @miloh

    >I don’t really see the value of this feature. I assume by “in the
    > background” you mean it’s not visible to you. If that’s true, what’s
    > the use of continuously tracking your position if the results aren’t
    > even seen?

    When the phone app runs in the background, you have a status bar at the top which tells you that you are on a call. With the GPS app in the background, what would be useful is a status bar doing the following

    1. Telling me what the next turn is
    2. Warning me if I go off route
    3. Allowing me to foreground the GPS app with one touch.

    That would be very useful. The less I have to fiddle with the screen, the safer it is.

    Not putting the incoming call in the background is a rather serious deficiency. I do not want to be unnecessarily fiddling with my screen while I am driving. Most of the time I do not need to see the phone controls, I just need a button I can touch to hang up. I would, however, like the GPS to go on giving me visual guidance while I am talking.

    My second objection is not as serious as this one. For starters, I’d be happy if Apple would do the automatic backgrounding.

    – HCE

  • miloh

    @HCE

    “With the GPS app in the background, what would be useful is a status bar doing the following”

    While I see some value in doing this, I don’t quite see how it could be reasonably implemented on such a small screen without imposing some sort of artificial restriction. If the OS is going to let a GPS app put up a status bar and run in the background, that implies it’s going to let other apps do so as well. Unless such behavior is limited (e.g. only one app can do so at a time), there’s nothing to stop someone from launching 15 apps and covering half of the screen in status bars.

    “Not putting the incoming call in the background is a rather serious deficiency. I do not want to be unnecessarily fiddling with my screen while I am driving.”

    I would agree that some UI changes are warranted in order to better accommodate your scenario. Whether or not these changes will be made, however, depends on whether Apple feels such a situation is something worth worrying about. They may not be trying to compete in the vehicular navigation market. Yes, the iPhone can be used for such, but just because a product can be used for a certain purpose does not mean the manufacturer has any significant business interest in it doing so. Only they can decide what’s best for them, and it may not be what you or I want.

  • ulicar

    OK as you like to use semantics to try and defend what is obvious even to you, quite indefensible here are some semantics

    1 multitaskin is sharing CPU time between several concurently running processes
    2 if you cannot kick off two or more concurent processes it is not multitasking

    is that simple enough?

  • HCE

    @miloh

    > While I see some value in doing this, I don’t quite see how it could be
    > reasonably implemented on such a small screen without imposing
    > some sort of artificial restriction.

    As I have mentioned several times already – it is done today on the iPhone. Try talking on the phone and moving to another app. You’ll see a small status bar at the top of the screen which says something like “touch here to return to phone call”. What I am proposing would require one additional line which says some thing like “Next Turn: Right on XYZ road” – or something like that. Not hard to do.

    Apple can do what it pleases. I am just trying to point out that there are several legitimate reasons why you would want to implement some limited form of multitasking. Each person has their own reasons why they would like some form of multitasking. Some talk about Pandora, others talk about Skype, my big issue is GPS.

    – HCE

  • miloh

    @HCE:

    “I am just trying to point out that there are several legitimate reasons why you would want to implement some limited form of multitasking.”

    “What I am proposing would require one additional line …”

    Per application?

  • http://joynerian@mac.com ijoyner

    HCE “Apple can do what it pleases.”

    No Apple can’t do as it pleases – it’s not a monopoly computer company, like some others. To be successful, it must work within the limits of technology and the marketplace. That’s what this discussion is about. People will only buy Apple if their products are really good. People will continue to buy from the monopoly even though their products are shoddy.

  • http://joynerian@mac.com ijoyner

    HCE: “I am just trying to point out that there are several legitimate reasons why you would want to implement some limited form of multitasking.”

    But everyone is in vehement agreement with you here. And indeed that’s what iPad has. The argument seems to be that it is a bit too limited, and yes there are cases for that.

    Future OS versions and APIs have the possibility of addressing those cases. Whereas, those that have just transposed their general desktop systems (where they don’t even run well on those with huge resources), have the problem that they can never strike a sensible middle ground for small devices.

  • HCE

    @miloh

    You do not need to have a status bar for every application. The iPod app does run in the background but there isn’t a status bar telling you it is running. The phone app does show a status bar. So – even apple does not do it with all their applications.

    Some select applications like GPS need it, most don’t. Even if there are several applications that need to report status on a real-time basis, I’m sure Apple could come up with a system that works better than what we have now.

    I’m not here to design Apple’s products. I’m just pointing out drawbacks. Even though the iPhone is, right now, the best overall smart phone, there are things that others do better.

    – HCE

  • http://joynerian@mac.com ijoyner

    Ulicar: “OK as you like to use semantics to try and defend what is obvious even to you, quite indefensible here are some semantics”

    Not sure who the “you” is here, but the counter argument to yours is not just semantics (whatever you mean by that). Now you are using political-style debate.

    Ulicar: “1 multitaskin is sharing CPU time between several concurently running processes
    2 if you cannot kick off two or more concurent processes it is not multitasking
    is that simple enough?”

    Simple enough yes. iPad does 1. iPad does 2. There are several ways these are done:

    1. there are lots of processes concurrently going on inside the box. Many are not visible, more-or-less in the OS. Some are detectable, like playing music in the background, getting notifications of incoming events.

    2. An application can kick off concurrent processes in the form of threads, thus download in the background, while continuing to serve the user. Such threads are usually lightweight and swapping is handled within the parent process, rather than the OS handling scheduling (heavyweight process). That’s probably a generalization, and a more complete description of threads can be read at:

    http://en.wikipedia.org/wiki/Thread_(computer_science)

    Thus, by your own definitions, iPad does have multitasking, and if we all reread Dan’s first two paragraphs, that’s exactly what he said.

    Problem is, when app is terminated threads also are terminated (they could be restarted from where they left off when app restarts). The need for IMs, Skype, etc to monitor in the background are special cases and everyone agrees should be dealt with by a future API. Or Apple might do something completely different. Either way, I think they have a winner on their hands because they have done something other than just plonk a heavyweight OS on a lightweight device. They have not just done as they please, but designed within the given constraints (size, energy availability (battery), and cost – wow really within cost!). You just have to admire another brilliant design.

    Thus they are taking a subtle approach, which is needed in a small (fragile) device, while the others are taking the sledgehammer approach and smashing limited devices with full OSes. This is inappropriate – 1) how do you manage the system and 2) most users don’t have the capability to do this anyway. Alas most IT people have no consideration for the typical end user as opposed to themselves who supposedly can do this (although I think even most of them do it badly).

    As you can see, this is not just a matter of semantics, but thanks for the arguments, because it has certainly made me think through more thoroughly why Apple might have done things this way, and in terms of the OS as a resource manager, systems design in general.

    For those interested in discussions of this kind (or any other), I’d recommend the book “Understanding Arguments: An Inroduction to Informal Logic” by Fogelin and Sinnott-Armstrong. It helps recognize the common fallacies that people use. Must reread it and relearn the lessons myself sometime!

    Cheers
    Ian

  • bazz4

    Daniel Eran Dilger
    re Ten Myths of Apple’s iPad – 9 It can’t multitask

    Microsoft from my understanding of your various histories is a kleptomaniac incompetent techie with delusions of grandeur; thus its motives are $$$$ – the end!

    Google is different; its a one trick pony that wants to make that trick occur everywhere!

    So Android is back room opened ( multi open apps) cause the only way to make $$$$ is to know the pigeon which means:
    – what you do ALL the TIME
    – where you go ALL the TIME
    – what you read ALL the TIME.

    Thus its MORE Dangerous than everyone including the IRS, CIA, FBI cause
    YOU ALLOW it to watch you that the others must ask a judge!

    Its White Knight image is in negative world and in photo world is Black!!!
    Evil Empire hype is so the drones in Google don’t understand!
    And also the pigeons!

  • miloh

    @HCE:

    “Even though the iPhone is, right now, the best overall smart phone, there are things that others do better.”

    Hence using the right tool for the job.

  • fiverone

    @ulicar,

    Your arguments are often specious and or misguided. It really doesn’t add credence to your argument to mention your credentials as there are no way to prove it one way or another.

    Were I often have issues with your comments is in the narrow mindedness you show. For example the analogy of car being limited to x-speed is misguided. One cannot claim that it’s top speed is ‘x’ unless it has proof. You know for a fact that the iPhone can run two applications at the same time. Yet you put a self-imposed limitation to say that because a thrid party vendor is not allowed to run in the backgroud, therefore the iPhone CANNOT multitask.

    It’s often this mis-interpretation that I find many people (including my very technical friends) have when asking about my iPhone. I take the time to explain to them that the iPhone is indeed capable of running more than two applications, but that it is limited to only Apple specific applications. For example, you can have the iPod running while on Safari. Or that during a phone call, I can get into another app(videos/music apps being the exception) which might include a thrid party app, while not losing my phone call. What I can’t do is run say a third party app in the background. Usually, at this point I just do a dog any pony presentation on my iPhone to emphasize the point. For example I’ll call my brother on my iphone and then will play Zynga Poker while still on the phone. I don’t spend the time explaining these features because I want to sell more iPhones, I do this to make the person more informed about a particular subject that I know a lot about.

    Ulicar, I also say your arguments are also specious. The example you use to compare the iPhone use of Skype vs Desktop. Let me apply your logic in a real world example.

    Get your iPhone:
    1. Turn on the iPod and play a song.
    2. Get onto iTunes apps, search for a large Podcast and download.
    3. Turn Safari and visit various sites.
    Question: Did you have to turn the iPod off? Did my podcast stop downloading? Did my Safari failed to run?

    Because I didn’t turn the iPod off (music still playing in the background), and my podcast continued to download and I was able to use Safari, just like my desktop. WOW, then it does do multitasking just like a desktop does.

    Again my example is just as true (which if you have access to an iPhone, you can test right now to validate) and a fact.

    The truth is very much more complex, but not so that one cannot take the time to explain. As I have explained to others, there are limitations you should be aware of. For many reason that Apple has choosen to subscribe to, Apple has decided not to let 3rd party apps interact with each other. For most, this is a non-issue. For a few others, it was. At the end, all those I spent the time explaining this to, walked away knowing a lot more about the iPhone with a real knowledge to make an educated decision. which is exactly what DED has done here on his site. I wish I could say the same about your comments.

  • ulicar

    @fiverone we agree that iPhone will run several apps at one time, and those will be only apps made by apple. Did I ever say anything else? However I will say again, if I cannot kick off two random processes at a time, iPhone is not multitasking. People here will argue threading inside some applicasion is multitasking. Yes, but that is not OS property. I can thread inside application that runs on not multitasking OS. It would not be the first time I did that, but I surelly hope it would be the last.

    So there you have it. We agree on everything except on what does that mean. This was written on iPhone in case somebody is interested.

  • miloh

    @ulicar:

    Purely as a matter of personal interest, from which school and in what year did you receive your Master of Technology?

  • http://joynerian@mac.com ijoyner

    Ulicar: “we agree that iPhone will run several apps at one time, and those will be only apps made by apple”

    No you can’t run two Apple apps at once – at least the UI part. Apple’s applications are subject to the same “restrictions”, well I’ll say mechanisms in preference, as every other app.

    Ulitcar: “However I will say again, if I cannot kick off two random processes at a time, iPhone is not multitasking.”

    And that statement is false.

    1. iPhone is still multitasking many things.
    2. It has been stated over and over that random processes are the problem. Apple has carefully chosen non-random processes.

    Further to that, since (as someone has said) the iPhone only has 128 MB of memory, this means you are severely restricted from kicking off random processes anyway. As has been proven by Windows mobile, it grinds to a virtual halt. Thus that restriction applies on all small-form platforms.

    People won’t understand that and will keep shovelling in running applications if they can – blame the OS and not themselves.

    As a side observation: Mac users have long run many apps at one time. They have lots of windows open, multiple documents in one app, etc. Mostly when I see Windows people operating, they have a single window maximized to the screen, when they want to swap to something else, they terminate that application and start the new one (again one window full screen), then terminate that and go back to the original.

    Seems Apple people are well ahead of Windows people on that (might have something to do with Fitts’s Law as well).

    http://en.wikipedia.org/wiki/Fitts's_law

  • gctwnl

    Let’s look at it this way: it is not the question if the iPhone OS can multitask (it can and it does) but of the user can multitask. It is all about user experience, not about technology. Here, there are several compromises in the iPhone OS which limit the full multitasking experience compared to a desktop OS but it seems the effect on the user is pretty minimal and can be minimized even further in the future.

  • http://blog.cytv.com cy_starkman

    @ulicar and other fighters

    You are all wrong (and right in y’all nitpicking ways).

    Apple does let 3rd party applications run in the background. The application/s in question benefit the user directly and you can even go into said application and observe that it has been running and providing its services.

    So the whole thing is MOOT. The iPhone OS is multitasking and 3rd parties can write apps that use the multi tasking. (third time I’ve written this so I guess you are all so bent up in the war you can’t read)

    After 2009 software update the only two things left that people cling to as complaint points are…

    1) I can’t run simultaneous apps (which is telling, because indeed the individual is declaring either their fear or incompetence)

    2) It doesn’t have Flash.

    Now if someone said something really meaningful like..

    Why do I have to do between 6 gestures and 3 gestures just to turn WiFi on and off without jail breaking.

    Or why haven’t they made the virtual keyboard more context aware

    Or why doesn’t my personal dictionary sync to the desktop one or recognise words on the damn page I am typing on

    Or why isn’t there a in-page search in Safari

    Or why does the Appstore have links to websites you can’t click or copy.

    Or why if there is a quick jump to top of page gesture everywhere isn’t there a quick jump down the page. It’s real tedious scrolling down here just to post this comment.

    Or talking of comment boxes on pages on iPhone, what the hell is up with the near useless operation of them. Even getting them to scroll is a chore in the extreme.

    Or why does Safari reload pages as it’s default behaviour.

    Or why can’t I hide the default apps that I don’t EVER use.

    Or why is the Calendar app so darn clunky

    Or please, oh please, can’t I have a no auto rotate setting in at least Safari

    Obviously I could go on but the point is, there is actually plenty stuff to pull apart that is annoying or poorly thought through or actually makes the thing hard to use and yet all the intelligence in this comment thread can only go on about the semantic properties of the word multi-tasking.

    I suppose I should be grateful reading the thread, at least this isn’t a cat fight over the right to be spammed by Flash.

  • http://joynerian@mac.com ijoyner

    Hey cy: “and yet all the intelligence in this comment thread can only go on about the semantic properties of the word multi-tasking”

    it’s called sticking to the point and it has not just been about sematics, but an exploration of what really MT is. Alternatively, I could say that semantics is not a bad thing – people should not use it in the derogatory sense – because you have to nail exactly what something does mean.

    Unfortunately, these days in order to ram people through classes into an MS dominated industry, people are taught that topic X exactly means this (usually Microsoft or IBM think) or false histories of how MS and IBM invented Y (the real story of virtual memory is very interesting) and then you get all these people coming out arguing vehemently that that’s the way the world exactly is. They don’t appreciate Apple’s “Think Different” (although I suppose that was grabbed from IBM’s “Think”). And thanks to people like Dan, who run sites like this to challenge and correct these simplistic notions.

    Thanks for the great list though. I’ll make a copy of it and apply it in iPhone apps I develop.

    CY: “3rd parties can write apps that use the multi tasking”

    Actually, I’m a bit interested in what mechanism you refer to here. Threading? Or is there a Cocoa-level API to fork of independent tasks? Perhaps even low-level Unix calls? Or are these blocked? Perhaps we have all missed something?

    I haven’t seen a Cocoa API, but then with every release of Xcode, Apple’s documentation seems to become more fragmented into little HTML pages so you have to know something is there, rather than a PDF file that you can easily search through.

    Ian

  • http://blog.cytv.com cy_starkman

    @ijoyner

    Hey, look, I agree with the whole multi-tasking definition. I used the Amiga, back in the day. People didn’t get it then and they don’t get it now.

    I am not referring to a mechanism, I would imagine it doesn’t form part of the standard API’s.

    The Tom Tom car kit App claims to run in the background routing services from the car kit accessory to any interested app. From using it I’d say that pans out. Without it installed it does not happen. Even if installed it can die in the background and services stop routing suggesting that it isn’t just changing a few preferences after being run once (demonstrated by going into the app again and it has stopped working).

    Tom Tom is a third party, The Tom Tom car kit app is an App

    Hence, Apple allows 3rd party apps to run in the background. Multitasking lo and behold.

    The UI as currently implemented does not allow for the user to visually interpret two applications running at once, that’s got nothing to do with multi-tasking. That’s UI development

  • Tim

    My only complaint about Apple, is they don’t give you the option. But then they do stand to lose some value if every developer starts to write applications designed for resident memory and nothing else.

    It’d be nice however to have a settings screen that allows us to put a tick next to the apps we’d like to stay resident, and the ones that not. Publish it with a caveat at the bottom that warns excessive use of said feature may slow down your phone and can’t guarantee performance, do at your own risk yadda yadda…..

    iPhone OS as it is ticks 95% of boxes to be fair, and it’s only been around for a relative nano-second. It’s evolution in small increments is welcomed, and I’ve no doubt some form of persistent application capability will come soon.

  • http://joynerian@mac.com ijoyner

    Hi Tim. Thanks for the idea, but I hate it!

    >>>My only complaint about Apple, is they don’t give you the option.<<>>It’d be nice however to have a settings screen that allows us to put a tick next to the apps we’d like to stay resident, and the ones that not.<<<

    No, this is the IBM/MS approach. It is not appropriate for small end-user devices (not even for desktops, or mainframes either, but particularly EU systems). A well-designed system will self configure to manage its resources.

    As I have pointed out before, you should think of applications on the iPhone as always being resident – they save state in persistent store when terminated. (This is part of the development style that developers should follow.) If persistent store (flash) were as fast as main memory and cheap as disk per GB there would be no reason to have main memory, but it's not. However, it is faster than disk.

    Now the problem is to make it as fast to swap applications from flash as it is in main memory. That is probably not possible, but it is faster from flash than disk.

    The real problem is to make it fast for the user to do. On a desktop system that is done because you swap to another application simply by clicking in its window (although contrary to its name, most MS Windows people don't take advantage of this because they maximize their windows no matter how ridiculously large their screen, which is a waste of screen real estate), or choosing it from the dock or switcher. Thus you need some on-screen representation of the app. Where is this on the iPhone? – it is the icon back on the main screen. To get to this you must quit the current application and touch the icon of the other application.

    Now I'd argue this is where the difficulty is, not in multitasking. Seems there could be a mechanism like the dock (but that is very heavily criticized by some UI cognoscenti) or switcher to at least give the ability to quickly switch between the last five or so applications.

    Looking at the resident option from another angle, I think it is rather like IBMs sysgen operation they used to have. In order to install a computer, the system admins had to fill in device tables describing all the tapes, disks (DASDL for the inane IBM terminology), etc. Then you had to configure your main memory layout into partitions. You then mapped programs to particular partitions – large programs would map to large partitions, small programs to small ones (well if you were smart anyway). If two or more programs mapped to the same partition you could not run them at the same time. You then built the system, compiling all these tables into it.

    This way of "optioning" your IBM system to your requirements lasted at least until the early 80s.

    Meanwhile, back at base – Burroughs – the B5000 was introduced in 1964, designed by Bob Barton with true virtual memory – no partitioning configuration needed. Furthermore (although I don't know if this was in the original systems, but was certainly in even their small B1000 systems of the early 70s), no specification of device tables was needed. When the system was booted, it searched for all IO paths and detected all the tapes, drives, etc connected to those. When you installed new drives, all you had to do was reboot (OK, it's not quite plug-and-play, but for those days pretty close, although whole disks could be swapped in and out of drives while the system was running – obviously that is now replaced by plugging the whole drive in and out of USB or firewire). On IBM systems – new drive, more tables to build, rebuild the OS, loads of IT types running around being busy…

    Despite this gross inferiority of their product, IBM continued to dominate because it fooled and brainwashed IT people into believing that they had OPTIONS that users of systems such as Burroughs did not have. In fact Burroughs shops had far greater flexibility for less cost than IBM shops. Flexibility and cost of operation are closely related.

    Microsoft now do this in their app design – they love to show off all the options in their toolbars – tastelessly cluttering up screen space.

    As usual, I have written a long message, which I hope people read. I hope it explains why – in general – I hate the idea of options (and I think Apple do too). User options really should be reserved for cases where they are really needed, that is real domain design options, not system implementation options. A stay-resident option would not be nice and not needed in a proper self-configuring system (which I hope I have explained in great detail with examples). Options also contravene the KISS principle. Thus I'm really glad Apple don't give you such options – that's the easy way out and sloppy system design.