Although the NDA is on the way out, not all is restored to sparkly brightness in the world of the iPhone SDK. Developers must still deal with day-to-day limitations built into Apple's development environment.
Apple remains on a clear trajectory to lock down the SDK, and to lock it down hard. By that, I don't mean that they're keeping the SDK away from developers. What I mean is this: Instead of providing an open, collaborative platform, Apple has chosen to stick each developer into a tightly controlled sandbox. In the world of the iPhone sandbox, you cannot play with the other kids' toys or share your own toys around.
In the current SDK, you may not read or write data between applications, run programs in the background, launch applications, or fork your processes in any way. You can play with the shiny toys that Apple provides but should you step into any private areas, such as accessing the onboard music or contacting the camera directly, you will be rejected from the App Store.
Proponents of this approach speak about the greater security guaranteed by the fully sandboxed OS. After all, users should be gatekeepers when their location gets used as a matter of informed consent. Should a malicious program gain access to personal files, users could face a severe breech of privacy.
This protection also keeps programs from cooperating with each other, cutting off access to proposed third party copy and paste solutions and other inter-application services.
Detractors point out that developers are stuck creating second class programs on a first class platform. Users are being denied the full user experience and power that an open platform would offer. Some of the Macintosh's best apps are those that enhance and augment the basic OS. As for the iPhone, it's off limits. Video recorders, turn-by-turn GPS systems, app launchers and system customizers are out of bounds.
And it doesn't just stop there. Apple officially says no unpublished APIs but early indicators (and several inside engineers) said they'd take the OS X approach. For many yars, Mac OS X developers have used unpublished API calls with a live-and-let-live attitude: if the APIs changed, it was on the developer's head to fix things
Not necessarily so with iPhone. Apps that use functionality not officially sanctioned by the SDK, regardless of whether those functions are linked to public APIs can be rejected, with the programs pulled from App Store. As of the moment, unpublished APIs proliferate throughout App Store products -- one learns to spot them -- but I know of applications that have been rejected for doing so. It's a crap shoot for developers.
When all you have to work with is safety scissors and glitter glue, and when your business depends on getting that app onto the App Store virtual shelf, developers won't push boundaries. After all, why not write another tip application or sudoku game when you know it's going to be accepted to AppStore and may earn you a steady income. Preschoolers are not allowed to encounter risk, and right now neither are iPhone developers.
I dunno.. i think you're jumping the gun just a tad bit.. too much drama IMO. As an iphone dev with an app in the store and a few more on the way i have found few limitations with what Apple has given me.. nor have i found a lack of inovative apps on the store because of the limitiations you listed above. i feel the ecosystem is very healthy at this time.
It's way too easy for someone to point fingers at apple stating why didnt you do this or why dont you do that. I agree it's healthy and your blog post will do nothing but to further peoples thought process on the subject but given what i know as a manager overseeing fairly large business apps i say less is more when it comes to the iphone sdk at this early date.
I'm happy their taking a cautious approach to the phones firmware and the sdk. Sure it would be nice to have the world but for now i'm happy to at least have access to that little island they've opened up to us for now. Let's talk in a years time and see what's happened. i expect that by then more than likely they'll be ready to open up more of those doors you've found shut.
BostonM.
I don’t have any SDK programming experience, but I think Apple’s got the right principle. They want to sell 10 million phones a year. They want the iPhone to be a mainstream hit. They don’t want to accidentally leaves holes in the SDK that cause users problems, nor then have to close the SDK resulting in other good apps not working at all after a software update. Better to start conservatively.
For all it’s technical complexity, the iPhone isn’t a Mac. Most people have different expectations of a pocket device than they do of a desktop computer. The people that want it to be more like a Mac: they can jailbreak it.
They should be consistent on rejecting apps that use unpublished APIs though.
I don't see where these limitations prevented you from writing your super-useful and sophisticated flashlight app.
If developers want access to sharper tools than those Apple provides, they're free to write applications for jailbroken phones. But one of the first "protections" they'll throw away at that point is the ability to collect money for every iPhone their application is installed on.
If some other platform (Android, Symbian, Blackberry) provides a more-attractive place for a developer to seek his fortunes, they should go there. As a consumer of those applications, I am overjoyed with the design of the sandbox that Apple has in place. At the same time, I'm happy to have the marketplace sort out those issues.
Erica: rather than speaking in abstractions, could you clue us in on 2-3 applications that we won't see on the iPhone that you think would be valuable? I personally am very happy with what's there, and I know it will be expanding all the time. I'm certain that the Omni folk are working on a version of OmniOutliner for the iPhone, and I'm equally certain that that app will be approved by Apple.
And I do have my concerns: I still do not understand why the Podcaster application was rejected, and I fondly hope that Apple will actually accept that app in the store.
Hi, Read this article of Programming with Safety Scissors and Glitter Glue. Nice blog.