In my
previous blog entry, I pointed out that advanced functionality and simplicity are not mutually exclusive. Yesterday's introduction of multitasking for iPhone OS was, from this perspective, a huge disappointment. Apple has left out most of the functionality that makes multitasking useful on a small screen, and is spreading FUD about the alternatives.
It is with these two comments I take issue:
1. "In multitasking, if you see a task manager... they blew it. Users shouldn't ever have to think about it."2. "It's easy to do this in a way that drains battery life, and a way that reduces performance of the foreground app. If you don't do it right, your phone will feel sluggish."The first one is the important one. I'll discuss the second one at the end.
Multitasking with a Powerful AND Simple Task ManagerWe're used to Apple offering a more polished user experience than the competition. I have no doubt the iPhone task switcher will be polished for what it does, but simple polish has never been the whole story. A very important part has been how Apple improves an immature existing function to the point where it's truly useful for users while remaining easy to understand. The iPhone's task switcher fails badly here.
It is no more simple than Nokia's ancient task switcher that's used in s60. S60v5 could be prettier, but it's the same kind of UI. You access it by pressing and holding the menu button (double click on iPhone), after which you have a scrollable list of apps you can select by single clicking.
The s60 task switcher, standing in for the iPhone task switcher.
But here's the kicker. The s60 task switcher isn't really something that attracts people to multitasking on a phone. It's just a menu. It gets the job done for people who already know they want to multitask like on Windows 95, but that's it.
Live previews are what make multitasking great on a phone. Even better, the Maemo 5 task manager has managed to solve virtually all the associated problems while
reducing complexity. Wasn't that supposed to be Apple's forte?
The Maemo 5 Task Manager Let's see some of the arguments against multitasking first:
- Users won't know to use the task switcher
M5 gives the task manager focus every time an app is closed, and the task switching button is the main user interface button. The task manager view is a central and thought out part of the user interface instead of a plastered on task switcher.
- Users will leave too many background tasks open
On M5, users intuitively want to close unnecessary apps, since the task manager starts looking cluttered. Degrading by guiding the user towards good behavior is better than trying to guess what apps to close. Unpredictability is very bad.
- Too many buttons and menus
M5's task manager is an ultra-simplistic grid of previews with X-buttons. Clicking outside of the grid will dismiss it and return to the desktop.
- Users won't understand the difference between closed and open apps
M5's Task Manager clearly divides the concepts. Open apps have visible previews and can be manipulated directly. Closed apps are opened from an easily accessible menu, which is secondary to the task manager.
Users immediately see and understand, since open apps are not icons. It's like pulling your notepad out of a drawer and placing it on your desk. You'll see it there while doing other things, and it's clearly consuming desk resources. When you're done with it, you put it back in the drawer.
But the drawer is not the primary interface. That would be silly. You only return to it occasionally.
Here the iPhone actually makes things more confusing. Not only are open apps icons, but if they can close automatically, how will you know whether you should go to the task switcher or the application menu? And if they return to their previous state, what's the difference between the task switcher and the application menu?
The benefits of proper multitasking are many:
- Every time you switch tasks, you see if something has happened or completed in any background app. (This is apart from notifications, which work as you would expect. But not every event can or should have a notification.)
- Every time you switch tasks, you'll see reminders you've left open after looking at them.
- Switching apps on M5 is so intuitive you'll start using your phone in a completely new way. Even novice-unfriendly tasks like backgrounding a phone call to look at your calendar become more friendly. It is a myth that mobile multitasking is too complex for the average user - it just needs to be made easily understandable.
- You can have multiple IM windows open and immediately recognize which one you want to switch to, and how conversations are progressing.
- You can always keep a note-taking app open in the task manager. Returning to it is faster than using the application menu.
Leave whatever you want open, and you'll see it every time you switch tasks - maybe a todo list in a huge font?
All this with an interface
simpler than s60, and conceptually more intuitive than iPhone OS.
The Mostly Imagined Performance IssuesTaken at face value, the quote is correct. Badly behaved background tasks can easily destroy performance. But runaway processes are really a completely different issue. Properly behaving applications will not affect the system adversely.
On the iPhone, background programs are suspended, but can request Apple-allowed tasks to continue. Working with this kludge should not be necessary. Allow me to demonstrate. I started several third party programs in the background, and then checked up on them after a while:
ps -o fname,stat,wchan -C vim,drnoksnes_start,mgutenberg,xournal,gboggle
COMMAND STAT WCHAN
gboggle S sys_poll
xournal Ss sys_poll
vim Ss+ select
mgutenberg S sys_poll
drnoksnes_start Ss unix_stream_recvmsg
drnosknes_start Ss sys_poll
Every single one is blocked in a system call, waiting for input. If the system gets low on RAM, they will be paged out instead of state-saved and killed, which is an ugly way of accomplishing virtually the same thing.
To protect the battery, the OS can pop up a runaway process warning dialog if the CPU is pegged by a background app for more than a minute, but that's probably too ugly for Apple. Other manufacturers should find it happens so rarely the dialog is an elegant solution.
Personally, I find the CPU/RAM monitor applet very comforting, but most novices won't want to use it. It's reassuring to see it at 0 most of the time. Here I'm playing a game:
Still, no mobile application should ever need to do anything in the background that the user didn't explicitly request: playing or indexing music, downloading a large web page, multiple simultaneous IM conversations, etc. But on every such occasion, the user will intuitively understand that the backgrounded app is doing something that is more or less CPU intensive.
And with M5's task manager, users will never forget they started something, because they'll see the preview soon enough.
Clearly even well behaved background apps have a small performance and power penalty, but what really kills the battery is always on network connections. Again, that's another issue entirely.
The real motivation for not allowing normal multitasking on the iPhone is that Apple wants a fluid UI 100% of the time, not 99%. Even 1% of sluggishness will remove some of the "magic". It doesn't matter whether users know that it's the heavy processing they themselves started, because the iPhone will subconciously look imperfect during those maybe 10 seconds.
The lack of proper multitasking is a high price to pay for 10 seconds of pristine behavior.