Earlier today, iOS developer Rogue Amoeba announced that Apple had removed AirFoil Speakers Touch from the iOS App Store. Some people took this to mean that its features were coming in iOS 6, and Apple didn’t want the competition. Updated below.
Rogue Amoeba was understandably surprised by the sudden removal of the app, since the app had been in the store so long and had not gotten a major feature update since it was last reviewed and approved by Apple.
Rogue Amoeba’s Paul Kafasis posts:
As far as we can tell, Airfoil Speakers Touch is in full compliance with Apple’s posted rules and developer agreements. We’ve already filed an appeal with Apple’s App Review Board, and we’re awaiting further information. Unfortunately, Apple has full control of application distribution on iOS, leaving us with no other recourse here.
Rogue Amoeba had previously had issues with Airfoil Speakers Touch being rejected for using perfectly legitimate standard iconography in its status displays. This time, however, the team has been given even less information.
Kafasis told us that all Rogue Amoeba has heard from the company is that it was rejected for “undocumented use of public APIs”. There has been no clarification on what that means, Apple has not explained which APIs are in question here and Kafasis says that they believe they have stayed in compliance with Apple’s guidelines throughout.
The app, which allows users to receive audio from other iOS devices and iTunes, has been in the store since 2009. This is probably the biggest question mark, and the one that has the company most puzzled. The version of Airfoil Speakers Touch that was removed from the App Store was already vetted by Apple and is a popular app from an established Mac and iOS developer.
So why exactly was the app removed?
From time to time, Apple introduces a feature of its operating systems or apps that mirror the features of existing apps so well that it goes beyond homage. Either a parallel service was under development at Apple, or it felt that the idea was so universal that its integration was necessary.
This is called getting ‘sherlocked’, after developer Karelia Software’s app Watson, which had its functionality almost completely duplicated by Apple’s Sherlock 3.
Some people have theorized that Apple removed Airfoil Speakers Touch from the App Store because it was preparing to introduce similar features in its (potentially) upcoming iOS 6 software.
In short, some feel that Apple is about to sherlock Airfoil Speakers Touch by adding its functionality to the standard set of iOS AirPlay behaviors.
But there really isn’t a precedent for this sort of thing. Apple has sherlocked many apps and services over the last few years, and I can’t remember a single instance of Apple telegraphing this kind of move by booting an app out of the App Store in advance of the feature appearing.
Growl, as a recent example, was published in the Mac App Store last October, and a very similar feature was announced as a part of Mountain Lion earlier this year. The popular app Instapaper had, if not its complete feature-set, definitely one core part of it, duplicated with the addition of Reading List to Lion.
Neither of these apps was removed from Apple’s ecosystem to make way for an upcoming OS feature. Apple has no need to do this and hasn’t made a habit of it in the past.
That doesn’t mean that Airfoil might not find its features duplicated by Apple in an upcoming version of iOS, but it does make it doubtful that a removal of the app at this point is any indication of that.
But that still leaves questions for why Airfoil Speakers Touch has suddenly been found to be in violation of some mysterious API rule. This is an app that hasn’t materially changed its core functionality in years, and whose recent update went through Apple’s review process back in April without incident.
One possible reason is that Airfoil touch may make use of a private key to emulate a standard Apple AirPlay device like the AirPort Express. This topic was broached by a commenter on the Hacker News thread about the app’s removal.
Apple uses a pair of keys, one ‘private’ and one ‘public’, to allow devices to send and receive audio streams over AirPlay and via Apple products like the AirPort Express. The public key has been known for a long time. It has allowed third-party software to stream out to devices like the AirPort Express. Products like Rogue Amoeba’s Airfoil for Mac and Windows.
The private key was just unveiled in April of last year, and it allows third-party bits of software to act as recievers as well as transmitters.
It is conjecture on my part, and on the part of the commenter, that Airfoil Speakers Touch uses this private key to offer the particular features it does. However, if this were true, it would definitely fall into a very dark grey area as Apple restricts the use of this private key to licensed companies.
Now, this is merely a conjecture. AirPlay devices like speakers have a hardware authentication chip that enables reception from AirPlay software. But the methods used aren’t the most important issue at hand.
The sudden rejection of the app could have come from a change in policy that restricts the use of this private key more aggressively, or any other random API really. Since Apple doesn’t have a status for every rejection, it uses ‘improper use of public APIs’ as a catch-all reason in many situations, perhaps even this one.
The real issue
But therein lies the issue. If Apple changed its rules in some way, then it has an obligation to the developers on its platform to tell them so in plain language. The opacity of the situation is the most frustrating thing, especially for a developer like Rogue Amoeba, who has followed the explicit guidelines for years, even in the face of frustrating interaction.
In some ways, it’s a similar issue to those developers looking for more communication with Apple in regards to the bug reporting system Radar.
As the creator and maintainer of the App Store, Apple has the right to set rules for its use and rules for the developers looking to sell apps there. But it also has a responsibility to speak to those developers in plain language and inform them when either the rules have changed or they have been broken in an unexpected way.
We have reached out to Apple about the issue, but for now the issue remains opaque. Meanwhile, Rogue Amoeba’s app, downloaded in the tens of thousands and previously approved by Apple in its current form, remains unavailable.
Update: It appears that John Gruber of Daring Fireball was hearing much the same thing about why Airfoil Speakers Touch was rejected. He goes into further detail about the matter but also feels, as I do, that it isn’t due to iOS 6.
Apple also apparently confirmed to The Verge that the AirPlay reciever function of Airfoil Speakers Touch is what got it in hot water, as it uses ‘private APIs’.