Unity3D, MonoTouch and Flash CS5 to be banned from iPhone/iPad’s Ecosystem
Up until now a few solutions existed if you wanted to avoid C/Objective C to code for the iPhone and specially to achieve some code portability/compatibility with other platforms. Examples of those solutions are Unity3D, Flash CS5, MonoTouch, HaXe and other static-compiters or trans-compilers like XMLVM.
As reported by several sources (e.g. this Engadget article) this is about to end due to the new iPhone’s 4.0 SDK agreement which states the following:
Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs. Applications must be originally written in Objective-C, C, C++, or JavaScript as executed by the iPhone OS WebKit engine, and only code written in C, C++, and Objective-C may compile and directly link against the Documented APIs (e.g., Applications that link to Documented APIs through an intermediary translation or compatibility layer or tool are prohibited).
I’m no lawyer but this seems pretty straightforward, you have to use Objective-C, C, C++ or Javascript to code anything that will run on an iPhone/iPad. The wording «originally written in» makes it perfectly clear that even if using a trans-compiler (e.g. translate Java to ObjC like XMLVM does) won’t be legal and might be cause for rejecting an application’s submission. The last piece also prohibits static compilation in any form or shape, which is probably the method covered by all the other solutions like Unity and MonoTouch, I don’t know the specifics of Flash CS5 but it has to be one or another.
Personally I’m not actively using any of those solutions for my coding needs, but I can imagine this will create a lot of havoc, pissed off customers as well as a possible uprising against Apple. The only question unanswered for me at this moment is whether this rules will only apply if you use the new 4.0 SDK or if they will make sure the agreement will be enforced via their program portal, making it impossible to submit any new applications or updates without the need to obey the new rules whichever SDK version you used.
The question of whether people will follow the rules or not is something time will tell, but it’s pretty much on Apple hands. Detecting if you used static or trans-compilation is a question of Apple engineers finding specific code symbols and patterns that are unique for each of the solutions around the market, similar to how anti-virus try to find virus signatures. However, this hasn’t worked so well for anti-virus companies so far, it’s a perpetual game of the cat & mice with a single vendor trying to neutralize an ever increasing numbers of smarter and smarter hackers.
While really enforcing this policy might be impossible with a 100% success rate, specially if the source for the compiler is available, making it possible to obfuscate those unique signatures, it surely will be a major FUD weapon towards the companies that provide this solutions as well as their customers. But what exactly does Apple win with this move? Is it a statement about the quality of current third-party solutions or is it something else?
I can’t imagine a company as large as Adobe not producing a decent compiler, specially if specifically designed for the iPhone/iPad platform, and while I don’t have hard numbers I also can’t imagine the huge numbers of Unity3D games suffering from some major lack of quality at the tool-set level. After all, most of the iPhone’s SDK is based on open source tools like gcc, llvm and the pretty much standards of C and C++. Sure, Apple’s Objective-C has many custom improvements, still we’re doing wrappers and new compilers everyday on almost every platform and I don’t think that could be the problem either.
To be honest, the only explanation I can think of to justify this move is very weak to say the least. Selling Macs for development purposes can’t really mean a decent revenue stream for Apple and truth be told, Unity3D as well as MonoTouch actually require a Mac to be able to test/debug on the simulator and/or device.
However strange this move seems, I’m sure that Apple has it’s reasons although I might not like or agree with them. Personally I believe this to be a very bad move, that can potentially hurt them more than the potential benefits and I hope/expect that the public’s pressure will force them to revise and go back on this decision sooner rather than later. I’m sure someone somewhere will already have started a petition to ask Apple to reverse those changes and those pesky letters addressed to Steve Jobs will surely start arriving soon. Time will tell.




























