Chris Alexander

On Engineering

Why The iPhone Has Made Developers Soft

24th January, 2010

I have spent many a blog post and tweet bemoaning Apple’s “ludicrous” and “draconian” App Store policies; but recently I’ve been power-using my iPhone for all kinds of things, and I think I’ve found another problem with iPhone applications.

To be fair, this probably isn’t an issue just with iPhone developers; more an issue with some programmers working in limited environments. However, the iPhone remains my scapegoat of choice for the moment, and the title stands.

How This Arose

As we all know my iPhone is about as far away as possible from Apple’s glowing utopia of control and user lock-ins; it’s unlocked and running on T-Mobile, and jailbroken.

The first app I installed after breaking it was Backgrounder; it is quite simply the app that makes the iPhone. For when I’m power-using the iPhone (and its battery lasts about an hour), I can have up to 5 applications running at a time and giving the 3G and the processor a complete hammering.

One thing I noticed about this, however, is how narrowly-minded these applications are designed and built.

This is not necessarily the developer’s fault, more the specific requirements that Apple set out before them. Let me give you some examples.

Inefficient, Unreliable, Inconsistent

Remember those 5 apps I was running at the same time? They weren’t doing that much.

My iPhone fell over and died when I tried to run Tweetie, Facebook and NetNewsWire at the same time in the background. These, of course, are fairly complicated apps that are doing a lot of stuff in the background, so hardly surprising.

Yet if I was to run Mail in the background, it works terribly, and doesn’t ever update (much like if it isn’t running then, really). Don’t forget no push either, as Apple won’t let me near their push servers with my unlocked phone.

The Problem

Take a look at the Facebook application. When I run it in the background, it continues to give me alerts for new chat messages, and changes its badge to show the number of notifications I have.

This is above and beyond the functionality of what you would normally expect in an iPhone app. If you were running it on a normal iPhone, the only time you would expect that behaviour is if you had the Facebook app open and touched the screen on the iPhone every 30 seconds to stop it going to sleep and deactivating the app.

So why is it that all the other apps can’t be this well thought-out and written? Why did the Facebook app developer hand it over to someone else?

Shall We Blame Apple, Or The Devs?

Ok ok, I take back the title.

This is, once again, an effect of Apple’s policies on their developer community.

Because iPhone developers only expect applications to work in such a stringent subset of use cases, they only take account of these cases. But would it be too hard for developers to push that bit further and make some absolutely killer apps that work in the background too? Probably not that much.

But while Apple’s reign of terror in the sanctioning of apps that even begin to hint at this wonderful opportunity to create something truly outstanding for users on the go, it isn’t going to happen.