Algunas veces algunos temas pueden pasar desapercibidos cuando se acaba la emoción de la noticia en sus primeras horas, y es el caso de la posición de Miguel de Icaza y el proyecto MonoTouch respecto al cambio en las condiciones impuestas por Apple al software permitido en iPhone OS 4.
PUBLICIDAD
Para quienes a esta altura ya no lo recuerden, el asunto comienza cuando Apple decide cambiar una de las condiciones para las aplicaciones que correrán en iPhone OS 4 (y por extensión, en iPad), aumentando las restricciones respecto a qué lenguaje de programación estaba permitido. Originalmente, el punto en cuestión decía que las aplicaciones sólo podían usar el API documentado y oficial del sistema operativo, algo bastante sensato para evitar problemas con API’s inestables que en algún momento podían desaparecer. Pero posteriormente en iPhone OS 4 se agregó la condición de que sólo se podía programar en C, C++, Objetive-C o en Javascript soportado por WebKit, además no se permitiría ninguna capa de traducción intermedia.
Este cambio en las condiciones impuestas a las aplicaciones para iPhone OS 4 dejó totalmente fuera de la ley al resto de los lenguajes de programación, entre ellos se encuentra ActionScript y por lo tanto Adobe Flash, generando una larga cadena de declaraciones entre Apple y Adobe, terminando con Adobe llevándose la pelota a su casa. Al mismo tiempo, los ojos de muchos desarrolladores se pusieron sobre MonoTouch, que también quedaría fuera de aquellas condiciones.
Durante el día del anuncio se intentó obtener alguna declaración de Miguel de Icaza, quien no quiso referirse directamente al tema, pero era cosa de esperar a que se aquietaran las aguas para encontrar su postura en su blog personal.
Las teorías de Miguel
Aunque Jobs ha tratado de explicar sus motivos, obviamente no dará aquellos que son parte de su estrategia corporativa, y es ahí en donde otros personajes han tratado de explorar. Miguel de Icaza agrega dos posibles explicaciones : Una de negocio y otra de plataforma.
Respecto al negocio, la ventaja de Apple con iPhone es creó un nuevo estándar sobre lo que entendemos como teléfono móvil inteligente, desde aspectos de hardware hasta aspectos de interfaz, pasando por un componente clave del éxito: Su AppStore.
PUBLICIDAD
El problema es que una vez fijado ese estándar, ahora las otras compañías saben hacia donde dirigir sus esfuerzos, se sabe qué es lo mínimo requerido por un usuario de este tipo de dispositivos. Es más, pueden evitar los defectos y/o errores de Apple y construir mejores productos si quisieran (o lograran visualizar).
Si Apple pierde el control de su plataforma, herramientas como Flash y Flex permitirían que las mismas aplicaciones disponibles para iPhone pudieran llevarse a los equipos de la competencia con bajo esfuerzo. Eso lo haría perder su aspecto diferenciador : El ecosistema de aplicaciones.
Al forzar la tecnología usada en las aplicaciones para iPhone OS 4, éstas serán cautivas de la plataforma y no podrán beneficiar de ninguna forma a la competencia. Pretty cool huh?
El segundo aspecto explorado por Miguel es un asunto más técnico, ya que crear aplicaciones portables entre distintos sistemas hace que se vean extrañas en comparación a las aplicaciones nativas. Otro aspecto negativo es que al tener capas de abstracción o emulación sobre el sistema nativo, cualquier cambio en éste se demorará en verse reflejado en esas capas, y así hubiera sucedido si tecnologías como Flash o Silverlight estuvieran disponibles para iPhone.
El control de Apple sobre las aplicaciones que corre su teléfono es bastante comprensible y astuto. El usuario normal no distingue entre las capacidades del aparato, su plataforma o incluso, sus aplicaciones, por lo tanto si las aplicaciones funcionan mal, entonces el sistema completo será percibido como deficiente. Si las aplicaciones usan tecnologías como Flash, en donde Apple no puede asegurar de que todo funcione correctamente, los usuarios finales tendrán una mala experiencia con el aparato. Esto no es nuevo y basta ver lo que sucedió con Atari 2600 y los juegos desarrollados para esa consola, cuando el nivel de calidad de las aplicaciones cayó tan bajo que casi sepultó a los videojuegos a principio de los ’80.
En qué posición queda MonoTouch
Miguel dice que hasta el momento los que han hablado de MonoTouch no le han hecho gran favor, ya que es evidente de que desconocen cómo funciona. En este caso no se trata de una capa de abstracción, sino que una forma de compilar directamente contra la API pública y oficial de Apple.
Es tan directa la relación entre el código ejecutable generado por MonoTouch y la plataforma nativa, que solo demoraron horas en dar soporte al iPhone cuando salió su SDK, y un poco más de tiempo para dar soporte a iPhone OS 4.
Dejando el lenguaje de lado (C#), MonoTouch es básicamente un set de bibliotecas de propósito general para facilitar el desarrollo de aplicaciones en iPhone, por ejemplo incorporando un recolector de basura y otros mecanismos para ayudar a evitar errores clásicos de la programación en C y sus derivados. Se trata de una infraestructura de aplicaciones que cualquier desarrollador moderno esperaría.
Si bien no hay una declaración explícita de que MonoTouch cumple o no con las condiciones impuestas por Apple, Miguel da a entender que no es comparable a tecnologías como Flash ni tampoco se trata de una capa de abstracción sobre el sistema operativo nativo, sino que es simplemente otra forma de generar código ejecutable en él.
Finalmente en respuesta a uno de los comentarios, Miguel aclara que las condiciones impuestas por Apple están orientadas a las aplicaciones aceptables en su App Store y no a las aplicaciones privadas que por ejemplo podría entregar una empresa a sus propios empleados. Independiente de lo que diga Apple, el desarrollo de MonoTouch continuará mientras haya interés en usarlo.
Estamos para servir a nuestros usuarios
Esto significa que continuaremos apoyando a MonoTouch en iPhone OS. En parte porque las instalaciones empresariales no están sujetas a las nuevas condiciones y actualmente es un sector en donde MonoTouch se está usando.
Adicionalmente, hemos expandido nuestro trabajo para llevar MonoTouch a MacOS. Lo estamos haciendo porque los desarrolladores quieren usar Mono en esa plataforma. Al final del día, se trata de código abierto, por lo que si nosotros no lo apoyamos, otro lo podría hacer.
Pensamos que agregamos un valor significativo al hacerlo nosotros mismos, ya que tenemos un montón de experiencia en el área.
Dicho eso, iremos a donde los desarrolladores vayan. Si mañana los desarrolladores necesitan Mono para lavavajillas, estaremos llevando Mono a los lavavajillas.
Como nota aparte: También estamos trabajando en Mono para Android.
Link: MonoTouch and Apple’s Section 3.3.1 : Two Theories (Miguel de Icaza)