iPhone SDK: Unequal and Aware of It

March 16, 2008

John Gruber has been writing a lot about the fact that 3rd party iPhone apps can’t run in the background. He is trying really hard to make us understand that this is a good thing, and really for our best interest.

(Note: if you haven’t read the various articles I’ve linked to, you should, because I’m only quoting bits of it, assuming you are familiar with them.)

In Foot, Meet Bullet John wrote:

… there are other completely different cool things about a system like the upcoming 2.0 iPhone OS, primarily the fact that no matter what you install from the App Store, you can’t screw up your system.

Sure you can, as long as you use Apple’s own apps. What Apple doesn’t want to let you do is have that same freedom with 3rd party apps, which are separate and unequal, if you’ll pardon the expression.

He goes on to talk about a theoretical problem where you install 10 apps from the App Store and some of them cause battery drain:

How are they even going to know which apps do continue to run in the background? They won’t. A likely reaction would simply be to regret ever having junked up their iPhone with any third-party apps at all.

One problem with this argument is that Apple is perfectly happy to let you drain your battery for their apps.

In One App At A Time John wrote

I noticed a significant increase in battery life after I switched the Mail app’s auto-checking interval from 15 minutes to 60 minutes. That’s just one app.

and in The Flip Side of the Multitasking Argument he notes

Williams does have a good point regarding AOL’s demo of a native iPhone AIM client during the SDK introductory event: an IM client is exactly the sort of app that’s potentially a lot more useful if it continues to keep you logged in even when the app isn’t frontmost. It’s unclear, though, whether Apple has granted AOL special dispensation from the standard no-background-processing rules, or whether the AIM client AOL is working on will indeed only work when it’s the frontmost app.

If Apple grants AOL “special dispensation” it had better be in the form of “iChat for iPhone is a standard app that comes with iPhone Touch OS 2.0” because if one third-party developer gets special treatment, you can better believe that other developers are going to be irate.

If iChat becomes a standard part of the iPhone OS, then Apple has clear precedent for allowing it to work in the background, like email and SMS do (in some way/shape/form).

Assuming that iChat for iPhone is not part of the actual OS, how would Apple ever justify giving AOL “special dispensation” anyway? Just because their app would work better if left in the background? How would that be different than any other app that could make that argument? Because AIM is popular? So is Twitter, so why won’t my Twitter client be allowed to operate in the background? RSS feeds are also popular, so why can’t NetNewsWire for iPhone (the first app I will buy after iChat for iPhone, by the way) fetch new feeds in the background?

If we are making the case for “Apple isn’t going to let you run apps in the background because it will hurt battery life” then the biggest Enterprise feature of iPhone Touch OS 2.0 is a bit of a sticky wicket: ActiveSync.

I fail to see how ActiveSync will be anything but a huge drain on the battery. It cannot work without being able to be run in the background. Why will this be allowed? Because it’s something that people want (otherwise why would they be licensing it from Microsoft?) and it will be part of the official OS.

Apple wants it both ways. They want to be able to preserve background functionality when and where they say, when they deem it necessary.

I hope to the highest heavens that they won’t offer an iChat app that lacks a background mode. To do so would be frustrating and confusing.

Let’s go back to an earlier statement John made:

How are they even going to know which apps do continue to run in the background? They won’t. A likely reaction would simply be to regret ever having junked up their iPhone with any third-party apps at all.

The presumption here is that there is no way to communicate to users that an app will continue to run in the background.

Of course there are ways, Apple just hasn’t given us any to use.

For example, apps can be run in “Background Mode” could be required to ship with preference turned off, and turning it on could pop up a warning message:

“Running in the background will decrease battery life. Do you want to enable Background Mode? [Cancel] [[Enable]]”

Apple could adapt a notice from AIM on Windows (please, contain your shock and horror). When you go to close the AIM window on Windows, it alerts you that the app is still running in the background. Given that the iPhone only has one button to pull you away from your app, it wouldn’t be too difficult to trap a button push and have a notice pop up:

“Leaving iChat will prevent you from receiving instant messages unless you enable background mode. However, background mode will increase battery usage. [Cancel] [Enable Background Mode] [[Quit iChat Anyway]]”

Are these brilliant UI ideas? Certainly not. I’m sure Real Mac Developers are still recovering from the idea that we might adapt anything that Windows does. Others might recoil at the idea that pressing the iPhone button would do anything but immediately bring up the Springboard.

My point isn’t that Apple should do any of these things; however, the idea that background mode would necessarily have to be done completely without any communication to the user is bunk.

John is 100% right that it makes more sense for Apple to put this restriction in place from the beginning because they can always relax it in the future. I think that we’ve already seen that Apple is willing to listen to feedback, both about the iPhone in particular and Mac OS X in general. If a small percentage of people complain about this limitation, I doubt it will change. If a large percentage do, I suspect it will change.

With these restrictions, Apple continues to do its best to protect itself against one of the iPhone’s biggest drawbacks, the lack of a removable battery. The lack of 3G, true GPS, and now background mode have all been explained away (largely, but not exclusively) on the basis of “They would be hell on battery life.” Curiously, I haven’t seen a lot of push-back pointing out that the battery restrictions are only necessary because of the way that Apple designed the iPhone.

As a former Treo user, I have seen the hell that can be loosed by app conflicts. I welcome the idea of App Store, of Apple being a gatekeeper for what gets on the iPhone. However, once I have installed the software that I’ve paid for, I really want to be able to use it in a way that suits me best. Apple doesn’t have to default to letting me shoot myself in the foot (to use John’s metaphor) but I should have the option to drain my battery via iChat, Twitter, RSS, or Email if I decide those are important to me. Right now Apple has decided that only Email is worthy of killing my iPhone battery (promising to make that worse with ActiveSync). That is a decision that belongs to me, the owner of the iPhone who chooses 15 minutes instead of an hour (or manual)

…imagine a situation where a user installs five background-capable apps, none of which, on their own, significantly affect system-wide performance or battery life, but which in combination all running simultaneously, do. They’re all using RAM, all using the CPU, and all periodically using the network. What’s the advice for the typical user supposed to be? “Have fun with the App Store, but don’t install too much crap”?

This is addressed by making the user manually enable background mode on each of them. Hopefully the iPhone owner who is smart enough to purchase the iPhone, identify software she would like to use, and manually enable background mode would then be smart enough to figure out the connection between those apps (each of which have told her about excess battery usage when she enabled background mode) and the faster-draining battery.

There are ways of addressing these potential problems that go beyond Apple’s blanket “No, You Can’t” and we, as customers and users, are perfectly within our rights to expect Apple to listen to us. Sticking their fingers in their ears and pretending not to hear us, or nodding and smiling while patting us on the head and saying “Trust us, you really don’t want what you think you want, because that non-swappable battery we gave you can’t handle it” is not for us.

Previous post:

Next post: