Your perception of Apple's iPhone probably has a lot to do with your personal philosophy of computing.
Do you want unfettered freedom to run anything, whenever and however you want it? Or do you only need a few vital applications to make you happy, and really just want the damn thing to work reliably?
In these, the early days of the iPhone, it's very clear that Apple has taken a very cautious approach to independent iPhone developers and software development. Contrast that approach with Microsoft, which built a PC empire catering to developers' needs, and would like to expand that into the mobile realm.
However, developing software for mobile devices has been, and seems like it will be, very different from the development process for PCs and Macs. How this give-and-take between operating system developers and application developers evolves--not just at Apple, but for smartphone development in general--could dictate the evolution of truly mobile computing.
If limiting the role of independent developers helps create secure and reliable computers, doesn't that seem worth it to everyone? (Except, of course, to the developers.) That seems to be Apple's position, although the company declined an interview request in search of a clearer picture. The vast majority of developers are professionals or hobbyists who wouldn't dream of writing inferior or malicious code, but viruses, malware, and poorly written applications still proliferate.
On the other hand, imagine how you'd feel if another company controlled everything you can or can't do with its product after you brought it home. I don't think people would be too thrilled if Honda decided that the after-market installation of a third-party stereo voided the warranty, based on the rationale that the car is now much more likely to be stolen.
Such is the hubbub over the iPhone software development kit, which is still a work in progress. Some developers, captivated by the promise of the iPhone's unique combination of touch screen, accelerometer, and Mac OS X goodies, have been chastened to learn that they won't be able to create applications the way they want because of restrictions imposed by Apple on development tactics.
There are several bones of contention, but the primary concern seems to be the decision to prohibit third-party applications from running in the background. Apple warned developers of this restriction in the iPhone SDK documentation, and urged them to develop applications that are capable of quickly saving information, and then closing, when the user decides to switch to another application.
This policy makes it extremely difficult to create Web-aware native applications, wrote Hank Williams, a blogger working on mobile-software development. "The issue of background processing is *the* issue for a mobile device because it is key to two things: telling the world about your status in some ongoing way, (and) receiving notification of important events."
That makes sense; remember that friend or relative who got a mobile phone but never turned it on? That practice greatly diminishes (although some might say it enhances) the value of a mobile communications device, and one-way communication is not what has made the Web so interesting in its second decade.
The thing is, you can't expect everything from the PC Web world to work the same way on a battery-operated device. Craig Hockenberry, another developer, agrees that background processing is nice to have, but impractical right now on anything with a battery. (Thanks to John Gruber at Daring Fireball for the links.)
Hockenberry built an unofficial iPhone version of Twitteriffic, a Mac application he wrote that gathers "tweets" from people you're following on Twitter. An early version for the iPhone had a component that ran in the background to automatically gather tweets every five minutes.
The result? "Both the EDGE and Wi-Fi transceivers have significant power requirements. Whenever that hardware is on, your battery life is going to suck. My five-minute refresh kept the hardware on and used up a lot of precious power," Hockenberry wrote.
Other mobile operating systems such as Symbian, however, don't restrict processes from running in the background. And Nokia's N95, which runs Symbian, can browse the Web for longer periods of time than the iPhone, according to one test.
So what is this really about? Maybe it's about avoiding the mistakes of the past.
Software developers were the lifeline for PC users before broadband Internet became pervasive. If you wanted to do anything interesting with a PC, you needed application software, and so developers of both consumer and corporate applications were endlessly courted by Microsoft.
That brought the world tons of great applications. But it also brought security nightmares, blue screens of death, and sluggish computers that hog resources. The mobile world can't afford to let that all happen again; people have gotten used to a bit of "funk" from their PCs. They don't tolerate that from their phones.
So, don't expect to see Apple CEO Steve Jobs pacing the stage at the Worldwide Developers Conference in June while screaming "Developers! Developers! Developers!" At times, Apple seems to treat software developers like a necessary evil, acknowledging that they have a role to play but wary of letting them damage the product. Much of Apple's pitch for the Mac is that everything works, and it's easier to make that pitch when you retain so much control over what runs on the platform.
That stance naturally doesn't sit well with the developers, who are used to different treatment from the likes of Microsoft, Symbian, Palm, and others. But what if that's what it takes to produce a reliable product? After all, the fewer things you install on a PC or Mac, the more reliable it tends to be.
That's the tradeoff Apple is trying to make with the iPhone as it evolves. There's no doubt that the iPhone needs third-party applications. But do smartphone owners need the flexibility and breadth of applications that are available for the PC and Mac?
Apple is arguing through its SDK restrictions that, at the moment, they don't, and I'm inclined to believe them: for now. If smartphones really do turn into mobile computers, Apple will have to acquiesce--at least somewhat--to the need for broader third-party development that can truly exploit the iPhone. After all, that unofficial parallel iPhone development path doesn't show any signs of slowing down, meaning that people really do want more than just Apple's stock applications, and they'll want some things Apple's not inclined to provide.
So for now, if you want to run anything and everything on an iPhone, buy one and jailbreak it. If you want a more stable controlled experience, only install what Apple and the App Store provides.
However, what we really need is both. And that's something Apple will have to tackle during the second year of the iPhone. There's no shame in taking baby steps while building a business from scratch, but you've got to take the training wheels off at some point.