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.