I can understand Marco’s frustration with Apple’s use of private APIs. But I think he may be wrong to characterize Apple’s iBooks as a “slap in the face” to third party developers.
iBooks’ use of tons of private APIs is frustrating on a few levels, the biggest that it makes all third-party reading-related apps second-class citizens.
I won’t be able to offer many features that iBooks has (such as a true brightness control or integration with the system dictionary), but my customers will expect them, making my app inferior to Apple’s in key areas.
It’s also a slap in the face that Apple is listing iBooks in the App Store, since they employ technical measures to ensure that every other App Store app doesn’t call any undocumented or private APIs. This app wouldn’t pass the App Store submission process, yet developers need to compete with it for App Store attention. One of the great potential failures of an app-review system is inconsistent or unfair enforcement of the rules.
Why are some APIs private or undocumented? Because they are not ready to be made public. If Apple isn’t sure it can support an API into the future, they aren’t going to make it public. Maybe they’ll make it public someday; maybe they won’t. But as soon as they make it public, they officially support it and therefore can’t change it easily (at least, not the external interface or the way it functions as exposed to the outside).
Example: Developers were originally not permitted to use UIGetScreenImage(),
but Apple decided to make it public (sort of).
Imagine the uproar if they made a not-yet-ready API public, it became popular, and then they rearranged it completely, breaking a bunch of apps. Nobody wants that, least of all third party developers.
It only makes sense that Apple would have private APIs in their own apps. What better place to take a test drive and kick the tires?
I feel for Marco, and I’d love to see some of these features make it into Instapaper. But Apple didn’t create the most popular mobile platform in the world by cutting corners and bending their own rules about quality.
(By the way, you should try Instapaper. It’s completely changed how I use the web.)