Daniel Eran Dilger in San Francisco
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.

Support RoughlyDrafted!

Snow Leopard Server (Developer Reference)Daniel Eran Dilger is the author of “Snow Leopard Server (Developer Reference),” a new book from Wiley available now from Amazon as a paperback or digital Kindle download.


Links:
Amazon | Facebook | Twitter



Bookmark: Del.icio.us Slashdot Digg
RSS feed for comments on this post

TrackBack URI for this post

126 comments

1 Ten Myth of Apple’s iPad: 1. It’s just a big iPod touch — RoughlyDrafted Magazine { 02.17.10 at 12:56 pm }

[...] 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 . It really didn’t matter what Steve Jobs said, anymore than it didn’t really matter [...]

2 Ten Myth of Apple’s iPad: 2. iPad needs Adobe Flash — RoughlyDrafted Magazine { 02.17.10 at 12:56 pm }

[...] 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 .. Dear Adobe: 2. It’s a myth that the iPad needs [...]

3 Ten Myths of Apple’s iPad: 5. It’s just a Tablet PC or Kindle — RoughlyDrafted Magazine { 02.17.10 at 12:56 pm }

[...] 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 . Dear old school pundits: 5. It’s a myth the iPad is just a Tablet PC or Kindle [...]

4 Ten Myths of Apple’s iPad: 8. It’s a curse for mobile developers — RoughlyDrafted Magazine { 02.17.10 at 12:57 pm }

[...] 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 . Dear WSJ: 8. It’s a myth the iPad will “curse” developers. Yukari Iwtani Kane, who is [...]

5 gus2000 { 02.17.10 at 1:24 pm }

I can’t tell you how many times I’ve had to [facepalm] because some n00b on teh internets proclaimed that the iPhone “can’t multitask because it isn’t multicore”. Huh? Comprehension fail.

I hope you’re correct about Mobile OSX 4.0 being less modal. Something I do frequently is to chat/Skype with someone while using the Web or some other app. Sure, the iPhone can make a call while I open another app, but there is no phone on the iPad.

Doesn’t really matter, though, since I will be getting an iPad on launch day regardless. :)

6 ulicar { 02.17.10 at 1:35 pm }

This reminds me of Android multi-touch capabilities. Apparently, Android is multi-touch phone, but it is not enabled, unless cracked. Does that mean it is multi-touch, or does it mean it is not? In my opinion, if the feature has been artificially disabled by the provider like in the case of the Android multi-touch is it is not multi-touch. If my car is electronically speed limited to 150 mph, does that mean my car is faster than 150 mph or does it mean it is not?

Apple does not provide multitasking for third party developers, even if artificially disabled, therefore it is not multitasking. Sorry. There might be reason that Apple wants us to have better experience, quite possible, but it is also possible that apple doesn’t want us running skype in the background. Who knows?

Anyway, OS maybe has everything needed, but it is not enabled unless cracked, so it is not multitasking. If you are hungry and the food is in the other room under the key that you don’t have access to, does that mean you are no longer hungry? Nope. It means you are still missing the food like iPhone OS is missing multitasking.

7 danieleran { 02.17.10 at 1:43 pm }

@ulicar: “multitasking” is a feature of the operating system, not the ability of the user to SEE or HEAR the results of more than one app at a time. The iPhone OS uses a multitasking kernel, it multitasks a number of services all the time, it just doesn’t support running third party apps as background processes. That is not the definition of multitasking at all, so using that word is either ignorant or an attempt to create confusion.

I don’t want to feed your trolling, I just want to clarify that you are either choosing to use the wrong word to create confusion, or you don’t understand the issues involved.

8 TheMacAdvocate { 02.17.10 at 1:44 pm }

You could have called this entry “I Don’t Think That Word Means What You Think It Means”.

9 Berend Schotanus { 02.17.10 at 2:09 pm }

Already at no 9 out of 10 iPad myths, it is amazing how much skepticism en hostility Apple meets about things that in the end appear to work extremely well.

Following this series (and previous ones) I did some thinking about where these feelings might come from. My guess is that at the bottom of it all Apple really has a different worldview that both make their products so good and is the reason for all this resistance. See:
http://berendschotanus.com/2010/02/why-apple-products-are-misfits/

10 davitron { 02.17.10 at 2:49 pm }

I would be very interested by a discussion about multisession.
It may not be necessary to have much background application.
But it may be useful to keep the data of an application in memory when switching to another one. Saving a state and reloading it takes a few second that are sometimes boring.
In one way, Apple forced the developper to design application that must constantly be able to save their context at any moment when the user pushs the home button.

This approach has a lot of virtue because every pratical application will take that in account by design.
This is what we can see on the iPad when every modification of an iWork document are immediatly saved.
And it works perfectly and very quickly for the mail.

I suspect that iPhone OS4 will improve this multisession issue by speeding up context saving and providing a real multisession mechanism.
This and a ressource sharing mechanism for documents would be a great adding.

11 HCE { 02.17.10 at 2:51 pm }

My biggest issue with the lack of third party app multitasking is the way in which the iPhone handles switches between GPS and phone calls. If I am being guided by the GPS and a phone call comes in, the call should go on in the background and the GPS should continue guiding me in the foreground. If I need to, for some reason, foreground the call, then the GPS program should continue running in the background, and not get killed. My beat-up old Garmin GPS can do this. It is ridiculous that the iPhone cannot. I hope iPhone OS 4.0 addresses this problem.

– HCE

12 tsenecal { 02.17.10 at 3:02 pm }

Given the small screen real estate of an iPhone or an iPod touch, I can see why it just doesn’t make real sense to have 3rd party applications running at the same time. there just isn’t enough room for everything to been seen.

the iPad is a different animal, with 6 times the display area… literally, its display is as large as the second generation iBook.
so, without further rambling…

why I won’t own an iPad:

I was able to run a calculator and a word processor at the same time 25 years ago on my original Macintosh.

I would think that a 2010 iPad with 60+ times the horsepower would be able to do the same thing.

