chester's blog

technology, travel, comics, books, math, web, software and random thoughts

iPhone Development Rants

10 Oct 2008 | Comments

(previously published on the MIH SWAT Blog)

When we talk about Apple, mankind is pretty much divided into three camps: lovers, haters and developers. Seriously, I never thought the day would come when I’d say such a thing, but the fact is: Apple needs the other Steve. No, not Woz (he is on-and-off there, but that’s another story). I mean our our sweaty, chair-throwing, monkey-dancer friend Steve Ballmer:

You can say anything you want about Microsoft – but one thing is undeniably true: they treat third-party developers as their most valuable resource. Since the first ages of 16-bit Windows consolidation, it was clear that as long as their platform was the mainstream software-running machine (and the minimum bar for hardware support in the PC world), their reign would be safe.

And that translates into treating their developers well. Yes, they have to pay some fees here and there, but they are rarely left behind. MSDN and competent MS staff reveal all you need to know to develop any sort of application for Windows; backwards compatibility is taken to extremes; and all sorts of developers (from corporate form cut-and-pasters to low-level hackers) are treated as first-class citizens.

In contrast, no matter how sexy the platforms are that Apple makes available for your software to run on, they make it painstakingly clear that users are number one. Cupertino doesn’t mind at all if a tiny minor new feature creates one or a dozen hurdles for developers every other week. This is not “right” or “wrong” (and both approaches have shown their results), but it is something to be aware of when you consider developing for an Apple platform.

This was not seen as much of a problem for most developers, since Apple has always been a niché market (even with Mac OS X putting the Macintosh onto the radar for people outside the Mac cult). However, January 2007 saw the announcement of the iPhone, and since then the handset has received pretty much all types of review – from the Apple fanboy praise (blind to the most obvious flaws and limitations) to the most radical states of denial that ignore the (r)evolutionary aspects of the platform.

In the end, however, the number of iPhones on the market (no one has the exact real number, but it can be extrapolated to be at least 4 million after the worldwide 3G expansion) was the only important thing for developers – those numbers turn it into a big enough market to be considered by anyone that wants to deploy sophisticated mobile software applications.

(J2ME possibly beats those numbers, but having a unified platform for development is an advantage that Jobs has pushed since the early days of the first Macintosh – even when it was almost against common sense).

Development was not allowed by Apple during the first year of the iPhone’s existence, but developers found ways to bend the rules, using alternative ways to build their apps. Distribution was, however, the main hurdle: users needed to “jailbreak” their devices to get applications via alternative channels such as (a simple, yet fragile distributed system) and Cydia (a wrap-up of the apt distribution system, which is one of the backbones of software distribution in the Linux world).

The introduction of the App Store (Apple’s official distribution system) changed the landscape, not only by introducing a legal (and ubiquitous) alternative for developers to distribute apps, but also by giving them a nice opportunity to piggyback on iTunes as a distribution channel. This approach of not having a middle man is an enabling factor for thousands of small-scale developers: one little dirty secret of the mobile application world is that mobile operators (which own the distribution and revenue channel) rarely talk to small developers – they have to market their apps by means of “publishers”, which pretty much stifle innovation and initiative in this field.

Even if you want to distribute your application for free, there are operators and handset makers that will make it hard (if not impossible) for users to download your app or transfer it via Bluetooth from other devices. Apple’s App Store distributes free content for free (well, you have to pay $99 for the iPhone Developer Membership, but it’s a fixed, once-off cost).

It’s not all roses, however: Apple imposes all sorts of restrictions – ranging from technical ones (you can’t let an application do background processing) to operational (registration as a developer takes some time to be processed; your app can’t duplicate functions on Apple’s apps; if they don’t like it you are out; you must submit source code to their approval, and nobody knows for sure how compatible with licenses such as GPL their model is). Besides that, the code signing process can be a burden to developers not used to it (even if you decide to ignore Apple and limit yourself to jailbroken iPhones).

It is a “my way or the highway” situation – but recently the first handset with Android (Google’s operating system for mobiles) hit the market. Some consider it underpowered, but others are excited by the tricks it has on its own (while some even question its openness). It is a welcome addition not only for users/developers who won’t be interested on Apple’s offerings, but also gives iPhonophiles the hope that competition will put some pressure on the Big Cupertino Brother to force it to relinquish some of the grip it has on the market.

I have high hopes that this will happen. But even if it doesn’t, it won’t stop a legion of developers (myself included) from working working on their $0.99 app, in the hopes that will be useful for one million people – and that its success will contribute to their own retirement. That is a really hard argument to beat, and it will keep the iPhone going for a long time. But unless we start to see some retired iPhone Developers on their yachts, Apple would do themselves a favor by treating iPhone developers a little bit better – or they will jump ship at the first opportunity – be their destination may be Android or otherwise.