iPhone App Store roulette: A tale of rejection

Think back to May 26, 1995. Steve Jobs was wandering in the desert, fiddling with some company called Pixar that made animated movies of dancing desk lamps, and planning his next step for NeXT. Bill Gates ruled the computing world and wrote a famous memo announcing that Microsoft was falling terribly behind in dominating the Internet, which Gates was sure to be a "tidal wave." Microsoft control was slipping and he could feel it.

My brain keeps returning to the moment in time when Gates recognized the difficulty in controlling the creative impulses of the world -- because I've been twiddling my thumbs waiting for Apple to approve my iPhone App version of my book, "Free for All."

[ There are many worthwhile productivity apps you won't find at the App Store. See "21 apps Apple doesn't want on your iPhone." ]

A long time ago in March, I hatched a simple plan. I would dump the raw text of my book on the open source movement into HTML, render the HTML on the iPhone screen, and give away copies. Just for grins, I would also write a new forward to the book, call it the Gold version, charge $1 per copy, and give all of the revenues to the Committee to Protect Journalists, a charity that seems as deserving as any these days.

It was an easy idea that didn't require understanding much about the trickier parts of the iPhone API, like the accelerometer or the camera. All it takes is a few calls to a UIWebView object, a part of the iPhone OS that implements the WebKit HTML rendering engine. Boom -- it's done.

The programming for this plan was very simple, but the distribution has been nearly impossible. Apple's App Store is the only way to share your applications with the world, and it is lorded over by an inscrutable team of guardians devoted to maintaining control over the platform. During the last four months I've spent little time working on the application itself and almost all of that time waiting for Apple to respond.

A man, a plan, an App Store It is possible to skip the App Store if you want to give your application to a friend, but even this requires getting Apple to sign off on the transfer. The iPhone wants to see a cryptographically signed note from its mother before firing up any binary code. The ad hoc distribution mechanism puts a strict limit on 100 copies and enforces this by requiring a copy of each iPhone's unique identification code to be bundled with the digital signature. Anyone who thought that cryptography was going to liberate the world was sadly mistaken.

[ If you are unable to see the images in this article, please click here. ]

There's also an Enterprise plan that might help companies, but it's just a Web site designed to work around the same basic limitation: iPhones won't do something unless Apple allows it. In addition, there are a number of very talented people devoted to cracking the iPhone's security layer and taking complete control of the iPhone, a process they call "jailbreaking," but that option isn't practical for most users or most developers.

So everyone is stuck with the App Store. In the last three months I've submitted slightly different versions of my book reader to Apple close to a dozen times, but the code has been approved only twice.

If this count sounds a bit sketchy, it's because it is. In preparing this text, I just discovered that one database at itunesconnect.apple.com tells me that the Gold version of my application was rejected. But the e-mail note I received two days ago just said that it was "requiring unexpected additional time for review." Is it rejected or am I just waiting for the reviewer to come back from a meeting? Other developers confirm that notes like this are the equivalent of a sailor on shore leave in Marseilles saying, "I'll call you."

One of my two applications -- the free version without the new forward -- was accepted and published by the App Store after several months of rejection. I like to think of this as a victory even though the charity version with the new forward was rejected again about the same time. The only difference was an extra block of text. It wasn't even HTML -- just ASCII. Somehow the bouncers patrolling the velvet rope decided that one twin with slightly shaggier hair couldn't join the other at the bar.

[ If not the iPhone, then what? See "How to choose a mobile development platform," "A developer's-eye view of smartphone platforms," and "The cross-platform option: Web apps for smartphones." ]

Even this success has been frustrating for me because some users started complaining about the scrolling mechanism I implemented in JavaScript. I like the idea that a single tap at the top or bottom of the screen sends the HTML scrolling up or down. The problems the new users found never appeared in testing, no doubt because the testers were too familiar with the app. (Remember, ad hoc distribution rules make it onerous to recruit testers.)

There are other problems. If I were distributing the software, I could communicate directly with the customer. The bug reports would come to me. There would be a direct link. Apple, though, controls all of the interaction. Users' complaints show up only in the product reviews. There's a URL for support listed in the store, but Apple owns the customers.

So I guessed a bit, duplicated some of the users' problems, and rushed out a bug fix. There was no need to scramble, though, because the App Store team took about two weeks to approve the dozen or so new lines of code I had added to my application. What was the holdup? Who knows, but users continued to be frustrated, and I couldn't get the new code to them even if I knew who they were. Other developers report the same problems trying to fix bugs.

Even when you seem to be home free, you're not. Two months after the first acceptance and several weeks after approving version 1.0.2, the mysterious masters of secrecy decided there was something very bad in the code. The App Store rejected the app anew. Where it stands now, I don't know.

New and new again The bottleneck in the approval process is amplified by a weird structural effect the App Store shares with Craigslist. The newest apps get the most play on the front pages of the App Store, so everyone has an incentive to upload a new version as often as possible. It's pretty clear that the iPhone users spend much of their browsing time on the list of the newest applications; getting a new version approved leads to a burst of sales. (Forget about the thesis of "The Long Tail.") Craigslist doesn't bother filtering, but the App Store does, and this just means more work for the bouncers at the door. Everyone is frantically trying to get reapproved, so the workload is endless.

Some developers suggest that the reviewers are delaying approvals to reduce the effects of this clamoring for attention. That is consistent with the way that I often got a rejection notice almost exactly one week after I submit the app. My personal conspiracy theory is the approval team is rated on statistics, such as how many applications are processed within a week of being submitted. But maybe it's something else. We get to know about Dick Cheney's plans at the CIA, but some secrets are better protected.

I would feel better about the App Store's decisions if they were understandable and predictable when they finally arrived, but they seem capricious and often outright wrong. Some of the rejection letters claimed I was misusing the UIWebView. They cited section 3.3.1 of the agreement: "Applications may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or private APIs."

My app just dumped pure HTML in the UIWebView. When I wrote back and showed examples from Apple's documentation that used the APIs in exactly the same way, I heard nothing. Apple didn't "think different" when it created its customer service team for the iPhone developer. The company just borrowed standard operating procedure from the worst bureaucracies in the world (say, the DMV from Soviet-era Russia). Then it put the process behind an e-mail wall, giving the whimsical fascists the ability to operate without any contact with their cat toys. At least the old Soviet-era bureaucrats in "The Lives of Others" had to watch the effects of their games.

Some of the delay came because I chose to build my application on an open source project called PhoneGap. This project is a thin wrapper around the UIWebView object. You write your application in HTML and JavaScript, and the code loads it into UIWebView. It saves you the trouble of building out all of the Cocoa code.

You might think that Apple would welcome a toolkit like PhoneGap because such an open source project can reduce a lot of the common bugs that developers encounter at the beginning -- but that's not the experience of many. While Apple doesn't explicitly forbid the use of PhoneGap, it's clear they reject many -- but not all -- projects that use it. Many PhoneGap users report they received the same text in their rejection letters as I did: PhoneGap is an "external framework" and those are forbidden.

Some PhoneGap developers have had some success, and they've shared this with others. The men and women behind the curtain only look at the linking tables to see the names of the objects. So someone wrote a Python script that would replace the word "PhoneGap" with your own made-up package name. Voilà -- it often works.

But make sure you delete words like "gap" from your HTML too because Apple's powerful anti-PhoneGap tool (grep) can sniff them out. When I fixed my code to get rid of the external framework, I inadvertently left in an HTML page with a thank you message to the PhoneGap team. Oops. That file was soon flagged. So I deleted the thank you note and settled down for another few weeks of waiting.

The latest twist is that my application is again rejected (a few weeks after it was approved) because PhoneGap is now officially forbidden. There is hope, though, because Apple says it is in communication with the PhoneGap organizers at Nitobi. When I checked with the folks at Nitobi, they told me that PhoneGap is 100 percent in compliance and they're working on educating Apple. But Apple has told them little except to pay attention to the rules.

School rules Through all of this, I received little guidance from Apple. Whenever I sent in a question asking how long the review would take, I would get back a polite but worthless e-mail saying that every "app submitted to Apple has different capabilities, features, and complexity, which means that individual review times vary. Once the application review process has been completed, you will receive an e-mail notification."

If I asked deep questions -- like why they consider open source code to be external frameworks that must be forbidden -- I got no answer. I began joking that iPhone development is like elementary school. You have to do all of the work yourself. Don't even think of copying that method from some Apache code because that might be seen as a "private API." (Yes, I know that Apple cribbed much of the OS X running on the iPhone from the BSD project, but again this is like elementary school. The teachers can photocopy the worksheets, but the students need to do everything on their own.)

There are other puzzling rejection notes. While all I do is dump HTML in a UIWebView, one time the App Store Magic-8 ball scolded me, "An Application may not itself install or launch other executable code by any means, including without limitation through use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded and used in an Application except for code that is interpreted and run by Apple's Published APIs and built-in interpreter(s)."

Anyone who has spent much time trying to understand the more philosophical aspects of computer science will wonder at this impossible distinction. In the most abstract models, there's no difference between a program and data. The data that gives an address for a restaurant can be thought of as a compact program for drawing a map and vice versa. While I'm sure everyone agrees that "good" is "good" and "bad" is "bad," I'm also sure that there's no guaranteed way for detecting a program that is about to download good data or a bad program.

Needless to say, this blocks many useful mechanisms for the app developer. You can't download new fixes for old bugs or even include functionality like a widget in your application. It also blocks great applications like an emulator for old Commodore 64 games. I feel sorry for the developer who apparently went to the trouble to get a valid Commodore license only to be rejected by a squirrelly rule.

Apple is terribly inconsistent on this point. Some ad companies like AdMob and Medialets seem to have no trouble distributing precompiled code that downloads sophisticated ads from the Internet. These programs are explicitly designed to change their behavior after the fact, presumably against Apple's rules, but somehow Medialets has managed to interact with iPhones 1 billion times. And then there's the biggest reason of all: Mac and PC users survive with self-updating applications all of the time.

After a bit, I started bothering everyone I knew who worked at Apple to inform them of how arbitrary and infuriating the whole process could be. A few were polite, but they seemed to be tied up by the requirement to act like good corporate citizens.

There was one phone call from an Apple developer representative who told me that it was his job to deliver rejections by phone when they were too sensitive to travel by e-mail. There was, he said, a problem with giving my earnings to charity. Oh really? Was I supposed to spend it on cocaine and whores? No. I just couldn't mention the charity in the App Store listing. Why? Was this a version of the biblical imperative to give with your left hand so that your right hand doesn't know what is going on? He couldn't say. I was free to give the money, he said, and I could even mention this on my own blog, but I couldn't reveal it in the App Store.

Not that this matters. There are already 65,000-plus applications out there and it's difficult to find anything in the store. Typing in the name of my app title, "Free for All," brings up a long list of other applications like "iFart Mobile -- #1 Fart Machine for All Ages." I've yet to find my own app after paging through the long list provided by the so-called search button. Putting quote marks around it makes no difference. The only way people can get to my application seems to be if I lead them directly to it from my Web site. Yet Apple justifies taking the 30 percent in part because the App Store is doing some of the marketing. Fulfillment, yes, but its marketing reminds me of the GUM Department Store before Gorbachev, when any question beginning, "Do you have...?" always drew the same response: "Nyet."

When the kind phone caller with bad news asked if I had other questions, I brought up my big one about whether open source was really a "private API." That was too much for him to handle, he said. I could write the e-mail address, though, and he was sure I would get a response. When I told him that I rarely heard back, he just paused and said he was sure they would get to it. Sure.

Once again, Apple can't manage to enforce rules like the one about charity with any uniformity. Just as some PhoneGap apps slip through the mechanism, there are dozens of programs that give their proceeds to charities; they can be found by typing the word "charity" into the App Store search box. That search term seems to work well. The iFart developers aren't giving their proceeds to charity? Go figure.

Behind the Magic 8-Ball I'm not the only one who has experienced these endless inconsistencies. Here's a list of adjectives that people have used: arbitrary, suicidal, baffling, silly, ludicrous, Russian roulette, grumpy, ridiculous, giant middle finger, and many more unprintable words.

Can any company run something like the App Store, even one so absolutely fabulous and supremely cool? Central control on a large scale has a poor track record. Just as the Soviets didn't have the time to make all of the decisions about the economy with any consistency, Apple can't afford to hire the people to enforce the App Store restrictions with the care they require. I know I've never misused the UIWebView object, but I doubt the reviewers have the time or the energy to care. Apple doesn't read the code but somehow wants to enforce rules that require that level of scrutiny.

The more I talk to other developers and look at my own experiences, the more I conclude that the reviewing process isn't any better than random. Why would one version of my app be accepted and one be tossed out the door, even after I took away all references to charity? So we just submit things, cross our fingers, and submit again.

I suppose there are a few advantages to what Apple is trying to do. Given all of the seemingly arbitrary rejections, it must be weeding out some of the bad applications. Indeed, some of the postings on apprejected.com, the Web site devoted to cataloging the whims of the dieties, includes some pretty useful bug fixes, like a TableViewCell that remains highlighted. But for every bug that's fixed, a number of developers walk away dejected and bitter.

In my case, I've tried to guess what may be going through the reviewers' minds. What could possibly make the application better? So in the latest version I've even included a few more instructions to try to make the tapping interface more intuitive. They're still in the queue, but some day the users might see them. Meanwhile, I still don't understand how I was using UIWebView in unapproved ways.

Even when Apple's strictures are explicit, there are problems with trying to apply them. While Apple worked hard to write excellent UI guidelines, it's not clear that this is what the programmers or the users really need. They may help with the standard applications, but they pretty much forbid any kind of innovation. Many of the rejection sob stories come from developers who tried to "think different" about a user interface issue, in many cases because they were tackling a challenge that wasn't sussed out by Apple's crack team. Innovation is a real gamble with the iPhone. Sure, you could try to engineer a cool UI for augmented reality, or you could just follow the UI guidelines and put up a menu that lets you drill down into a list of fart jokes. There's no doubt in my mind that the famous I Am Rich app was approved because it didn't violate any UI guidelines. It didn't do anything. This is the kind of innovation that the UI guidelines encourage.

The job of wading through the App Store submissions must be mind numbing. If you let one app through that pays a portion to charity, you're sure to hear about it when someone else in the App Store starts rejecting these things. To make matters worse, someone might submit free and paid versions of the same application. If one gets rejected and the other accepted, it might look odd. Someone's going to get scolded because someone made a mistake. Or maybe no one will get scolded because everyone's busy patting one another on the back and believing the hype that the iPhone and the App Store are the greatest things on earth.

Drop in the bucket In the end, I've decided that my situation is more like the anonymous grunt hit by a distant sniper. Just as war is often modeled as a game of numbers by the generals, Apple probably could care less about most applications. Not only do individual applications add little to Apple's bottom line, but the customers' spending is probably constant. If they don't buy my Gold version, they'll just download something else. Some reports suggest that the apps are usually just a distraction and people stop using them after a day or so. People want a phone first and a chance to check the Web second. Everything else is just a cute or embarrassing gimmick.

There is every indication that the App Store doesn't contribute very much to the bottom line of many developers, either. If there are 65,000 apps and 1.5 billion downloads, the average number of downloads is about 23,000. If you subtract some of the irresistible free applications like Facebook and Yelp that are just fancy Web pages, it becomes clear that selling even 1,000 copies of your application is a pretty big accomplishment.

It's worth putting these numbers in context. PalmGear.com claims more than 32,000 apps available in its store alone. That doesn't include all of the other places on the Web where there are incredible things for Palm OS like a GCC compiler, a native PDF-rendering tool, and countless others. There's no magic 1.5 billion number coming out of Palm because is marketplaces aren't modeled after the old Soviet May Day parades where stuffed shirts on the reviewing stands count the obedient ones marching in step.

Apple must be missing many opportunities because the uncertainty must be killing the incentive for developers. One of the reasons the App Store may be filled with bottom-feeding apps like iFart is that developers are afraid to risk serious development time on the platform. Even the lists of serious apps that "can save your life" are generally populated by dutiful little virtual notepads. Most probably took 10 minutes to code and three months to get through the approval process.

There is every indication that Apple's regulated marketplace is descending into mediocrity, just like the Soviet economy. It wasn't long after the PC appeared that software packages like AutoCAD and Photoshop started costing hundreds of dollars. The old Windows platform is still a very fertile ecosystem for innovation. Today, the software for a PC can cost five to ten times as much as the PC that runs it. This kind of development and investment can't happen for the iPhone as long as anonymous gatekeepers are able to delay projects by weeks and months with some seemingly random flick of a finger. It's one thing to delay a homebrew project like mine, but it's another thing to shut down a team of developers burning real cash. Apple should be worried when real programmers shrug off the rejections by saying, "It's just a hobby."

It's not even a hobby for me any longer. I had a list of ideas to tackle after I finished the no-brainer of dumping some HTML into a UIWebView. It doesn't look like that's going to happen. I'm starting to move away from native code and concentrate on building Web applications that can be tuned to the mobile version of Safari. Just for grins, I'll make sure they work on WebKit just to give those Android and BlackBerry users a real boost. When I make mistakes, I'll be able to fix them immediately. There will be no need to ask, "Mother may I?" If I want to use a cross-site library to reach both iPhone and BlackBerry users at once, I'll be able to do it without getting accused of using some "private API."

So if you want to read "Free for All GOLD," forget about searching the App Store. You can read it on my site in all its glory. Send the bug reports directly to p3 (at-sign) wayner.org. And by all means, donate directly to the Committee to Protect Journalists. One hundred percent of your donation will go to them; Apple won't take anything.

Lessons of the Internet Back in 1995, Bill Gates took one look at the Internet and scrapped his dreams of dominating online life with MSN. Apple would do well to look over his memo because there are indications that the beautiful design and wonderful experience of the iPhone can't withstand the tidal wave of ingenuity out there. Creativity will find expression, and bored developers waiting for approval will check out other platforms. BlackBerry sales beat iPhone's earlier this year. Although RIM may try to emulate Apple's mistakes with its own walled garden, there are still other distribution mechanisms available to BlackBerry developers.

The Windows Mobile folks are also mindful of the need for open channels. When I interviewed Jay Roxe, group product manager of Windows Mobile, for another article about smartphone development, he outlined all of the different ways that a Windows Mobile developer could distribute a new program. Microsoft may run its own stores, but there are a number of other competitors and there's nothing to prevent you from giving a Windows Mobile app away from your own Web site, either.

[ Dive deep into mobile 2.0 technology with InfoWorld's "mobile 2.0" PDF special report. ]

Microsoft isn't alone with this openness. Symbian and Palm apps are freely available. Let's hope that Palm follows through with promises to make the Palm Pre backward compatible because there are more than 40,000 applications available for that platform -- apps that work perfectly well without currying the favor of some central bureaucracy.

Any enterprise shop would be insane to try to bet their company's livelihood on the iPhone. Oh sure, you've got to dabble in it now because the boss and the boss's boss have snorted all of the hype about the 1.5 billion downloads, but the random approval process is a real disaster for anyone trying to innovate in the simplest way. You've got to be willing to add an extra two or three months of salary for your team after development in order to get approval. Testing is a pain, and if you miss something, your users will be stuck with the old code until you can get a new version past the Iron Curtain.

I have no idea what Steve Jobs was thinking back in 1995, but I do remember what he was still thinking in 1984 when he hired Chiat/Day to create a wonderful commercial that defined the personal computer revolution. Who can forget the audience of reverent drones and the big screen on the stage? It used to be funny to note the similarity between the crowds in the old commercial and the audiences at Macworld Expo, sitting at the front of their seats in rapt attention and waiting for the big head on the screen to tell them what to think. The humor is slowly fading, though, and I can't help but feel that Apple's iPhone division has become everything the old company mocked in 1984.

Related articlesHow to choose a mobile development platformSmartphone app dev is exploding, leaving developers confronted with a plethora of choices. Here are some tips to help you make the most of your mobile appsA developer's-eye view of smartphone platformsAs smartphones evolve into serious computers, the worlds of iPhone, Android, BlackBerry, Nokia Symbian, Palm, and Windows Mobile offer developers new possibilities. Which world should you choose?The cross-platform option: Web apps for smartphonesTailoring a Web application for iPhone, BlackBerry, and other top devices has many advantages over costly native development, and new techniques and approaches are closing the functionality gapMobile deathmatch: Palm Pre versus iPhoneIn our last comparison, the iPhone buried the BlackBerry. Can the new Palm Pre unseat the mobile champ?Deathmatch rematch: BlackBerry versus iPhone 3.0It’s time for us to bury the BlackBerry and move on to modern mobile -- even for e-mailMobile deathmatch: BlackBerry vs. iPhone 3.0, side by sideHow much more than a phone can these devices be? See what each can do -- or not -- in this comparisonHow much work can you do on an iPhone?The laptop-free promise of today’s next-gen mobile devices is put to the test. Can the iPhone 3G deliver?How much work can you do on a BlackBerry?The laptop-free promise of today’s next-gen mobile devices is put to the test. Can BlackBerry Bold deliver?InfoWorld's Deep Dive Report: Mobile 2.0 TechFind out how the new crop of next-gen mobile devices perform and how to make the most of them in this 20-page PDF guide from InfoWorld's editors and contributors21 apps Apple doesn't want on your iPhoneWorthwhile productivity apps you won't find at the App StoreCan you manage an iPhone like a BlackBerry?Apple's iPhone 3.0 OS and iPhone Configuration Utility 2.0 extend the iPhone's enterprise-class management and security features. The InfoWorld Test Center sees how far they really goFirst look: iPhone 3G S is evolution in actionThe iPhone 3G S is less revolutionary than its predecessors, but is still moving in the right directionFirst look: iPhone OS 3.0 is better for business, but IT won't be satisfiedMy iPod Touch slowed to a crawl, making the many useful new iPhone update features hard to use -- at firstYour next iPhone: iPhone 3.0 update or iPhone 3G S?Between Apple's free OS upgrade, the new next-generation handset, and the heavily discounted 3G, it's decision-time for both devotees and holdoutsiPhone 3.0: An InfoWorld guided tourApple's forthcoming update fills a number of important holes for users; here's a sneak peek at the key new featuresiPhone applications get down to businessInfoWorld picks the best iPhone apps for connecting with business systems and boosting mobile productivity

This story, "iPhone App Store roulette: A tale of rejection" was originally published by InfoWorld.

From CIO: 8 Free Online Courses to Grow Your Tech Skills
Join the discussion
Be the first to comment on this article. Our Commenting Policies