[Yeah but your original Macintosh didn't multitask at all. And when the classic Mac OS did get the "MultiFinder" feature, it wasn't real preemptive multitasking like the iPhone OS.

Perhaps what you should wish for is desk accessory widgets. You might also contemplate why the iPad didn't demonstrate a freestanding calculator app. Perhaps Apple has already thought about that. - Dan]

13 donarb { 02.17.10 at 3:07 pm }

Another problem with allowing 3rd party apps to run in the background is prolonged memory leaking. The new Palm’s have been having so many problems with apps leaking (even from Palm themselves) that someone has now created an app that will reboot the phone on schedule.

http://www.precentral.net/reboot-schedule-homebrew-app-does-reboots-your-schedule

14 zdp { 02.17.10 at 4:38 pm }

It’s interesting to me that Apple is being kicked in the nuts for each of these myth items, while I have read nothing but praises for the Windows Phone Series 7, which AFAIK does not allow 3rd party background processes OR have Flash on it.

I am excited to see what Apple comes up with…. As I have been learning the iPhone SDK, I have come to realize that Apple has not just thrown it together, but has taken a lot of time trying to make Apps easy to create and use.

15 John E { 02.17.10 at 5:13 pm }

i get Dan’s points. but there is one other big thing not addressed that actually i think is the most important of all to most users: switching back and forth between apps. which appears like multi-whatever but doesn’t really have to be.

right now, Apple makes you return to the home screen to switch apps every single time. but often you just want to bounce back and forth between two – like maps and yelp, or maps and google search, or wikipedia and google, my most common pairs. or a game you’re into and anything else you need momentarily. i’m sure everyone has situations like this often too. having to bother with the home screen every time is a pain. having to wait for a game app to reboot is a pain. and so on.

correct me if i am wrong, but all that is actually needed is to save the app’s RAM state when you want to go to another one, right? so you could go back to it and pick up exactly where you left off. that app is actually not “running” in the background in that case, is it? more like put to “sleep.” there just needs to be enough RAM …

all that would be needed then is some option to “go back to last app,” like clicking the home button three times. then you could bounce back and forth between two apps directly.

or is this all wrong somehow?

anyway, this is the one thing it would be great to see Apple fix, however.

16 ChuckO { 02.17.10 at 5:32 pm }

zdp 12, Great point. Sites like Engadget are falling all over themselves praising Windows phone 7 Series (holy toledo). Even Seth Weintraub at 9to5 Mac said it looks cool! The interface looks RETARDED! Sorry Sarah.

17 ulicar { 02.17.10 at 5:33 pm }

Well, if nobody but Apple is able to use OS “multitasking”, than it is not multitasking, now is it? I have Master of Technology. I know what I am talking about. I am not trying to confuse anyone, you are doing that, buy trying to sell the operating system which is obviously multitasking, but nobody can use it except Apple, as multitasking operating system.

If your car is limited to 150 mph does that mean it is faster than 150 mph? No, it means that the top speed is 150 mph, the same goes here. If nobody can use it, unless cracked, it is not multitasking. There you have it.

18 ijoyner { 02.17.10 at 5:41 pm }

Thanks for the article. I spent a lot of time a few weeks ago on sites like CNet trying to correct these people.

If iPhone/iPad is missing anything, it is garbage collection – not that the user gives a fig about that. But it would kill all memory leaks which arise because of programmer error. Why do programmers make errors? Because all the retain-release code is complicated and easy to make a mistake. It clutters the code with non-functional stuff, ie., does not contribute to the task at hand and is just overhead and bookkeeping.

I can understand with lack of memory (and possibly CPU cycles) resources on the iPhone why it has been left out, but I hope full Obj-C 2.0 is done on the iPhone/iPad sometime, especially as we just got this great new thing on Obj-C 2 on Mac. Frequently terminating apps on the iPhone certainly obviates the need for GC somewhat.

19 mikeg { 02.17.10 at 6:04 pm }

Great article as usual. I am not sure what you have planned for Myth 10, but there seems to be a number of articles coming out about inefficient bandwidth usage and how the iPhone and iPad will create havoc for the world’s 3G infrastructure (my words) and will result in the need to allocate additional spectrum to meet demands. I’d like to get your insight in the topic either as the final Myth installment or in a later RDM installment.

20 ijoyner { 02.17.10 at 6:08 pm }

Ulicar. Your food analogy breaks down. Food is a resource – like a battery (exactly like a battery). Your task is to make it last. If you let all the hungry people into the room at once, resource is quickly gone. If you control access everyone is happier for a lot longer – Hmmm capitalism and market economy really doesn’t work (well maybe)! That is Daniel’s point, it is controlled multitasking – you get most of the benefits (maybe lose a few), but don’t have the problems (resource depletion and security problems).

In fact, a most serious resource depletion would be lack of memory – once all those multitasking applications fill memory, the system would start thrashing and then your battery would be wasted just shoveling things in and out of memory with very little useful work being done – a very miserable user experience. Dealing with a system in this condition takes sophisticated monitoring and supervision. That is beyond most users. Apple want self-administering systems, systems that work well in a variety of conditions without user intervention. Windows as we know craves attention and this is a costly waste of time and resources.

When trade-offs are made you can easily make criticisms, but I think Apple mainly have it right – of course they will fine tune things as they go.

So do Apple make trade-offs instead of sticking to their principles? Well I leave you to think about it since I’m thinking about that myself. But I’ll say that in an environment of limited resources, you have to make compromises. In an environment where malicious people are trying to compromise your security and system, compromises must be made. Making life impossible or at least difficult for hackers usually means that the user must be inconvenienced as well, by at least having to type in passwords, etc.

21 ulicar { 02.17.10 at 7:08 pm }

@ijoyner you absolutely understand what I am talking about. The operating system does have CAPABILITIES to be multitasking, but those CAPABILITIES are limited to only Apple software for whatever reason. I accept your explanation of why it is setup like that, that is not topic of this discussion. The point stays, if you cannot get to the food, you will stay hungry, unless you break in, which is what jailbreakers are doing. That is all. We cannot say “we have as much food as we like”, when that food is not available to anyone but a selected few. That is my objection in the whole this “it is multitasking/it is not”. It is CAPABLE OF multitasking OK, but nobody except Apple can use that CAPABILITY. The rest will have as much food as Apple decides is OK. Therefore, it is not multitasking, is it?

22 ijoyner { 02.17.10 at 7:17 pm }

Mr Ulicar. I see your point, but the analogy is too simplistic. But if you develop applications to run in a preemptive (modern) multi-tasking OS, you are exactly being limited by the OS as to how much food you are being given.

Note multi-threading within applications is still available – it needs to be so the user can have a responsive app while doing things like downloading from the Web.

Start another app – all the non-GCed objects as well as threads go away, until you start up again and resume where you left off. In general there is no need for parts of a user app to continue while another app is running.

Other functionality is decided on a case-by-case basis, like continuing to play music, receiving notifications that require the attention of another app not running. That seems to cover exactly what is needed in small hand-held devices.

23 FreeRange { 02.17.10 at 7:18 pm }

@ ulicar – you may have a “masters of technology” but that obviously doesn’t make you the brightest bulb in the room, not does it stop you from being tone deaf. The iPhone has multi-tasking, is constantly doing multi_tasking, but does so within limits to protect the user and optimize performance. In fact, even the iPhone’s push notification service is multi-tasking. This is not a complicated concept. Your idiotic rant is just that. Stop trying to over-intellectualize as its making you look silly. BTW, I have a great mobile OS I’d like to sell you, Windows Mobile, or we have a new vaporware flavor for you but I can’t seem to remember its gazillion word name….

24 miloh { 02.17.10 at 7:44 pm }

@HCE:

“If I need to, for some reason, foreground the call, then the GPS program should continue running in the background, and not get killed.”

That would depend greatly upon the specific application. Unless something is lost by killing a program, there is no benefit to keeping it running in the background. In the case of the standard iPhone Maps application, I’m not aware of anything being lost by shutting it down. Whatever I was doing previously is restored when I restart it, and my position is updated via a new GPS reading. I don’t see what running it in the background would gain me.

Now for something like Google Latitude where one’s position is being constantly transmitted to a remote server, that’s a different matter. Terminating that would cause position updates to cease.

25 Donald { 02.17.10 at 8:22 pm }

@ ulicar
“Well, if nobody but Apple is able to use OS “multitasking”, than it is not multitasking, now is it?”

Actually the definition of multitasking has nothing to do with how many people can use it! Rather “multitasking” is concerned with the capability of having several things run at the same time.

In the same way that a six-lane “freeway” continues to be regarded as a “freeway” even if 3 of the lanes are deliberately blocked by the transportation department, a multitasking operating system is still “multitasking” even when it does not allow unlimited multitasking.

From a practical standpoint, however, I think most people will be more interested in knowing that the system allows them to “multitask” in certain identified activities (i.e., those where it’s most reasonable to be able to do so) than having multitasking permitted for every conceivable situation.

26 ijoyner { 02.18.10 at 12:22 am }

Donald. Your analogy of the freeway also breaks down like Ulicar’s. Of course a six lane highway with only one lane open is useless (or next to). These analogies don’t really relate to multitasking – the lanes actually relate to the number of processors, not the number of tasks, since the tasks must be single threaded onto a processor anyway (hence why Dan keeps saying the critics really don’t understand what they are talking about… I think anyway, correct me if I’m wrong).

What I have argued in other forums is that you should not start from the technology (ie., the requirement is multitasking), but analyze what the real user requirements are. This is true domain-driven design, not technology-driven design. So I actually agree with your conclusion. That is why Apple is so successful in this market space – they ask the question “Well what will users of this device really want to do?”

27 tonortall { 02.18.10 at 12:25 am }

I wonder who is being more evasive on the matter of multitasking. On the one hand, it is undeniable that the OS supports that behaviour: otherwise the telephony would not work, for a start. But in practical, user centric terms, this is a strained distinction. At the user experience level, multitasking, while present, is a crippled construct on the iPhone.

The “solutions” to overcome the lack of the facility for third party apps are poor. That Apple would offer the notification “solution” is at the very least a nod to the idea that users would like to have some kind of concurrency in their use of application. If the principal argument is to preserve battery life, then the notification “solution” is an absolute fail. I absolutely believe that “solution” in this context belongs between inverted commas.

There is no doubt that badly or maliciously written software is unwanted. Apple however do have their app store approval process which is designed to weed out the worst of it at the very least. I don’t understand why you equate the lack of third party apps being able to run at the same time to being some undetected malevolent beast. There is nothing to stop foreground apps from doing exactly the same things. I’m not going to wade through the SDK, but I think you are making a strained connection in this respect. I would hazard that the decision to have a single third party app running is far more a practical nod the choice of interface than any security bogeyman.

I am sorry I wade onto this site to try and provide a counterpoint to what is obviously an Apple cheerleading site, but in particular, I find this part in your series particularly grating. It appears to be a justification for a shortcoming rather than any critical analysis as to why, in user centric terms, multitasking is not present on the iPhone OS.

28 srihari { 02.18.10 at 12:50 am }

Excellent Article…Really highlighted a lot of issues on why Multitasking is not a vice adventure for the moment…But i am sure this will not stop apple to stop thinking about the ideas on how to go by a safe way to implement it……I am really looking forward to upload my Videos to youtube in the background and also some reading @ the same time….

29 Michael { 02.18.10 at 1:12 am }

Some people don’t understand the difference between computer multi-tasking and user multi-tasking. Yes, the iPhone does multi-task. No, it does not allow a user to multi-task outside of Apple’s core applications. It’s all a matter of perception.

Like other people, I also believe Apple may allow user multi-tasking in iPhone OS 4.0, but limit it in the following ways…

1. Users will have to explicitly request that an application remain open. Simply pressing the Home button will quit the application as it always has. I’d guess there will be a new system wide gesture that brings up a “task” view, could very much resemble switching between web pages in Mobile Safari.

2. Once in the background, the application will be limited to running a single thread, which must not have any UI calls. Possibly, the system will send the application an applicationWillLoseFocus message to allow the application to specify which thread to keep running or to create a new thread. If the application does not respond to the message, then it will just remain completely dormant. Just before the application is brought back into the foreground, it will receive an applicationWillGainFocus message, to allow the application to update its views based on any background processing.

3. This will only be available on 3GS and newer devices; trying to run more than one application on a device with only 128MB would be impractical. The number of open applications may also be limited to only a few at a time.

Another route Apple may go is to bring Dashboard to the iPhone OS. Allow users to run a limited set of widgets in the background.

30 Michael { 02.18.10 at 1:44 am }

@ tonortall

I agree, there is no facility for foreground applications to misbehave so we can assume that an application in the background would have the same restrictions. And I’m sure it was a design choice based on limited resources of mobile devices; memory, battery, screen size, etc.

However the Push Notification Service is a valuable advantage and battery life is just one thing that can benefit from it. If I have messages coming in from a dozen different services, I don’t need to have 12 different clients running with 12 different ports open. Instead, there’s just one process, listening to one port. That’s both a security and performance advantage. It also keeps the network chatter down, which can save battery life as well.

31 gctwnl { 02.18.10 at 2:00 am }

Excellent article. I think this is not so much an engineering over marketing triumph, but a user experience over engineering issue. I’ll repost something I wrote a while back on the AppleInsider forums:

People who think SJ is a ‘marketing guy’ misunderstand him completely. SJ is a ‘user experience guy’ and has often done things that fly in the face of marketing wisdom (with hits (iMac w/o floppy, expensive iPhone) and misses (NeXT restricted to higher ed, G4 Cube). And next to being ‘user experience’ driven he is also a ’sales guy’. But his effectiveness at selling an idea/solution is hard to separate from its basis in ‘user experience’ which by and large also sells itself. You can see SJ making marketing mistakes, but even his market failures have been user experience triumphs (the NeXT was decennia ahead of the competition in user experience).

Gates is a rather basic nerd who is also a great marketing strategist. The success of Microsoft has been documented perfectly by him in his book “The Road Ahead”, where you can read how marketing and strategy is what made Microsoft great. He has no feeling for user experience (what SJ calls a lack of ‘taste’ on Microsoft’s side) and no true understanding of the limits of technology in that respect (think about the billions Microsoft spent on AI-like programs which brought nothing). In Microsoft’s defense, innovating when you depend so much on OEM’s is difficult, it is part of their position that true innovations in user experience are very difficult. Still, I think SJ has a far better feel for technology than BG, who has always impressed me as being a truly exceptional strategist while being a mediocre technologist.

Many pundits complain about technical iPad details, like the lack of a camera, or the wide bezel which they think is ugly. The wide bezel is however important for the user experience of holding the device in one hand and working it with another. And the camera in the top of the bezel would not be a perfect user experience (front facing, it would mean you are being displayed in a unflattering angle and if you turn the device your hand might be in the way, back facing it would be a rather unwieldy camera to handle). I expect different future solutions for the camera option (e.g. a front facing camera ‘behind’ the middle of the screen).

The iPad, as a first in a new category has many compromises in its design for the multiple aspects of user experience (e.g. battery life versus unlimited background apps). The question is not if there are compromises (there are) but if the end result offers a great user experience for enough types of users. From what I have seen, I think it will.

32 gctwnl { 02.18.10 at 2:01 am }

Summing up: It’s the user experience, stupid!

33 pronk { 02.18.10 at 2:08 am }

I’d say the problem here is not that people deliberately misunderstand what multitasking is to bash the iPhone, but that Daniel is having to take a very literal definition of it to make a point.

Yes, the iPhone can multitask in the sense it runs multiple tasks simultaneously. But to the vast majority of end users that is too limited and they do not “see” the multitasking. They cannot, for example, play a game, then take a call, then go back to that game where they left it – the app has to restart. They cannot have a map open, then flick to, say, a metro map in another app to check something, or maybe a restaurant review, and toggle between the two. This often leads to apps having to duplicate functionality to stop people having to quit out and restart, and inevitably leads to app bloat as a consequence.

All that said – I have an iPhone, I love it. The lack of being able to run third-party apps is occasionally irritating, but I don’t mind it. I don’t use pandora or IM clients, so that aspect certainly never bothers me. But it’s this lack of being able to run such third-party apps that most people understand as multitasking, or more accurately the ability to simultaneously run *any* apps the user chooses whether they’re third party or not, and no amount of insisting that one definition is adhered to will make that change. The iPhone doesn’t do that, and until it does most people will consider it cannot truly multitask.

Sorry, Daniel – you could have said “I just prefer it this way” for all the perfectly valid and good reasons of battery life, speed, safety and so on. But making it primarily into an argument about semantics makes it look like you’re scrabbling for reasons to dismiss criticism and those who make such criticisms for the sake of it.

34 ijoyner { 02.18.10 at 3:05 am }

Tonortall: “I wonder who is being more evasive on the matter of multitasking. On the one hand, it is undeniable that the OS supports that behaviour: otherwise the telephony would not work, for a start. But in practical, user centric terms, this is a strained distinction. At the user experience level, multitasking, while present, is a crippled construct on the iPhone.”

Well, we don’t need to use mindless adjectives such as “crippled” in a technical debate – hey I just used the “mindless” adjective myself – what recursive madness ;-)

In user-centric terms, is this a strained distinction? I think not. What happens in a multi-tasking desktop system? The user actually only interacts with one application at a time. If you switch to another application, the system carefully saves the stack state and switches the processor to run the new application. When the user swaps back, the original application’s state is restored. This is all done by stack manipulation, where top of stack elements may be mapped to real processor registers. (I’d love to give a lesson on stack architecture here and how it is the best for multi-tasking OSes, but suffice to say Burroughs was right, Hennessey and Patterson were wrong.)

The iPhone has a slight variation on this – when the user swaps to a different application, your application is informed and it must save its own state. Now that sounds onerous, until you realize that you have written the code to save the state anyway at application save and quit time. So a different application runs, until the user swaps back to yours. Your application restores its state. Another small difference is that while a desktop application has its state saved in main memory, and iPhone application has its state saved to flash memory. In a limited memory environment this is very desirable, because you don’t want a thrashing system (a system that crawls to a virtual halt, scuse the pun).

There is actually another advantage to this – if your application crashes (heavens forfend), you at least will most likely have a recent persistent version of the state. As already mentioned, this might also cure memory leaks in the absence of GC on the iPhone.

Thus, as far as the user is concerned the iPhone application switching is behaving exactly the same as a desktop and thus appears to be multitasking just the same at that level.

This is not making strained distinctions. This is not just playing with semantics.

Pronk: “Yes, the iPhone can multitask in the sense it runs multiple tasks simultaneously. But to the vast majority of end users that is too limited and they do not “see” the multitasking. They cannot, for example, play a game, then take a call, then go back to that game where they left it – the app has to restart.”

As I have just explained, the user can play a game, take a call and return to the game exactly where they left it. Sure the app restarts, but it restores state – at least it should do – if it doesn’t it is the fault of the app. This is in the app development guidelines – break them and do so at your own (or the user’s peril). As far as the user is concerned the magic has happened by a slightly different slight of hand, but like magic, the user does not see what has really happened, only sees the result – that is the magic of computing.

35 ulicar { 02.18.10 at 3:29 am }

@everyone No it doesn’t. For example I want to download something bigish and I would like to play some game while it is doing it. Can I do it? No. Why? Because OS will not let me. Why? It is not a multitasking except for very limited number of applications. It is capable of doing it, if you jailbreak it, then you can kick several processes and use some nice apps to manualy kill them if you like.

It is CAPABLE, but it is not. There is a huge difference.

36 mailjohannes { 02.18.10 at 3:35 am }

It is a clever solution to extend the API to background server apps (or daemons).
Extending the core facilities of the OS is the right way I think.

But another type of solution to the background app problem is possible.
Unix operating systems use ‘nice’ and ‘renice’ to kind of throttle the CPU bandwidth used per thread (or process). Nice and ‘renice’ isn’t working as well as it could – at least on all Unixes (including Linux) I know of – but it is possible to implement real CPU bandwidth throttling.
This is not a trivial kernel extension and it will take time to implement it.

With CPU bandwidth throttling it is easy to restrict all background apps to a maximum of (say) 10% CPU performance. This will guaranty enough cycles will be available for powerful foreground apps and system services, but it will also allow for third party background apps without performance degradation or user management.

Even Apple itself can use the enhanced kernel to achieve better (guaranteed) performance for its own apps and system services.

This kernel enhancement is not easy to do, even for Apple, but it would be a true long term solution to the performance problem in general and the third party background apps in particular.

J.

37 tonortall { 02.18.10 at 3:47 am }

@ijoyner: from a comp sci point of view I am sure you are correct. All the talk of stacks and states is completely irrelevant, however, to the person on the other end of the finger pushing the buttons on the device.

One use-case in particular which would benefit from multitasking is GPS tracking – even this could ameliorated by the OS continuing to log GPS data for a certain period of time after an app using GPS is stopped. That way the app when restarted could potentially catch up. I log all my runs but I absolutely cannot take a call during a run if I wish to maintain an accurate log of my runs.

If you are familiar at all with any of the games that are offered for the iphone you would know that, in particular, the first person shooter types can take a considerable amount of time to load, even for 3gs. Add to that the restoration of state and the user experience is – well – sluggish. I don’t own many of these games myself but the saving of state is not something I have come across for this genre, at least not in the sense of restoring a ‘preempted’ state.

My reference to the notification paradigm is based on the fact I switched it off after two days because I was getting half day battery life as a result. This is my personal experience and I am sure others will chime in and call me on it, but I turned off push notification. We don’t know whether multitasking (again in the user-centric understanding of the term) is better or not, but as a “solution” it was less than optimal for me.

In sum – multitasking as a term is understood by the majority of people these days as the ability to run multiple applications of their choice simultaneously. I know that a purist view suggests otherwise – and this article pursued that line.

But really, people don’t care.

Either they don’t care because the whole concept of multitasking in either sense is meaningless to them , or they don’t care because accepting the definition offered in the article doesn’t provide a satisfactory answer as to why they can’t run pandora and surf the web at the same time.

38 ijoyner { 02.18.10 at 4:01 am }

Ulicar, that actually is a very good example of being able to download a big file in the background and go away and do something else.

I believe mailjohannes addresses this with a possible solution, but that is in the future. Perhaps at some stage Apple will provide an API in order for an application to fork off an independent process as a daemon – a small bit of code, not memory intensive, so the main application can quit memory and let another user intensive application begin. Current multi-tasking that leaves whole applications in memory will just grind anything with less than 1GB main memory into the dirt.

That is one solution. Another may be that Apple still does not want malicious daemons installed, so does not go this route. But they could implement their own download daemon that applications can access.

There are other solutions other than the troublesome desktop full-multitasking one. Updates are always coming and we can only guess, but I’d rather the security and guarantee that the system performs well, rather than gets into a thrashing situation. If the system thrashes neither your download or your game will go very fast and will just leave the user with a frustrating experience.

Most users can accept the fact they can’t do a download while playing a game, and just reorganize their priorities to match. But maybe this will be a short-term restriction. That is still better than thrashing – have you ever been in control of a system to try to clear the thrashing bottle neck? This kind of system tuning is way beyond the normal user, requires understanding of process swapping and priorities.

I could also ask, what are you going to do with the big download? Each iPhone app stores its files in its own sandbox. Other apps cannot access these files and it cannot access other apps files. Thus if you download something big, what is going to process it?

Now there are pros and cons of this. No doubt the anti-Apple shrills will beat up on the cons and fail to see any of the pros.

Sometimes Apple seem slow to come up with solutions, but they are taking the cautious route and in the end come up with really good solutions, even though they might be quite different to widespread industry beliefs. It is probably that slaughtering of beliefs that makes them so hated in some quarters.

39 ijoyner { 02.18.10 at 4:21 am }

Tonortall – the talk of stacks, etc is not irrelevant when I’m taking the time to explain to you how this stuff really works. It’s not a purist view at all. In fact, it’s trying to point out that Apple are being practical. Those advocating holding multiple applications in memory at the same time are actually being the purists and not being practical.

I particularly actually agree that it’s irrelevant to end users – that’s exactly the point I’m making! Applications are not actually running simultaneously on any system (except those with multi processors) – that is an illusion – they are actually taking small chunks (about 1/1000th of a second) of processor time. The stack switching is quicker than the eye.

The point of applications is that the user only interacts with one at a time. That is true also on any desktop system, Cocoa- or MFC-based.

The OS must manage the resources. In a small form factor, you can only get small memories. Apple roughly knows the memory profile of an average Cocoa application. It is obviously better to limit the iPhone to a single application at a time, or the memory resource becomes short and you get massive responsiveness problems.

It is interesting that you managed your battery resource by even turning off notifications. Apps running in the background would be even worse. So I think you are answering your own criticisms somewhat.

I also think you have a good example of being able to log GPS data while on the move and running something else – although this sounds like it could be quite dangerous. However, I think a case-by-case approach is better than using the sledgehammer of multi-tasking – that’s the Microsoft approach.

40 davitron { 02.18.10 at 4:37 am }

Nevertheless, it may be useful to enrich to current API in order to make easier and faster the saving and restoring of an application context.
I am always surprised how fast it is for mail or the Appstore comparing to other third party applications.
I am not an iPhone developper (yet) to know if it relies on private API and if the current public API is rich enough for the developpers to implement this efficiently.
By the way, even on desktop system, virtual memory can swap seamlessly data from RAM to disk. May be this behaviour could be possible for context switching on iPhone.

For background downloading, this is typically a functionnality that should be managed by an Apple service, provided system wide by an API, in a download queue.
This is done already done for AppStore downloading.

41 tonortall { 02.18.10 at 4:44 am }

Ijoyner – I do come from an IT background and did touch on OS design during my degree so I appreciate you taking the time to explain it to me – although it’s not necessary.

In the end, its not the lack of multiple simultaneous third party apps that irked me (there are, for the most part, adequate workarounds) – rather it was the reasoning for the lack of it that I found wanting.

As to background apps making things worse v. notifications: I don’t think anyone’s in a position to make a proclamation on that point as the comparison can’t really be made. Well, not with a vanilla iPhone OS, anyway. I think that conclusion should really be left open.

Anyways, bedtime my part of the world. I’ve enjoyed the discussion.

42 ijoyner { 02.18.10 at 5:08 am }

Davitron: “virtual memory can swap seamlessly data from RAM to disk.”

Well, yes and no. The application has no idea this is happening, and generally, the user won’t either – except when the system is stressed and thrashing. On a small memory like iPhone that is very likely. You also need a huge file on disk (on flash), which might just take up the rest of your available flash. Now I can’t say how the in-built virtual memory on Mac OS X works on iPhone, but I suspect the small amounts of memory and persistent storage make this very restricted and the user will start to notice performance degradation, which means it won’t be working seamlessly, but the user won’t know the cause of the degradation.

Actually, I do know that applications do receive low memory warnings and if they don’t clean up by freeing resources, they are terminated. So that gives a good clue that virtual memory is not really working on iPhone.

43 ijoyner { 02.18.10 at 5:22 am }

Hi tonortall. Thanks for the interesting discussion. It is also bed time here. Since you are an IT guy – I’ll speak slowly ;-) Sorry cheap shot and it is late so my humour is probably a bit off at this time of night, but so many IT people only know what they are taught on courses and then learn in IBM/Microsoft environments, that of course they get things wrong – not that that’s you of course.

