App Store Rejections, where's the line?

Gruber summarized the rejection of the Commodore 64 emulator as:

Looks like an awesome app — a working C64 emulator with a gorgeous UI.

But while I hope this gets worked out and allowed into the store (I’d buy it in a heartbeat), it should not be considered a bogus/outrageous/controversial rejection. The rejection notice cites sections of the SDK guidelines (forbidding code emulators) which the app clearly violates.

While I agree that this app clearly violates that clause, I think we're crossing an interesting line with iPhone OS 3.0 with in-app purchases. The most common example is most likely going to prove to be "levels" for games -- race tracks, new RPG dungeons, etc.

I can't speak for all game engines, but in a few engines I've used in the past, logic can be built into the levels themselves. For example, an RPG dungeon might require you to push a block onto a switch before a door is unlocked.

Code Interpretation

Interpreting code is often a vague term, so I want to define it as the steps required:

  1. Parse input: Scan "code" to determine its structure and order
  2. Make decisions based on input: Based on the structure, perform the actions indicated

Now I posit that there are already clear-cut violations of this agreement (assuming Apple abided by their own agreement) if taken absolutely literally. What are they?

  • Safari: Downloads, parses, and interprets (compiles in 3.0, from my understanding) Javascript code.
  • Calendar: Parses CalDAV "commands" as to delete, insert, or update your calendar items. Think it's a stretch? I almost guarantee you that this code is written using a state machine with the equivalent of a switch statement.
  • Calculator: You may think this is a stretch, but think about it: what's the first compiler or interpreter anyone ever writes? RPN calculator. In case you aren't familiar, a calculator is a classic example of parsing structured input (order of operations) and performing the operations specified by the input.
  • MIDI players: These little musical machines are state machines that know several commands, like how to switch between instruments, how loud to play a pitch, and when to stop a pitch.
  • Terminal/Shell Applications: Seriously, you're bring up a shell prompt which by their definition execute commands that you type in.

The key here is that with Safari, Apple cannot abide by their own agreement.

Clearly, all third party browsers should be banned if they don't disable Javascript. All terminal applications should be banned.

By not having a clear definition of what defines "code," the agreement puts all applications that download or take user input, parse it, and do something special based on it. That's all a programming language does -- it takes input, parses it, and does something based on that input. Thus nearly any program that parses a file and does something interesting with it should be banned.

How can levels be viewed as interpreting code?

As I mentioned before, logic can be built into the levels themselves that the host application is blissfully unaware of. This actually is another classification I would use to call something an interpreter or compiler: the application loads up unknown input, parses it, and performs actions based on the context of when the input was loaded.

Now we can get into semantics, but remember that code isn't always imperative. There's a whole world that can be called declarative programming. A common example of declarative programming is HTML. The author of HTML declares the content, and the browser must make sense of the content and display it. However, the HTML author is blissfully unaware of how it happens.

This perfectly describes an add-on level. The level declares what it will contain. The program knows how to parse this declarative model of a level, and thus it interprets it and runs the level.

What's the point

Most people would assume that Apple has this clause for security: you don't want programs to download code that would break your phone. However, I think this clause is actually more malicious than protective. I'm going out on a limb to accuse Apple of putting this clause in here to prevent Adobe from creating a stand-alone Flash player.

With this in mind, it makes perfect sense why this would be disallowed. But think about what we're missing out on (naming a couple off the top of my head):

  • LOGO app: The ability to teach kids how to program using a simple language like LOGO.
  • Mindstorms app: Think about the possibility of programming LEGO Mindstorms on an iPhone.

I really feel that the code execution/interpretation clause is hurting the iPhone more than it's helping. There is a minimal security risk, but there's already the same security risk with Javascript and media playing. Beyond that, if any bug in a programmers code can exploit the phone, the kernel and sandboxing aren't doing their job already.

This really boils down to the language of the agreement. The agreement is too open to interpretation that it's rendered useless. Apple needs to either get very specific in its definitions, or it needs to remove the clauses. There is nothing to be gained from pissing off developers. There is everything to gain from being the company who provides products that everyone loves developing for. Be that company, Apple.

Discuss | Posted on Saturday, June 20, 2009, in alacatia, iphone, development, appstore

Apple Dropped the Ball, will they pick it back up?

Before I get into my rant essay, let me preface preface it with this statement: I love my Mac, I love my iPhone, and I love writing software for both as well. I did a career flip last year and spent almost a year on a C# ASP.NET on Vista job. I learned a lot, but missed developing on my Mac. With the iPhone announcement, I began dreaming and finally quit my job to pursue my ideas.

