There’s a wealth of cross-compilers in the wild that looks to be outlawed by the same provision. Titanium, Gambit Scheme, MonoTouch, and Unity3D are a few of the bigger ones. These layers allow you to write applications in programming languages like Scheme or C# and compile that into a native iOS applications (as well as other platforms like Android).
Lots of developers, me included, have had such a gut-turning reaction to Apple’s new policy that we have a hard time thinking and speaking rationally. The emotions take over and we start screaming “fascists!”, which isn’t very persuasive to non-developers who don’t have the same instinctual reaction. So instead, allow me to go through five (mostly) rational arguments for why this is a bad idea.
1. The App Store is not a carefully curated gallery
Some have argued that if Apple lets Flash developers compile their applications to iOS, the App Store is going to be overrun by shitty applications and regular folks won’t be able to find anything. The barbarians are at the gate!
The problem with that argument is that the App Store already has some 180,000 apps listed. I assure you that they are not all cream puffs. I also assure you that there is no way that the best flash application is worse than the worst native app currently in the App Store.
This argument would have worked if the App Store was a carefully curated gallery of perhaps 1,000 applications. But it is not, which, btw, is totally fine. The web is not a carefully curated gallery of web pages and yet we’re still able to find the good stuff all the time thanks to intermediaries of discovery.
2. Changing your license in-flight makes developers nervous
This issue is exactly why developers fear being sharecroppers. One day you’re happily developing an application for Apple’s platform and dreaming of big things to come, the next Apple kills you dead with the stroke of a pen.
It’s hard to build a business on a platform where you feel like you cannot trust the men in power. If they can take down Adobe a few days before the launch of their flagship product, what hope do smaller players hold?
If you view the economy as the App Store, Apple can be viewed as Venezuela where the rules of commerce are constantly changed and investors start fleeing for the fear that they’re next. They may not leave today because of vested interests, but you’re scaring good people away and driving them to alternative platforms. But since the effects won’t be felt tomorrow, it doesn’t appear nearly as dangerous as it really is.
3. Enforcing public APIs does not make Apple beholden to Adobe
Louis Gerbarg argues that Apple will be beholden to Adobe if they allow Flash as a cross-compilation layer because of backwards compatibility concerns. I don’t think that’s true. First of all, Apple already has a policy against use of private APIs. They can reject applications from the App Store if they find them in violation, Flash-compiled or not.
Second, imagine if you have 1,000 applications done against the native APIs. What’s the likelihood that some of them will be using private calls? Given the debacles we’ve seen so far over this, I’d say that a fair number of them will. Thus, these applications might potentially break when Apple updates iOS.
Now imagine the same 1,000 applications written in the sandbox of Flash. Is it easier or harder to ensure that the Flash compiler doesn’t tab into private APIs than it would be with 1,000 independent apps written straight to the metal? I’d say easier.
Also, who stands to lose more if all these applications break: Apple or Adobe? Adobe would screw over their entire base of developers and Apple would lose 1,000 applications. I’d say Adobe would be in more hot water and given all the hoopla, I think they’re going to be extra diligent to not step over the public/private API lines.
4. Selective enforcement is unfair and unsettling
The App Store review process has long been under fire for being fraught with selective enforcement. Some apps get rejected for the doing things already-confirmed apps didn’t get questioned about. This is especially true when Tier A developers like EA gets away with things that Tier C developers in their basement don’t. It breeds an air of aristocracy where the lords can roam as they please but the peasants are kept on a tight leash.
This selective enforcement is already happening with built-in interpreters. Apple’s rule 3.3.2 reads:
An Application may not itself install or launch other executable code by any means, including without limitation through the use of a plug-in architecture, calling other frameworks, other APIs or otherwise. No interpreted code may be downloaded or used in an Application except for code that is interpreted and run by Apple’s Documented APIs and built-in interpreter(s).
This means no Java or Flash apps that just run within an interpreter. But it’s also supposed to mean that game developers like EA and others can’t use languages like Lua to program gameplay, yet that isn’t happening. The lords are free to roam indeed.
5. For developers it’s about more than just business
“But hey, if you don’t like it, why don’t you just go somewhere else?”. Developers are indeed free to vote with their feet. Take their code to more open platforms and stop complaining about Apple. Some already have.
But remember that many developers came to Apple in the first place to escape these kind of antics from the big man of the day, Microsoft. Apple has benefitted big by appealing to developers on more than just business. Many developers switched to Apple long before it was economically a good idea just so they could get away from Microsoft.
Look at the number of great free, ad-less applications in the App Store. Programmed by developers who did it for fun and love. Because they could and they wanted to. Not just because Apple had the biggest market share of smart phones. Apple benefits from that.
It’s better to be loved than to be feared. It’s only when you can’t make them love you that you want them to fear you. Apple has jumped the gun. We weren’t done loving you before you made us fear you.