Anyway, thanks for the appreciation, but I’m not just patronizing you with an explanation, but using it as a discussion for the millions of people that read Roughly Drafted to see, and I hope it’s interesting for them.

My comment on BG apps vs notifications is based on the (not unreasonable) assumption that a BG app will use many more processor cycles, whereas notifications should be very efficient WRT this. Must admit, I’m surprised they were chewing your battery though. I’m willing to be proved wrong.

Thanks for the discussion.

44 mailjohannes { 02.18.10 at 5:23 am }

I’m not too worried about memory resources with multiple (background) apps open. Virtual memory and speed of page-ins/outs, combined with a large enough working memory and backing store does the trick.
The current iPhone has (if I remember correctly) .5 GB working memory and 16 to 32GB backing store (flash drive).
If the working memory is 1 to 2 GB most problems would be solved. (You could compare this to PC’s of a few years back, and this was more than sufficient for most needs.)
Mac OS uses virtual memory extensively and as a consequence the iPhone OS is fully virtual memory capable.
With a somewhat larger working memory suspending a thread (application) – as some people suggested – is a really good option and this is easy to implement. The OS has the facilities to suspend a tread already (this is a necessity for a multithreading kernel), all thats left to do is linking the ‘home button’ to ‘thread suspend for the running application’.