I happened upon another person in my area starting a company building iPhone software. He also quit his day job to pursue his dreams.

Over the past few months, we've built a great code base up, have one app ready to go and several others coming down the pipe soon. Things couldn't be going better, right? Unfortunately, that's really far from the truth, and that's what leads me to write this post.

We've had an extremely nightmarish experience trying to get our product listed. Writing the software was extremely easy in comparison. I have even gotten two of my personal apps into the store. Unfortunately on Friday, one of them was delisted from searches. Today it showed back up with no explanation.

What follows is a lengthy, but hopefully enlightening, story about how we've struggled with the unresponsive, restrictive organization that is Apple.

iPhone SDK Day, March 6, 2008

I remember the day quite clearly. I was at Microsoft's Mix '08 conference in Las Vegas, and strangely enough, I was loving it. Mix is Microsoft's web developer conference, and that day I was attending sessions and networking. I had my iPhone and MacBook Pro checking the various websites for news of the SDK announcement. I kept refreshing, reading every juicy tidbit. After the announcement was finished, I kept trying to register my company into the iPhone SDK program in every session for the rest of the afternoon. No luck, the site was down.

That evening back in my hotel, I was able to sign up finally. I downloaded the SDK, and began playing with it. That was the night that the the seeds of going indie on the iPhone were planted.

Quitting My Day Job

I toiled with this decision for a while. In fact, I gave my two weeks notice several times, only to let it slide each time. I loved the job, and the only downside was that I had to use Windows. But even that wasn't all bad -- Visual Studio is a great environment, C# is a great language (especially 3.5), and I was working with a great team using bleeding edge technology (such as VS 2008 and C# 3.5 while it was still beta). I was having a great time at that job, but the allure of doing Cocoa programming as an Indie full time was too much to ignore.

I just had to do it.

iPhone 2.0 Launch Day

We were ready to launch Trip Cubby on the day of the iPhone launch. The problem? The company's application never was looked at. Out of desperation, we emailed and called, pleading our case. When we finally heard back, it sounded like we were going to get our break.

In the next week, we had several people inside of Apple look at our program. We received rave reviews.

Yet, we still hadn't been accepted into the program at that point. After more waiting, we did finally get to the "send us your company documentation" stage shortly after. We faxed the info the same day and waited.

In the meantime I submitted my personal iPhone developer application, after finding out that those get approved instantly. Sure enough, I gave them my $99 on July 12. Coincidentally, I had thrown together an application for my wife to count down the days left at her Opera "Boot Camp" she was performing at. I submitted it on the 13th right after I tested it on my device.

Of course, despite being accepted into the personal program instantly, your contracts still take another roughly 2 weeks to be approved. My app's status was promoted to "Ready for Sale" on July 21, but my contracts didn't get approved until the 28th. Even then, my app did not get listed until July 31, and at that point it didn't even show up in the "recent applications" list, because it had the date of July 18th attached to it!

The Waiting Game

While it was nice to finally see my app Countdown in the store, the product I was really proud of and ready to sell still wasn't ready. On July 28 our company's application was finally approved. Unfortunately, we still had to go through the contract setup phase (banking information, etc). We submitted our info as quickly as possible and submitted Trip Cubby the next day after some final testing.

Despite our best efforts to keep things moving along, we are helpless again at this point. We've called, emailed, etc., but nothing moves forward. Trip Cubby was approved on August 1, but our contracts are still pending completion.

Ok, enough sob story, where's the meat?

