I’ve had a rant building up for a few weeks. A rant about developer’s treatment at the hands of the App Store submission procedure. However unlike many rants on the topic, mine is not directed towards Apple. It is directed towards the iPhone developers who complain […]

I’ve had a rant building up for a few weeks. A rant about developer’s treatment at the hands of the App Store submission procedure. However unlike many rants on the topic, mine is not directed towards Apple. It is directed towards the iPhone developers who complain about the poor, unfair treatment they get, carrying their bleeding hearts in their palms while claiming Apple is bludgeoning the life out of them.

Two recent news headlines, seemingly separate, are intrinsically tied together and the synergy of them have made my eyes dislocated from the continued rolling they involuntarily perform.

The first headline, Facebook Developer Turns Back on iPhone relates how another high-profile developer has thrown their hands up in disgust over how Apple’s closed system runs against their principles. A direct quote from Joe Hewitt, developer of the popular Facebook application can be found on TechCrunch, and is most relevant. I will come back to this later:

I respect their right to manage their platform however they want, however I am philosophically opposed to the existence of their review process.

The second headline is Apple’s App Store Approval Process Now Includes an Automated Layer. The quick version is that Apple is now using an automated tool to determine if the Apps that developers submit to the App Store are using any Private API calls.

These two headlines are actually the same story, a fact that was made quite apparent by a popular direct iPhone-to-iPhone messaging App called Ping!. On Ping!’s Facebook Page, the developer announced that the much-anticipated version 1.2 of Ping! has been rejected by Apple:

Bad news is Ping! 1.2 has been rejected by Apple on Nov 14 due to a software library we used, developed by the Facebook company. This library is used by many apps including Ping! and the iPhone Facebook app itself. Unfortunately the most recent version of this library has violated some of Apple’s guidelines and  has caused hundreds of apps to get rejected including Ping! 1.2.

So let’s get this straight. Ping! and hundreds of apps have been rejected because they used a popular development framework, a framework which used Private APIs. A framework, which was created by Joe Hewitt initially for use with the Facebook application and then made available to third-party developers.

Lets be clear about this; Joe Hewitt used Private APIs in his public framework, well-known to be against the rules of the App Store, and then acts all indigent when Apple slaps his framework down. Rather than disclosing his error, rather than saying “oops sorry about that,” he would rather ride the trendy wave of ‘blame Apple control policy’ and cite ‘philosophical differences.’ I rather wonder if these philosophical differences would still be present if his framework hadn’t been caught in this automated tool. If it were just other people’s frameworks that were caught, would he still have quit for ideological reasons?

Now I don’t mean to pick solely on Mr Hewitt, and maybe I’m being too harsh. But he is just the latest example in a blogosphere that increasingly seems to love taking the loud minority and say “Look! Here’s proof that the end is nigh!” Come on, the end isn’t nigh, it’s not even on the horizon. Out of the thousands of App Developers that exist, we’ve had a dozen, maybe two dozen make a public fuss and quit. Big deal! This is the real world; businesses start, some succeed and some can’t hack the brutal reality. Those just make excuses and quit. Just like everywhere else in the business world.

To summarize the full story that I see, it goes something like this:

  • Apple publishes the rules for making iPhone Apps, including publishing and documenting the specific APIs which developers are allowed to use.
  • Some developers ignore these rules and make use of Private APIs. Some Apps get through the cracks in the newly functioning App Store review procedures.
  • Apple starts to crack down on private API usage. Developers who get rejected due to Private API use cry foul “Why are WE rejected but THOSE apps are allowed?” This was a fair question.
  • In response Apple says “They shouldn’t have been allowed, we are working on a way to fill up the cracks in the system”
  • Apple then goes ahead and fill the cracks with an automated (and thus unbiased) system to test of private API usage.
  • Developers then cry foul, “It’s not fair, you’re a bully, it’s too hard.”

Cry me a river….

Before I get off my soap box, I’d like to add that there are times and places for Private API use. As a professional software developer working on proprietary custom embedded solutions on Windows Mobile devices for specific customers, I freely admit to using Private API calls at times. Sometimes its necessary to get a specific job done. The difference is scope and control. Our clients deploy the software under our care and guidance, with specific OS and hardware requirements. If they change devices or operating systems, we know about it well in advance and can prepare for it accordingly. Our clients don’t just upgrade the OS and expect everything to work.

The consumer market is a completely different kettle of fish, customers upgrade willy-nilly  and expect things to just work, especially things related to Apple products. Private APIs are private for a reason, because they can not be relied upon to behave from one OS release to the next. This means that applications will break and the consumers, you and me, lose out.

In the brutal competition of any market place, and indeed the world in general, the strong will survive and the weak will perish. The App Store is no different and I’m constantly dumb-founded as to why some people expect it to be so.

You’re subscribed! If you like, you can update your settings

  1. Matthew Bookspan Thursday, November 19, 2009

    One word: Amen.

  2. I’m gonna summarize this with another word: Yawn.
    I’m astonished that anyone is even bothered by this anymore.

  3. I’m glad someone finally had the sense to say it.

    Thank you…

  4. There are a ton of really significant things wrong with the app store review process.

    Rejecting apps using private APIs is not one of them.

  5. I agree Hewitt’s issue is personal and not philosophical as he states.

    It’s a clear violation of the rules, but that doesn’t mean the rules are right. Maybe rather than rejecting the apps that use the framework, why not adopt the framework? Or provide an alternative framework and assist developers in using it?

    1. Andrew makes it clear enough why private APIs are private. Apple may make them public in some future release, but until they have sufficiently tested and approved them, it’s entirely up to them how to handle them.

    2. rules are rules weather they are right or not. you decide if you play or not. If you have a party you set the rules in your house what bathroom to use etc. if some guy pees in your back yard you can kick him out you don’t tell everyone forget the rules just pee where you want.

  6. I think you might be applying some revisionist history to the order of events to make Joe Hewitt appear to be the whiney developer that he isn’t.

    First, he simply had a one single tweet saying he was moving on to a non-iPhone project. The press then picked this up and interviewed him for more details and the press made the big deal about the issue. He wasn’t riding a trendy wave.

    Second, Joe openly disclosed there was a private API problem with the Three20 library back in late October (http://groups.google.com/group/three20/msg/9e58113aae30ef53). The only private API usage was used for debugging, not for production releases, so it wasn’t like he was even trying to sneak something past Apple and then cry foul.

    Your statements that Joe did not disclose the error and then tried to ride a trendy wave of publicity are completely false.

    1. This linking of Joe’s frustration to the Three20 framework issue has been explicitly denied by Hewitt as well:

  7. I think you meant he acted ‘indignant’, not ‘indigent’.

  8. Thank you! I’ve been waiting for someone to stand up for Apple on this issue!

    1. “Stand up” for Apple why, exactly?

  9. After all there are bloggers (sorry for the generalization) who do think before they write.

  10. What to read on the GigaOM network Thursday, November 19, 2009

    [...] does a user cost? (OStatic) It’s not about the gadget — it’s what you do with it (jkOnTheRun) Cut the drama: private APIs, the App Store & you (TheAppleBlog) Flip cameras to get Wi-Fi (NewTeeVee) Seesmic for Windows: an AIR-less Twitter [...]

Comments have been disabled for this post