J.

45 Donald { 02.18.10 at 5:41 am }

@ijoyner
“Your analogy of the freeway also breaks down like Ulicar’s.”

You may have misunderstood. The analogy was not intended to illustrate multitasking. It’s only purpose was to illustrate misuse of the word.

46 ChuckO { 02.18.10 at 8:30 am }

Can we sum it up like this:

Apple choose to allow only one 3rd party app to run at a time for these reasons.
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.

47 marian_ { 02.18.10 at 10:06 am }

There’s another reason why users want multi-tasking between foreground apps: quick switch.
For example, I want to enter an address received in a SMS into the GPS application. I forget the address in the time that it takes the GPS application to load. And it takes sooooo long to load Navigon, that you would not want to exit it just to check an email or something.

Long live jailbreaking and Backgrounder.app

48 cy_starkman { 02.18.10 at 11:07 am }

I couldn’t keep reading all the comments, too many.

1) HCE I think mentioned Navigation/Phone switching. I totally agree, I recently did an extensive journey using the Maps app with a car kit and it wasn’t an issue of network security or battery. It was a serious issue with my own safety. Even simply having to fiddle with the phone just to relaunch Maps was dangerous. Changing songs in the iPod was another example, it sometimes launched the iPod pop up other times it did not, seemingly randomly, once again safety issues when going back to Maps.

