Under The Microscope

Airfoil Speakers Touch 1.0.1 Finally Ships

First, the basics: Airfoil Speakers Touch version 1.0.1 is now available in the App Store. This update fixes issues with audio sync that could be heard when audio was playing to multiple outputs. If you haven’t used Airfoil, it will let you send any audio from your Mac or PC out to the AirPort Express, Apple TV, other computers, and with Airfoil Speakers Touch, to your iPhone or iPod Touch.

There’s a bigger story here, however. It’s one that’s been told before, but until things change, it needs to keep being told. Simply put, the App Store is broken.

Over Three And A Half Months

Our problems began back in July, when we first submitted this bug fix for Airfoil Speakers Touch to the App Store. While we generally disliked the restrictiveness of the review process, we’d never had any direct problems with it. Further, this was a mere bug fix – it just improved the way audio was received. It was functionally identical to the already-approved version 1.0.0. As such, we expected to have this update available by the end of July or early August.

Not. even. close. Today, over three and a half months after we initially submitted our bug fix update for review, it’s finally available. So what happened?

Our First Two Rejections

After our first submission back in July, Airfoil Speakers Touch was rejected, for using “Apple Logo and Apple-owned Graphic Symbols”.

Apple Logo and Apple-owned Graphic Symbols:

You may not use the Apple Logo or any other Apple-owned graphic symbol, logo, or icon on or in connection with web sites, products, packaging, manuals, promotional/advertising materials, or for any other purpose except pursuant to an express written trademark license from Apple, such as a reseller agreement.

It wasn’t clear what precisely this was about, but if you’ve used the application, you’ve likely seen something similar to this screenshot:

As you can see, Airfoil Speakers Touch displays an image of the sending Mac, with a screenshot showing the source application. If you’re sending from an iMac with Safari as your source (as pictured), it shows your iMac running Safari. If you’re sending from a MacBook Pro, it shows a MacBook Pro, and so on. These computer images are provided by Mac OS X itself, using a public function expressly for this purpose.

We also show the source application’s icon – Safari in the above example. This icon also comes from a public function provided by Apple as part of Mac OS X. These functions are expressly made to enable developers to get this artwork, and use it just as we are.

We’ve done this before, in Airfoil on the Mac and Windows, when we talk to the Apple TV. It’s a nice little bit of polish, but it’s also functional – it lets the user verify what machine they’re receiving from, what source application, and what that source application is doing. Nonetheless, it seemed from this rejection that Apple wanted it out.

Naively, we simply re-submitted the application without changes, in the hopes of getting a more sensible reviewer. A full four weeks later, on August 31st, we were rejected again.

Our Third, And Final, Rejection

At this point, we knew we needed to talk to a real person. Perhaps, we reasoned, an app reviewer was simply reading their guidelines and following them overzealously. Following Craig Hockenberry’s advice, we sent an email to the App Review address, explaining how our application worked and why we felt there were no trademark issues. Eventually, on September 2nd, we were told to resubmit the application for further review. Then we waited.

On September 12th, we received a form email stating that the review was taking longer than expected. No other information was given.

On September 21st, we emailed to ask where we were in the process. On the 22nd, we were again told it was “still undergoing a review process”, with no additional detail.

Finally, on October 5th (over a month since the most recent submission, and almost two and a half months since our initial submission), we were contacted by an Apple employee via phone. We were told that despite our explanation, Apple was unwilling to ship this update, and it would again be rejected.

However, later that day a second Apple employee phoned. He was a fan of our products, and wanted to take another crack at getting this approved the way it was. With a mixture of hope and trepidation, we provided him even more details, and awaited his reply.

In mid-October, he called again, saying that there was nothing for it. In order to ship our update, we had to stop showing both the computer images and Apple’s app icons. It didn’t matter that Apple provided us with code expressly to enable us to show these, nor that the same functionality had been previously approved. We’d reached the end of the road – if we wanted to ship this update, we had to remove the functionality.

“When angry, count to four. When very angry, swear.”

Needless to say, we were quite upset. There was no change between the approved 1.0.0 and the new 1.0.1 – this functionality had already been approved once. Further, if simply showing another application’s icon is a trademark issue, then the software world is going to need to make some drastic changes, and Mac OS X’s Dock will be the first to go.

Worst of all, however, Apple left 1.0.0 in the store, a buggy version being downloaded hundreds of times per day. The exact same “infringing behavior” could be found in 1.0.0, and they weren’t taking that down. As such, the only thing Apple’s process was doing was preventing a needed bug-fix from reaching the hands of our mutual customers.

Bend, Don’t Break

Of course, being angry wasn’t helping our users, and that’s always our goal. We didn’t want to remove functionality to do it, but we had little choice, because Apple controls the means of distribution for iPhone software. We had to compromise.

Now, when you receive audio on Airfoil Speakers Touch, you’ll see a generic computer screen, not your specific Mac. Further, if you’re receiving audio from an Apple app, such as Safari, QuickTime Player, or iTunes, you’ll see this:

If you tap the artwork in Airfoil Speakers Touch, you’ll be taken to this page, providing a pithier summary of the situation. Is it likely to change anything? Probably not. But it was the only way we could remove this functionality and still sleep at night.

What Now?

As noted on that page, we urge you to do two things. First, be aware that Apple is acting as a gatekeeper, and preventing you from getting the software that developers such as ourselves are trying to provide you. We wanted to ship a simple bug fix, and it took almost four months of slow replies, delays, and dithering by Apple. All the while, our buggy, and supposedly infringing version, was still available. There’s no other word for that but “broken”.

Second, consider donating to the EFF. The change we made to Airfoil Speakers Touch wasn’t their idea, nor have they endorsed it. However, in addition to being one of Rogue Amoeba’s favorite charities, they’re also the organization defending the rights of both consumers and developers in the digital world. If Apple is to change, it may take such an organization to make it happen.

Focusing On The Mac

In the future, we hope that developers will be allowed to ship software without needing Apple’s approval at all, the same way we do on Mac OS X. We hope the App Store will get better, review times will be shorter, reviews will be more intelligent, and that we can all focus on making great software. Right now, however, the platform is a mess.

The chorus of disenchanted developers is growing and we’re adding our voices as well. Rogue Amoeba no longer has any plans for additional iPhone applications, and updates to our existing iPhone applications will likely be rare. The iPhone platform had great promise, but that promise is not enough, so we’re focusing on the Mac.


Update (November 13th, 2009): Please see our follow-up post as well.

Our Software