Antes de la aparición del kit de desarrollo de iPhone OS 4, la sección 3.3.1 del acuerdo de licencia del programa de desarrolladores para el iPhone rezaba lo siguiente:
3.3.1 — Las aplicaciones sólo pueden utilizar APIs documentadas de la forma indicada por Apple y no deben emplear ni llamar a ninguna API privada.
En la nueva versión del acuerdo de licencia publicado hoy por Apple (y que debe ser aceptado por los desarrolladores antes de descargar la versión beta del kit de desarrollo de la versión 4.0), la sección 3.3.1 ahora reza lo siguiente:
3.3.1 — Las aplicaciones sólo pueden utilizar APIs documentadas de la forma indicada por Apple y no deben emplear ni llamar a ninguna API privada. Las aplicaciones deben estar escritas originalmente en Objective-C, C, C++, o JavaScript tal yc omo son ejecutadas por el motor WebKit de iPhone OS, y únicamente código escrito en C, C++ y Objective-C puede ser compilado y enlazar con las APIs documentadas (esto es, se prohiben las aplicaciones que enlazan con APIs documentadas mediante una capa o herramienta de traducción intermedia).
Lo que yo interpreto con este nuevo texto es que están prohibidos los compiladores cruzados, como por ejemplo el compilador de Flash a iPhone que estará incluido en la próxima versión de Flash Professional CS5 que lanzará Adobe. Esto también prohibe las aplicaciones compiladas con MonoTouch — una herramienta que compila aplicaciones escritas con C# y .NET para el iPhone. No está claro qué significan estos nuevos términos para herramientas como Titanium y PhoneGap, que permiten a los desarrolladores escribir código JavaScript que se ejecuta en WebKit dentro de un empaquetador nativo para el iPhone. Puede que sigan siendo válidas. Este tweet escrito por PhoneGap sugiere que no están preocupados. La gente de Appcelerator comprenden, por otra parte, que podrían quedar fuera de lo autorizado con Titanium. El kit de desarrollo Corona, creado por Ansca, que permite escribir aplicaciones para el iPhone usando Lua, sí que me parece fuera de lo permitido por Apple.
Al principio pensé que esto prohibiría los juegos creados con Unity3D, pero quizás no sea así — Unity3D genera un proyecto Xcode completo y archivos fuente en Objective-C, así que es más bien un preprocesador que un compilador cruzado. Es difícil decirlo. Si me obligaran a decidirme, el hecho de que los programadores escriben código C# pone a Unity3D en el lado idebido de esta norma.
No se mencionó este cambio durante el evento de presentación de hoy, pero el texto del acuerdo no deja mucho margen para Flash CS5. No quedaría más claro aunque hubieran mencionado directamente el nombre de Flash CS5. (Me pregunto qué hará ahora Adobe. CS5 está a punto de ser puesto a la venta y el compilador de iPhone es la característica principal en esta nueva versión. Básicamente están jodidos).
No estoy seguro de qué piensa hacer Apple para que se cumpla esto, pero tal y como lo veo, las aplicaciones de iPhone creadas con Flash CS5 se pueden identificar fácilmente inspeccionando los contenidos del paquete de la aplicación. No estoy seguro de que existan “capas o herramientas de traducción intermedia” que produzcan paquetes de aplicaciones que no se puedan distinguir de otros paquetes de aplicaciones generadas con Xcode y el kit de desarrollo original.
Actualización: Para dejarlo claro, no creo que Apple esté yendo a por Flash CS5. No obstante, sí que creo que el compilador cruzado de Flash CS5 es el paradigma del tipo de meta-entornos de desarrollo que Apple no piensa permitir. Lo mismo es válido para MonoTouch. Lo que Apple no quiere — y como ahora vemos, no va a permitir — es que nadie que no sea Apple defina el entorno de desarrollo para crear aplicaciones nativas para el iPhone. Lo que Apple dice con esto es: si queréis crear una aplicación nativa para el iPhone, debéis usar nuestra plataforma; si queréis hacer cualquier otra cosa, entonces hacedlo con una aplicación web optimizada para el iPhone. Básicamente, iPhone OS soporta dos plataformas de software: Cocoa Touch y la web. Apple no va a permitir que nadie cree una meta-plataforma sobre Cocoa Touch. Creo que este comentario aparecido en Hacker News de la mano de “raganwald” acierta totalmente sobre el punto de vista que tiene Apple sobre el tema.