2) App hopping, I too find this at least awkward if not sometimes annoying. Hang on, I’ll just close this and open Cal, right okay I close that and back to Mail. Oops, close Mail and get Cal again, right now back to Mail.

3) This one is at Daniel who hasn’t got all the facts and a few commenters who bemoan the lack of user experience multitasking 3rd party apps.

Well actually there is at least one 3rd party app that does run in the background. It’s called the Tom Tom Car Kit App, it’s free and it runs in the background (it actually claims this on the blurb) and provides services to other applications.

So actually Apple does allow 3rd party apps to run in the background already. There just has to be a bloody good reason. I suspect other accessory builders would be able to do the same.

Finally to all the “but you have to jailbreak it” mob, I suppose you are the same people who complain about the Mac OS being so dumbed down and that you are locked out and that Apple controls everything. LOL. It’s UNIX dudes, you can do whatever you want with it, if you know how. If you don’t it doesn’t expect you to. So… what are you really saying, that you are not really that savvy?

49 miloh { 02.18.10 at 12:14 pm }

@cy_starkman:

“… I recently did an extensive journey using the Maps app with a car kit and it wasn’t an issue of network security or battery. It was a serious issue with my own safety. Even simply having to fiddle with the phone just to relaunch Maps was dangerous. Changing songs in the iPod was another example, it sometimes launched the iPod pop up other times it did not, seemingly randomly, once again safety issues when going back to Maps.”

“2) App hopping, I too find this at least awkward if not sometimes annoying. Hang on, I’ll just close this and open Cal, right okay I close that and back to Mail. Oops, close Mail and get Cal again, right now back to Mail.”

Could it not be argued that such scenarios are an indication of one trying to use the wrong tool for the job? I see this quite a bit in technology discussions, not just this one. It’s easier to blame the tool for being inadequate and demand it be changed than it is to blame oneself for choosing the tool and demanding they change. I’m not saying this is what occurred in your situations, I’m just throwing out an alternative view that few seem to ever consider.

50 adamk359 { 02.18.10 at 2:08 pm }

@ulicar – The iPhone OS does allow apps/music/podcasts to be downloaded while using another third party app. I’m downloading an update to an app right now and did a test to see if playing a game would affect the download. It did not as I played the game for 10 minutes and the update was successfully downloaded when I was done. I’m not entirely certain what you are referencing to…perhaps a third party app downloading while another third party app is running, but I’m not certain that there are any third party apps that can download anything unless through iTunes. However, as I understand it, that would simply pause/quit the app downloading and run iTunes in the background downloading said content or update and applying it to the paused app.

Think of it like this, if your running an app on OS X or even Windows…and an update is found by the app and you agree to download it, then the app is still functional and allows you to use it while the app downloads the update safely depositing it on the desktop or wherever you chose to have the update download to. There are some apps, however, that also insist on applying the update at the same time or after it has been downloaded, which would probably start messing with a lot of things if you continued to use the app while that task is running.

On the desktop/laptop experience, it makes perfect sense to run many apps at once. I am a graphic designer and recently found myself running 6 apps at once: Illustrator, Safari, Software Update, Keynote, Indesign and Photoshop. When apps take a lot of time to start up, its just best to activate them all at once and leave them running till you are through with them. I am a neat-freak with my Mac, so whenever I am done with something, Command Q it goes.

On my iPod Touch, though, this is much less of a necessity. I do like to scribble ideas on Brushes, but when I have to go check something else out really quick, I can hit the home button and come back to my art later. Brushes does save the current state of the artwork when you left it. Would I rather the artwork be up and ready when I get back to it without starting the app again? Maybe, but the fact that it saved my art at all is good enough for me. I just simply start the app again (which unlike any Adobe desktop software takes only a second or two) and select the piece I was working on in the app’s gallery and continue my brain dump.

