Ever since the iPhone App Store opened nearly two years ago, there has been a steady stream of high-profile rejections by Apple’s review team. On many of these Apple eventually reversed their decision, including our own Airfoil Speakers 1.0.1, which Apple rejected because it could receive icons transmitted over the network by a nearby Mac. In general, the community has treated these problems as isolated mistakes. I believe, however, that they are in fact merely symptoms of a systemic problem with Apple’s App Store, and that Apple is not learning from its mistakes.
Apple’s Mistaken Rejections
Apple is enormously popular right now, and as such there are a lot of people ready to defend Apple when they make mistakes. To much of the community, these bad rejections are just an occasional problem, a bit of unfortunate publicity which Apple usually makes right. We should, the theme generally goes, be grateful to Apple for providing such a wonderful platform, and not begrudge them the occasional screwup.
On Thursday, it came to light that Apple had rejected political cartoonist Mark Fiore’s iPhone app because his app “ridicules public figures.” This is a scary statement coming from a company that’s putting a lot of effort into being a conduit for major media companies. Fiore apparently gave up the fight in December, and this whole saga remained unknown until recently. After Fiore won the Pulitzer Prize for his work, he happened to mention his iPhone app rejection, and suddenly a media storm erupted. The general attitude in the community seems to be that, while this rejection is unjustifiable, it’s yet another honest mistake.
But these aren’t isolated mistakes by individual Apple reviewers. They are just the surface symptoms that Apple has gone very wrong with their App Store, and that they are not learning from their experience.
Chain of Events
Let’s change gears completely for a moment. Imagine you are captain of a KLM 747 which has been diverted to Los Rodeos airport on the Atlantic island of Tenerife. After an extended wait, your destination finally reopens and you prepare to depart. You are lined up on the runway, ready for takeoff, and impatient to depart. You receive what you think is a takeoff clearance from the tower, and begin to roll in heavy fog. Suddenly, another 747 looms ahead on the runway. You attempt to pull up, but are not yet going fast enough. You clip the top of the other 747, lose control, and crash. An enormous fire erupts, and 583 people die.
This tragic scenario played out in 1977. The proximate cause of the Tenerife disaster was a deadly mistake made by the KLM captain, who began his takeoff while another aircraft was still on the runway, and without clearance from the tower.
It would be easy to simply say, “mistakes happen”, shrug our shoulders, and get on with our lives. Indeed, mistakes do happen, all the time. Everybody screws up sometimes, it’s an inescapable fact of being human. And yet, despite this, commercial airline travel is so safe that there hasn’t been a single airline fatality in the US in over a year. You’re probably safer on an airliner than you are sitting in front of your computer in your own home.
This is accomplished because the airline industry doesn’t simply shrug and say, “mistakes happen”. Every accident is due to a chain of events, and breaking any link in the chain prevents the accident. Blaming the last link in the chain just because it’s the last ignores most of the important factors behind the accident, and makes it impossible to effectively mitigate the possibility of future accidents coming from similar causes.
In the case of the Tenerife disaster, the chain ends with the captain’s decision to take off despite the lack of a clear takeoff clearance from air traffic control. However, that in turn was the direct result of the use of colloquial phrasing on the part of air traffic control. Yet another reason was rigid hierarchy in the cockpit, which prevented the flight engineer from being able to effectively raise objections with the captain, despite his belief that the other 747 might not have been clear of the runway yet. Many other critical factors can be identified.
The interesting thing about this long chain of events is that so many of the links in the chain are not simple human mistakes, but systemic failures. The use of colloquial phrasing by air traffic control, for example, was not an isolated incident but a common occurrence. The rigid hierarchy in the cockpit was standard procedure at the time. Aircraft radios are inherently limited and can be difficult to use effectively.
As such, many systemic changes were made in response to this accident to improve safety. Air traffic control communications and phrasing were much more rigidly standardized, and engineered to prevent this sort of misunderstanding. The concept of Crew Resource Management was developed, which de-emphasizes hierarchy in the cockpit. Ground radar was installed at Los Rodeos airport, and a second, improved airport was opened on the island.
Because these were systemic changes, they resulted in improved safety across the board, rather than just fixing the specific factors that caused this one accident. Blaming the captain for being an impatient bonehead would have been justified, but would not have improved safety in the way that this deeper analysis did.
Back to Apple
Enough of my obsession with aviation, what does all of this have to do with Apple and the App Store?
While the severity of the problems is obviously not comparable (unfortunate as Apple’s drive for closed platforms may be, it’s nothing like the death of hundreds), there are a lot of parallels in terms of the chain of events and the methods by which future problems are prevented.
The proximate cause of Mark Fiore’s rejection was an Apple reviewer deciding that his app violated Apple’s policies. Given the publicity storm from this rejection and Apple’s change of heart, this was obviously a mistake. But just as before, simply shrugging our shoulders and saying that people make mistakes is not productive, however true it may be.
There are many other factors involved in this rejection. Apple’s internal policies apparently expressly prohibit political satire, which is bound to produce publicity problems (and already has in the past). Apple’s app review team is badly understaffed; last time Apple released figures, it was calculated that each app gets a mere thirteen minutes of review time.
Further, feedback channels for problems are woefully inadequate, meaning that when a developer is unfairly rejected, often his only recourse is to go to the press.
As well, Apple’s App Store submission process does not allow developers to get pre-approval for ideas, meaning that developers are forced to develop an entire application with no real guidance as to whether Apple will accept or reject it after pouring in months of work.
Fixing any one of these issues would have prevented this whole fiasco, and many others. It goes even deeper, though. The entire App Store walled garden is ultimately an early link in the chain of events behind Fiore’s rejection. Apple current approach is inherently contradictory. They insist on policing the App Store for anything they don’t like. They prohibit third-party applications from using any other distribution channel. They encourage thousands of developers to target the platform, but don’t commit enough resources to handle the flood of apps. While each individual goal may be sensible, they don’t fit together.
Fixing the System
From my perspective, the ideal solution would be for Apple to give up their exclusive distribution channel for iPhone apps. Let them continue to run the App Store, just make it optional for both developers and users. Most users will continue to use it because it’s familiar and convenient, and most developers will continue to use it because it’s an an incredibly powerful way to access customers. By providing an alternative, Apple would gain freedom to act. Rejecting political satire from the App Store today is an act of censorship. Rejecting political satire from the App Store when it’s one distribution channel of many is just Apple exercising their right to determine what goes in their store. Everybody wins.
I consider this solution to be extremely unlikely, however good it may be. But even if you take that option off the table, there are many things Apple could do in order to prevent this sort of thing from happening again. Apple should hire more reviewers and give them better guidelines about what’s acceptable and what’s not. Apple should provide a vastly improved appeals system so that developers who have been treated unfairly can remedy their problem without causing a media storm. They should provide a pre-approval process so that developers can know whether an application will be allowed into the App Store before investing huge amounts of work into it.
Apple has built a successful yet flawed system. The App Store has been around for nearly two years, and yet Apple has done very little to fix the flaws. There is a regular series of high-profile mistakes coming out of the system, yet Apple’s response to each one is to patch over the mistake and hope that it doesn’t happen again. The community’s response is largely to say that mistakes happen, and that it’s a small price to pay for such an excellent platform.
This attitude won’t fix the problems. Apple’s system is inherently flawed. The continuing mistaken rejections by Apple are not unavoidable, and we shouldn’t just shrug our shoulders at them. There is a lot that Apple can do to fix these problems, and we’ll all benefit if they do.