Fair enough, I know our story isn't the only one out there like this. My purpose isn't to be the first person to write a sob story. No, my purpose is to call Apple out on their missteps and suggest how they can correct them moving forward. While our dream has turned into more of a nightmare, I can narrow my misgivings to a few things:

  • Arbitrary favoritism abounds:
    • How the heck did the Wordpress application get approved and into the store overnight?
    • How did the first 4,000 developers get chosen?
    • Why do only a subset of iPhone developers with applications in the store get access to the 2.1 betas (hint: I don't have access to them)?
    • Why do the ADC select/premiere programs not give any weight on the iPhone side (hint: I was a select member) nor give access to prerelease iPhone software?
    • Why is it when getting rave reviews from everyone you show your app to, including people inside of Apple, can you not get into the store while lots of crappy software1 gets in?
  • F*$@ing NDA
  • My app Countdown mysteriously disappeared from search results on Friday. The direct link still worked, but any attempt to find it was fruitless. I can't think of any reason for it to be removed. As of mid-day today, it reappeared, still no explanation.
  • The entire above story, enough said.

These things leave me scratching my head, and coming to the obvious conclusion: Apple doesn't care about its developers. There have been times in the past that I've felt this way, but never allowed myself to really talk about it. The first hint were the false public statements about Carbon, Cocoa, and Java were peers on Mac OS X. There was the whole MacHack mentality change back in the 90s. And of course, the constant breaking of things between releases without caring too much (for a stark contrast, read Raymond Chen's excellent blog The Old New Thing).

And most importantly, the unwillingness to communicate with developers is killing us as 3rd party developers. Developing for Mac OS X, communication isn't quite as key as it is with a brand new platform, especially when the platform is tightly controlled. At least with Mac OS X, Apple can't stop you from starting a business and getting customers. It's a truly free market. The iPhone on the other hand, best of luck starting a business!

Is it worth it to develop for the iPhone?

I sure hope so. On one hand, you have this post and many, many other posts out there by developers in similar situations. On the other hand there's clearly a good market for iPhone apps: my countdown app has done surprisingly well (until it was pulled from the search results).

Clearly Apple is out to make a buck. And I don't mind that -- every company is out to make a buck. Heck, even I admit I'm in it to make a buck doing what I love.

The question is, at what expense does Apple go to make that buck? Pretty much all of my pains could have been avoided without much effort (at least, not from my perspective). If contracts genuinely take two weeks, why isn't there a more automated process for it? If application reviews take a minimum of 3 days, why not hire some more staff until things calm down? If the NDA is really a necessity, why not set up community forums that require an ADC login to get access to?

Of course the most interesting aspect of this line of thinking is that, what is it costing Apple to not approve applications? They're taking a 30% cut off of the top of the apps. This has got to be a great revenue stream for them. By making this process less than ideal, they are in effect removing revenue potential right now both for themselves and the developers who are struggling. I'm sure the market has great potential, but Apple is very actively regulating it without any communication about their reasoning.

Only time will tell if it was the right decision to quit our day jobs and pursue developing for the iPhone. I still have a glimmer of hope that one of these days Trip Cubby will be in the store, it will do well, and we will continue the journey of building great iPhone apps. But this hasn't come at no expense to us: a lot of stress and frustration.


1There's a lot of great software too, I'm a happy user and purchaser of a lot of great apps.

Discuss | Posted on Sunday, August 10, 2008, in apple, iphone, microsoft, development

WWDC 2008 Live Reactions

I've been following along and plurking a little bit, but I wanted to give a bit more detail on my thoughts. I'm listening to an audio feed and reading MacRumors and MacWorld.

The first interesting detail is that the SDK is very popular. Twenty-five thousand people have applied to the paid program, and only 4,000 have been allowed in.

  • There have been some fun applications announced so far, but in reality, I'm getting a little bored by it all. All of the products end with "will be available for INSERTPRICE when the App Store launches." Let us know when already!

  • They're building in a push-notification service to all developers. External servers can push notifications to Apple which will then push it to the phones.

  • Finally answered the question: early July launch for iPhone 2.0. Interestingly, you can use the App Store on the cell network, if the app is less than 10 megs.

  • .Mac seems useful now: MobileMe pushes your data around wherever you are. Even syncs photos. This is the sort of functionality I was hoping for out of it.

  • 6 Million iPhones sold, not too shabby. New iPhone obviously. Challenges were 3G, Enterprise, 3rd party apps, more countries, and more affordable. Comes out on June 29. Thinner, black plastic back, solid metal buttons, same display, flush headphone jack, and better audio.

  • GPS, I wasn't expecting it even though it was being rumored. The GPS tracks in the maps application, showing a dot as you move. Awesome.

  • Battery life looks really impressive. Standby 300 hours, 2G talk 10 hours, 3G talk 5, browsing 5-6, video 7, audio 24.

  • Tons of countries -- 70 total countries including China, Japan, Australia, Canada, Mexio, etc. Update: According to some sources and pictures, it appears that MacRumorsLive may be mistaken about China being part of the 70 for this year. I'm sure more details will follow on other sites, just wanted to make this post be as accurate as possible.

  • $199 for 8GB, $299 for 16GB. White version in 16GB will be available too.

  • Rolling phone out in 22 countries on July 11.

That's it. Snow Leopard is being kept further under wraps, and will only be talked about in the Mac OS X State of the Union. Overall, I'm happy. It's certainly easier on the pocketbook (heck, at that price I may even get my wife a 3G one too).

Now, the waiting game.

Discuss | Posted on Monday, June 09, 2008, in development, wwdc, random, apple, iphone


Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.