Is it necessary to be running 20 apps at once in the background on a mobile environment? If so, kiss your battery goodbye. This is true for any mobile OS. A lot of it, I believe, has to do with how well the developers code their apps. With nothing else running in the background (wifi, location services or bluetooth), there are some apps and games that can still suck half life out of the battery with even just 20 minutes of use. With all of those services running in the background, the battery probably wouldn’t last more than 10 minutes.

This is a huge deal for mobile devices because they can’t always be connected to a power supply all the time, unlike a desktop or laptop. Try playing a 3D-intensive game on a laptop sans power adapter and it’ll be crying uncle in maybe 1 hour on a full charge…maybe 2 at best. When I do design work on the go and don’t have my power supply, I get about 3 hours out of my 2nd gen Macbook, which is usually more time than I need it for anyway, but if we had the ability to do all that on a mobile device with an even smaller battery…all bets are off.

If I could have the very same 6 apps that I mentioned above running on my iPod and be doing design work on it, the battery would be gone in 1 minute. Apple has the ability and the time to really test their apps and make sure they aren’t using up anymore resources than necessary…even when multiple Apple apps are running. However, third party app developers don’t have this luxury. Well they do, but I think a lot of them are just glad to get something out ASA and then patch it later when necessary.

The point here is, yes, it is capable of multitasking…but should we really be all that mad that Apple is trying to save our batteries from going through a full charge in 20 minutes? Maybe we should be more angry with developers who don’t code as cleanly as they should?

51 ulicar { 02.18.10 at 2:43 pm }

@ 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.

52 HCE { 02.18.10 at 2:43 pm }

@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

53 Donald { 02.18.10 at 3:14 pm }

@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.

54 ijoyner { 02.18.10 at 3:31 pm }

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.

55 miloh { 02.18.10 at 3:32 pm }

@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.

56 ijoyner { 02.18.10 at 4:08 pm }

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.

57 ijoyner { 02.18.10 at 4:16 pm }

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.

58 ijoyner { 02.18.10 at 4:34 pm }

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.

59 ulicar { 02.18.10 at 6:17 pm }

@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]

60 cy_starkman { 02.18.10 at 6:34 pm }

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.

61 fmlogue { 02.18.10 at 6:44 pm }

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.

62 cy_starkman { 02.18.10 at 6:47 pm }

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]

63 Donald { 02.18.10 at 7:32 pm }

@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.

64 Per { 02.18.10 at 8:00 pm }

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.

65 ijoyner { 02.18.10 at 8:01 pm }

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.

66 ulicar { 02.18.10 at 8:44 pm }

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 :)

67 ijoyner { 02.18.10 at 8:54 pm }

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.) :-)

68 ulicar { 02.18.10 at 8:56 pm }

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.

69 ulicar { 02.18.10 at 9:01 pm }

@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 :)

70 ijoyner { 02.18.10 at 9:12 pm }

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.

71 ijoyner { 02.18.10 at 9:20 pm }

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.

72 gus2000 { 02.18.10 at 10:29 pm }

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!

73 harrywolf { 02.18.10 at 11:34 pm }

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.

74 Joel { 02.19.10 at 1:02 am }

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…?

75 ijoyner { 02.19.10 at 1:07 am }

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.

76 jaypres { 02.19.10 at 4:06 am }

@ 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.

77 davitron { 02.19.10 at 6:37 am }

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.

78 benlewis { 02.19.10 at 9:26 am }

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!

79 Netudo { 02.19.10 at 10:45 am }

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.

80 HCE { 02.19.10 at 10:47 am }

@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

81 miloh { 02.19.10 at 12:15 pm }

@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.

82 ulicar { 02.19.10 at 12:27 pm }

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?

83 HCE { 02.19.10 at 1:24 pm }

@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

84 miloh { 02.19.10 at 3:53 pm }

@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?

85 ijoyner { 02.19.10 at 4:12 pm }

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.

86 ijoyner { 02.19.10 at 4:16 pm }

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.

87 HCE { 02.19.10 at 4:18 pm }

@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

88 ijoyner { 02.19.10 at 4:50 pm }

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

89 bazz4 { 02.19.10 at 5:42 pm }

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!

90 miloh { 02.19.10 at 7:18 pm }

@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.

91 fiverone { 02.19.10 at 9:51 pm }

@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.

92 ulicar { 02.20.10 at 1:40 pm }

@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.

93 miloh { 02.20.10 at 2:33 pm }

@ulicar:

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

94 ijoyner { 02.20.10 at 4:29 pm }

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

95 gctwnl { 02.21.10 at 12:54 am }

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.

96 cy_starkman { 02.21.10 at 8:31 am }

@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.

97 ijoyner { 02.21.10 at 3:37 pm }

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

98 cy_starkman { 02.21.10 at 5:16 pm }

@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

99 Tim { 02.23.10 at 4:54 am }

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.

100 ijoyner { 02.23.10 at 4:43 pm }

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.

101 ijoyner { 02.23.10 at 4:46 pm }

Sorry, angle brackets seem to have screwed up the first few paragraphs of last response. They should be:

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

“My only complaint about Apple, is they don’t give you the option.”

No that’s a good thing – not giving you false options. These kinds of options appeal to the “IT” crowd, but are a sign of sloppy systems design. Let me address your idea to show why.

“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.

102 Tim { 02.23.10 at 4:55 pm }

Where’s my hammer and sickle smiley?…..

103 ijoyner { 02.23.10 at 5:13 pm }

Is IBM the hammer and MS the sickle, or the other way around?

104 Tim { 02.23.10 at 5:15 pm }

I’m sure you know the answer to this one….but,

“Your opinion on consumer technology”

105 ijoyner { 02.23.10 at 5:23 pm }

I’m still guessing – could you elaborate?

106 miloh { 02.23.10 at 5:24 pm }

I interpreted it as yet another ill-informed suggestion that Apple is behaving in a communistic fashion.

107 ijoyner { 02.23.10 at 5:51 pm }

I’m not sure Miloh – I’m trying to work out where Tim is coming from. I hope I came across as being civil and reasoned in my reply, even though it (and all my replies) was rather long – it was not the intent to insult him, rather inform him and the many others that might one day stumble upon this group as to why options require deeper thinking to ensure good design, even though they might seem trivial on the surface.

Maybe he wants a real debate on what freedom really means?

108 Tim { 02.23.10 at 5:56 pm }

No Apple are fine. They choose to do what they do not through indoctrine, but through the fact it’s their best revenue model.

The author’s opinion on aggressively reducing choice and freedom as a desirable factor however…..

Don’t get me wrong, I like iPhone, I’ll be buying an iPad, but sometimes it’d just be nice to be able to download a 2Mb file over GPRS while switching to another application, and then being able to OBEX it to another device. The author would argue that my choice to do that is inappropriate.

Do I have to repeat that I like Apple generally? But understand, I’m a technology fan first and foremost.

109 Tim { 02.23.10 at 5:59 pm }

Ah, apologies. It might be across the pond differences coming across as insult/offence. It’s not. Just a strong disagreement on some points.

I genuinely enjoy your writing, and am a subscriber to this feed.

Tim

110 ijoyner { 02.23.10 at 6:52 pm }

Tim – I wish you’d talk directly and not obliquely:

“The author’s opinion on aggressively reducing choice and freedom as a desirable factor however…..”

Who do you mean is the author? I’ll assume it’s me, although:

Background downloading… “The author would argue that my choice to do that is inappropriate.”

I don’t think I could be “the author”, because that’s not what my long piece was about at all, but then I don’t think anyone else has advocated that view either, so maybe you are thinking about me. Everyone has argued that certain background activities are entirely appropriate – it’s the inappropriate ones that Apple is being cautious about, because too many background tasks will cripple your system (could be a good denial of service attack, locking out the user as effectively as a cooperative multitasking system where one malicious app could take over the system by not surrendering at the end of the event loop) and maybe worse could lead to security problems.

