Locked Private API

The iPad’s out… go somewhere else to read about the device. :)

Apple decided to make a few of their iPad apps be available on the AppStore as opposed to baked into the OS.  There are very good reasons for why they’d want to do this, like being able to ship out bugfix releases without having to release whole new OS builds.  And the extra few bucks per app certainly doesn’t hurt.

Word on the street (I haven’t confirmed this myself, I’m lazy), is that the iWork team did their best to not make use of any Private APIs to build their apps, and I think that’s fantastic.  This means that us developers can look at the iWork apps and think “everything I see here, I can do myself, somehow, without getting my app rejected by Apple.”

iBooks’ developers… not so nice.  And there’s been a lot of hubbub on Twitter about how this is wrong, and others saying that Apple can do whatever they want (they can, obviously).  Here’s an argument for why this is bullshit that I’ve not seen raised yet:

Private APIs exist for a reason.  I understand this as a developer.  Apple has been pretty great about keeping a consistent Public API for us, and if they say that something is not ready for mass consumption, I’m willing to believe them.  I try my best to not use private APIs in my apps (NetworkLocation doesn’t count, I’ll use any dirty trick in the book for that one).  Using them might provide a good feature, but you’re putting your users at risk.  An OS update might break your app.  This is why I don’t support older versions of OS X with NL.  Apple breaks it, and it’s hard enough supporting one OS.

Keeping some APIs private allows Apple to change them without having to worry too much.  In theory they’re the only ones using it, in their OS.  If they break compatibility, they know where they use it, and can fix it all in one update.

And so if Apple doesn’t want us to use private APIs on the iPhone/iPad for this reason, I can completely understand.  Quite a few apps have broken in the AppStore because of Private API use before they started actually rejecting them for this.

But what happens when they break compatibility with the private APIs that iBooks uses? Are they going to force an update down everyone’s throats to update iBooks as well?  I never update my iPhone apps (seriously, I can’t be bothered).  Are they going to leave me with a broken iBooks app?  I doubt they’ll want to get into this situation.  So they’ve gone and locked themselves into this API.  If it’s locked… why is it private?  It’s not going to change, cause if you do, you’re hurting your own app.

One of these APIs is the UIKit version of CoreImage.  I want this so so badly, and I’m sure I’m not the only one.  Page curls are the least of what that thing can do.  

Short URL for this post: http://tmblr.co/ZhqSVyUF2sL