My point is, to solve this problem of background downloading, etc, the solution of having an option to keep certain applications resident is not a good solution. I think maybe you should reread most of the posts in this group in that light. Put more simply, the OS should solve the problem correctly, not weigh down the user with options that they have to have some technical understanding about.

My further point is that if options are provided, they should directly be as a consequence of the user’s application and problem area, not part of the implementation and system area. That’s high- not low-level design.

“Ah, apologies. It might be across the pond differences coming across as insult/offence. It’s not. Just a strong disagreement on some points.”

Don’t know where you are and I don’t think you know where I am.

“I genuinely enjoy your writing, and am a subscriber to this feed.”

Well, maybe you are talking about Dan after all.

111 Tim { 02.23.10 at 7:07 pm }

Yes, I’ve been confuddled over identity. Regardless, I’ve enjoyed both of your writing, irrespective of disagreement. Probably why I got confused in the first place. Sorry for the confusion.

iPhone OS is a closed environment, and I think that attributes to part of its success. But, it has also opened itself up to some criticism. Some power/advanced user options, buried somewhere in the application settings, would be a welcome break to being treated like Apple children.

112 ijoyner { 02.23.10 at 8:25 pm }

Tim: “I’ve enjoyed both of your writing, irrespective of disagreement.”

Well, thanks for the interesting discussion (and appreciation), but I have to disagree, because I’m trying to get agreement.

“iPhone OS is a closed environment”

Well, that too is a big statement, even generalization. In what way is it closed? Hardware extensibility? Well, no that is why computing was developed, because the openness is in the software – that’s just a fact of economics, it is far cheaper to develop software than to develop new circuitry to do the same thing. Since the emphasis is on software, the hardware should be developed only in as far as it supports software. (The Burroughs and Apple approach.)

So, that is what software is all about. The iPhone is an open platform in that Apple encourages others to develop applications for it – closed would mean only Apple could do that.

Now Apple also stipulates that applications should be written in certain ways – not access hardware directly, etc (this has long been the case on the Mac, since the 1980s). This is because hardware changes – let Apple write the software layer between applications and the hardware. That is so you don’t have to rebuild or rewrite applications for each new updated hardware version of the device that comes out. (See my point about IBM sysgens above.) This futureproofs your applications – for your current investment, you can continue to reap the rewards.

Note I say that Apple has provided a “platform”. I recently had a letter published in the Communications of the ACM, since Michael Cusumano (Professor of Management and Engineering at MIT), wrote an opinion piece that Apple and MS are fundamentally different because Apple, just makes frivolous products where MS makes serious platforms.

Cusumano was completely wrong (and just having a gratuitous Apple bash, which I did not let him get away with). MS might seem to be more open because they allow applications to do more dodgy low-level things, but in fact this is a less of a platform than Apple, which provides APIs that are more stable than low-level interfaces. The measure of a good and open platform is high-level APIs, not low-level. Because of correctness and security problems of low-level interfaces, applications-level developers (including games developers) should be prevented from this level – in that sense it is closed – good. Closed to malicious low-level hackers.

“Some power/advanced user options”

Why should options be seen as for power/advanced users? Maybe some are. But no actually Apple makes this simple thus facilities that used to be only accessible by power users are accessible to all. This actually seems to upset the “power” users because now they are out of a job. Or they no longer are the secret owners of that “power” incantation. Again, I advocate very careful design of options – they should not just be added in a tasteless fashion, but very carefully thought about.

An MS example of this was that soon after the release of Windows 7, a message went around that if you entered some great long hex code in somewhere you could get extra access to features that only internal MS developers had access to (I think Registry options from memory). Sorry, but that’s rubbish.

Another example is the C programming language. The advocates of C long argued that programmers should be trusted (a language should be open). Well, they trusted programmers to not do things like overrun buffers, etc. That too was just false “this has got to be open” think.

For a start, a major source of error is buffer overruns. But further, malicious programmers can use overruns for all sorts of mischief. This desire for “openness” must cost the industry billions per year – so we are now living with this C legacy, and millions are still brainwashed into thinking this is a good situation.

Well, again Burroughs got that right (I encourage people to research Burroughs systems on Wikipedia and further). Buffer overruns, out-of-bounds array indexes, and a whole lot of common errors – both programming and security – were prevented in the hardware architecture. But again the IBM proponents would have seen this as being “closed” and spread FUD that you would not be able to do certain key things on Burroughs systems, because, now like Apple systems they are “closed”. That’s all a lie, just like saying Apple produces closed systems is also wrong.

(In fact, Steve Bartels who did C on the Burroughs/Unisys systems engineered it to do buffer overrun detection, which showed up a whole lot of bugs in software that came from Unix.)

Lastly…

“a welcome break to being treated like Apple children”

Designing good products (platforms) has nothing to do with treating people like Apple children. It is good design. Now like all design, you can argue about the effectiveness of it, etc (as we are). If anything, I find Microsoft’s approach treats people far more like children – in general IT people have to run around enterprises holding people’s hands to do things. Apple, by contrast, puts this power back into the hands of the end users, so in fact is the antithesis of “treating people like children”.

113 miloh { 02.23.10 at 8:51 pm }

@Tim:

“Some power/advanced user options, buried somewhere in the application settings, would be a welcome break to being treated like Apple children.”

But that’s essentially what it’s all about. These devices are aimed at technology novices or those who have relatively simple needs. They’re not intended for power users. It’s like complaining that a little Linksys DSL router doesn’t have all of the capabilities or settings of a carrier-grade Cisco 12000-series unit. It’s not supposed to.

114 ijoyner { 02.23.10 at 9:17 pm }

Miloh: “These devices are aimed at technology novices or those who have relatively simple needs.”

No, I very much disagree with that. These devices are designed for people with the need to carry around a small mobile device with some simple on-the-go computing needs as well as connectivity needs.

A lot of very smart technology-savvy people are using iPhone (and I suspect will use iPad), so it’s really nothing to do with novices. That Apple can make such sophisticated devices easy to use is good design, not dumbing down.

Yes, for full-blown computational, page layout facilities, use a desktop or laptop. Obviously again iPhone can’t – and should not be expected to – match these systems. But again this has not to do with dumbing down for novice users. iPhone is not limited by the need to design for novices, but for the practical needs of a wide class of users in a small form factor.

You could say iPhone is designed for simple uses, not simple users.

115 ijoyner { 02.23.10 at 9:33 pm }

Just as another postscript – Bad design often looks sophisticated and complex, good design too simple to be true.

Don’t be fooled by this.

116 miloh { 02.23.10 at 11:41 pm }

@ijoyner:

I think you misread what I wrote. I said novices OR those with relatively simple needs. You echoed the second part.

117 ijoyner { 02.24.10 at 1:27 am }

Hi Miloh: “These devices are aimed at technology novices or those who have relatively simple needs.”

I’m glad you qualify that to be a logical or, so we are most likely in agreement. However, linguistically the sentence is ambiguous since it can be interpreted as qualifying “technological novices”. Such is the vagaries of language and maybe the cause of many false arguments on the Internet.

I’m not really sure if it’s just for simple needs – you can still write some sophisticated apps finely focused to certain domains that need exactly the kind of iPhone, iPad portability.

I don’t think we have really seen the start yet – many apps seem to be toys, but they don’t need to be.

118 Tim { 02.24.10 at 2:47 am }

iJoyner

Quite a bit to respond to, so I’ll try to keep it short.

You argue along the lines that simple concise functionality is good design. I agree to some extent, but designs are usually born of functional and non-functional requirements. In the case of consumer devices, these are in turn driven by market demand.

I would argue that good design could be measured by the relative contentment of those that consume that design. Equally measured by how many units are purchased and shipped, although that is also relative to market competition, of which Apple haven’t had any real contenders for some time, in the case of iPhone.

The loudly touted iPhone OS 4.0 will shift their design more in line with market demand. It has to, to fend off competition and keep its growing base of consumers interested. Apple is starting to face stiff competition from Android, and soon to be Windows Phone Series 7. It’s believed that iPhone OS will have a method of running background resident applications, which is in line with consumer demands.

And when I said closed, perhaps it was the wrong choice of words. Locked would have been better. One application store, which they commercially control and monopolise. Microsoft got into a fair amount of trouble globally for ’similar’ activity.

Design should be a slave to the consumer, not the other way around.

119 cy_starkman { 02.24.10 at 2:53 am }

@miloh

curious.

I didn’t realise that a sys admin of a building sized server farm. Or a sound engineer in a large production studio. Or a lighting engineer driving an opera in the Sydney Opera House…

Were novices with simplistic needs.

It never clicked that the pilot of a 747 was so childlike and inept. Or maybe it’s the person trapped under a building turned to rubble who saved their life with a little toy.

Perhaps you refer to the software engineer or the physist. Or indeed the speech pathologist helping a child sound letters.

No, no, rather the composer on a plane writing their next score.

Yes all these simplistic, novice like… Shall we call them brain impared people?

But of course, you were refering to your own lacking in ability to comprehend the use of a device outside what is spoon fed to you in an hour presentation.

I look forward to the chortles of laughter from my friend who does control the lighting rig of the opera house with his naive little handheld toy when I tell him of your drivel that only better illuminated your tiny use of tools.

Hammers build houses you know, not just crack nuts. Guess what, they can do both. Fancy that.

120 ijoyner { 02.24.10 at 5:38 am }

Tim: “You argue along the lines that simple concise functionality is good design. I agree to some extent, but designs are usually born of functional and non-functional requirements.”

Functional and non-functional requirements are not design (I know this isn’t exactly what your say, but maybe I can expand on your point). For a set of requirements you can have many designs – the set of those that satisfy and the set of those that don’t. Let’s discard those that don’t. But there are probably still an infinite number of designs that satisfy the requirements. Out of these are the set of good designs and bad designs. One of the important characteristics of a good design is that it will be a simple design to satisfy the requirements. Bad designs could still satisfy requirements.

“The loudly touted iPhone OS 4.0 will shift their design more in line with market demand.”

Yes, every release shifts towards market demand, but market demand is also shifting. Certainly running coresident applications is not a market demand – that is merely one implementation – one possible design out of the set of designs.

But “loudly touted” I hardly think so, not at least from Apple. There might be some speculation around from non-Apple quarters, but they are not touting it – only Apple can do that, and all they have right now is iPhone OS 3.2. I can’t recall seeing anything about OS 4 from Apple, just mere outsider speculation. Apple don’t tout and they don’t hype in contrast to popular opinion.

Further a lot of market demand stipulates “Microsoft platform” – well to satisfy that market demand, the rest might as well pack up and go home. You see, a lot of this market really don’t know what they want, so just abrogate control to Microsoft and previously IBM. That is dangerous, because Microsoft and IBM weren’t controlled by the market – rather they controlled the market. That’s the dangerous abuse of monopoly position they were in. I’d love to have a link to a PDF of Richard DeLamarter’s “Big Blue: IBM’s Use and Abuse of Power”, but can’t find one and this book is very rare – maybe I’ll scan my copy one day – it really is essential reading to understand these companies and why being a monopoly is not illegal, but abuse of monopoly power is.

“Apple is starting to face stiff competition from Android, and soon to be Windows Phone Series 7. ”

Are they? Android looks interesting, although the JVM is weird – registers rather than stack – do these people understand anything about stack machine design like mapping TOS to registers? Oh well.

And soon-to-be-released – I’d hardly call end of 2010 soon, especially in this industry. I’d rather call Windows 7 mobile loudly touted and hyped since its arrival is so far off.

Lastly, I do share some concerns about the app store model. However, it does make sense – every application can be traced to a creator. Break the rules and Apple removes your app. Now you have to trust Apple, and some people will feel aggrieved that their apps may be removed because they have not played the game correctly. I am concerned about that.

Apple also makes a cut on every app, but then so does any distributor. But developers benefit too, in that it’s an easy mechanism to getting work published. It is a form of protection though, although perhaps paternalistic. Oh well.

Well again, there’s a lot there, part agreement and disagreement with you, a lot of other points, so please don’t take it as entirely arguing against you.

121 ijoyner { 02.24.10 at 5:46 am }

CY: “I look forward to the chortles of laughter from my friend who does control the lighting rig of the opera house with his naive little handheld toy when I tell him of your drivel that only better illuminated your tiny use of tools.”

I’d like to see that sometime. I really liked the Radio National By Design program on Utzon recently, and the way Ronald Sharp kept the vaulted ceiling in the concert hall in order to fit the organ (was that functional, non-functional or compromise?):

http://www.abc.net.au/rn/bydesign/index/date2010.htm#January

122 miloh { 02.24.10 at 11:55 am }

@cy_starkman:

As has already been addressed, the way I worded that statement was ambiguous. I apologize for the lack of clarity, but please read the prior posts and you will see that I did not actually say iPhone users are novices with simplistic needs. I said the iPhone was TARGETED (i.e. marketed to) those who are either novices OR who have RELATIVELY simple needs (i.e. they do not require the power of a full-blown computer in their hand).

For the record, the following are some of my daily uses for the iPhone:

* Network configuration and control
* Industrial equipment control
* Project management
* Scientific data analysis
* Vehicular diagnostics
* Environmental control

123 cy_starkman { 02.24.10 at 8:04 pm }

@miloh

Aww, what a wasted effort of a beat up.

So to your actual point. I totally agree. Apple never shows the really heavy lifting apps for the iPhone on ads.

Actually this has been my biggest complaint about the iPad launch, that Apple didn’t bother to show it for what it really has the scope for and as such a whole host of complaints. iWork and the ESPN were the only worthy demos. They could have shown it with a VNC type app running a virtual session of Windows 7 and Office as the ultimate thin client (that has a whole host of other features)

From a marketing perspective though, consider this.

Historically tech has had to make the slow march down from research, to military, to government, to big business, to smb, to early adopter, to main stream. This takes a long time and any point along the way can block it, by lobbying, deep discounting, a range of things.

BUT

If you market your thing as mass market toy, you know what happens? A bottom up march, which is difficult to stop. Main stream gets it, brings it to work, work supports it cause its beating down the doors and then its all over the place.

It is a strategy to avoid IT purchasing choices at high levels which lock you out. Apple has no hope converting enterprises. BUT. If they swamp enterprises in people using their product. It gets supported, played with, considered, accepted.

At the same time, the early adopter crowd who (sad but true pun) “Think Differently” and boom you also have your product being demoed doing the really interesting things it Can Do.

If Apple pitched the iPhone as a Remote Server Admin saviour how many would they sell?

This form of marketing has only been recently possible (for tech) due to price/volume etc. I wrote an entire plan around it in 1996. I called it and a range of other strategies System 180 and Open Business. It turns stuff on its head

Thanks for not sustaining a flame war

124 Ten Myths of Apple’s iPad: 6. It needs HDMI for HD video output — RoughlyDrafted Magazine { 02.26.10 at 3:50 pm }

[...] 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 home theater people: 6. It’s a myth [...]

125 pelikan3 { 03.20.10 at 5:08 am }

Myth 9: It doesn’t multitask… while I can’t and won’t argue technological semantics, and I will agree that there may be a deliberate logic to not running concurrent, viewable apps on the iPhone, the iPad needs “true” multitasking in order to be more than just a giant iPod touch. If it can’t do what pretty much all laptops and tablet PC’s can do (i.e., open and multiple apps and view multiple windows concurrently), it won’t do enough to carve out a piece of market share. I love the idea of the device, but, I need to be able to do everything I can with my iMAC, from emails and word docs, to possibly editing my website in iWeb and pushing updates. Without full blown iMac capability, I have to wait ’til I can afford an iBook.

126 davitron { 04.27.10 at 6:57 am }

Hi,
I juste reread my last comment in this discussion to check what I guessed right.
I said:
<>
I was right to anticipate that a kind of multitasking with context freezing and system wide APIs for true core multitasking was for OS4…
Would be fun to take this discussion again in the light of the new OS version.

My new two cents for OS5: multiuser and cloud sync.

Bye

You must log in to post a comment.