iFixit desmonta el iPad 3G

Ya sabíamos todos que lo harían tarde o temprano.


El middleware y la Sección 3.3.1

Miguel de Icaza ha escrito esta semana un profundo e informativo artículo que explica el funcionamiento de MonoTouch, y de qué modo podría evitar entrar en conflicto con la nueva sección 3.3.1 del acuerdo de licencia de Apple. El artículo apareció hace dos días, por tanto antes de la aparición de la carta abierta de Steve Jobs titulada “Relfexiones sobre Flash”. La teoría de Miguel de Icaza sobre la justificación empresarial para la nueva Sección 3.3.1, mucho más restrictiva, la confirmó Jobs de forma directa — Apple no quiere que se creen aplicaciones multiplataforma sobre Cocoa Touch que apenas alcancen un mínimo de calidad.

La segunda teoría de Miguel de Icaza habla acerca de las consideraciones sobre el interfaz que justifican los cambios en la Sección 3.3.1:

Como mencioné antes, usar soluciones multiplataforma como Flash o Silverlight haría que todas las aplicaciones no parezcan creadas para ese sistema operativo. Pero como mencionó igualmente Steve Jobs, los programadores no tendrían acceso a las nuevas funciones de iPhone OS si hubieran escogido una tecnología que no las incorporara.

Por ejemplo, cuando Apple introdujo en iPhone OS 3.2 las nuevas vistas partidas que el iPad usa habitualmente al rotar la pantalla, esa funcionalidad en concreto habría tardado demasiado tiempo en estar disponible de forma satisfactoria por ejemplo en Silverlight para el iPhone o Flash para el iPhone. O también cuando Apple introdujo la vista de interfaz (UIView) que se puede utilizar para mostrar mapas, también habría sido un problema añadir este tipo de control de interfaz. O cuando Apple introdujo GameKit, una API para conectar iPhones entre sí de modo que pudieran intercambiar mensajes entre ellos.

El compilador cruzado de Flash, y esto es algo que ya sabemos, queda explícitamente descartado por la nueva Sección 3.3.1. En lugar que ocupa MonoTouch, por otra parte, aún no está claro. Como explica Miguel, MonoTouch, a diferencia de Flash, no pretende crear interfaces multiplataforma pensados para programar una sola vez y ejecutarse en cualquier sistema:

MonoTouch trae al iPhone el lenguaje C# y el núcleo de .NET, pero no aspira a aportar un interfaz multiplataforma y tampoco ningún tipo de APIs multiplataforma para dispositivos móviles. […]

Actualizamos la plataforma para incluir soporte para el iPad 24 horas después de que Apple publicara el kit de desarrollo. Añadimos el soporte para iPhone OS 4.0 unos días después de su aparición (tardamos sobre todo porque estábamos todos bastante decepcionados). Nuestras APIs son un mapeo exacto de las APIs de iPhone.

Al igual que C y C++, si los programadores quieren reutilizar código entre MonoTouch, Windows 7 o MonoDroid, tendrán que separar su interfaz y el código exclusivo para cada dispositivo de su lógica de negocio. MonoTouch no proporciona semejante capa de abstracción.

MonoTouch no está en la misma categoría que el compilador para iPhone de Flash, puesto que no es un entorno de desarrollo multiplataforma. Es algo intermedio, por así decirlo. Pero sigue siendo una capa de middleware situada entre los programadores y las APIs de la propia Apple. Sí, actualmente MonoTouch se mantiene al día con las APIs nativas de Apple, pero ¿qué pasará dentro de tres, cuatro o cinco años si MonoTouch deja de estar al día y cientos (o miles) de aplicaciones populares para iPhone OS dependen de él? Esa situación es lo que Apple quiere evitar.

Lo siguiente es un fragmento de la carta de Jobs “Reflexiones sobre Flash”:

Por desgracia, sabemos por experiencia propia que permitir que una capa de software de terceros se interponga entre la plataforma y el programador acaba por producir aplicaciones de baja calidad y dificulta la mejora y el avance de la plataforma. Si los desarrolladores acaban por depender de librerías y herramientas de terceros, sólo pueden aprovechar las mejoras realizadas a la plataforma si dicho tercero decide adoptar las nuevas funcionalidades, y sólo cuando éste las incluya. No podemos estar a merced de que alguien decida si va a poner a disposición de nuestros programadores las mejoras que realicemos, y en caso afirmativo, hacerles esperar hasta que las incluyan.

Un ejemplo de “experiencia” lamentable de este tipo, desde el punto de vista de Apple, sería la plataforma PowerPlant de Metrowerks. PowerPlant era un kit de creación de interfaces y una plataforma de dearrollo para el antiguo sistema operativo Mac OS, que venía incluido con CodeWarrior, un compilador y entorno de desarrollo intergado creado por Metrowerks. Era muy bueno, y muy popular — muchas aplicaciones populares para Mac se habían creado con la plataforma de desarrollo PowerPlant.

El problema llegó varios años más tarde, con el salto a Mac OS X.1 PowerPlant no se diseñó teniendo presente Mac OS X, y no aprovechaba los últimos avances de Mac OS X. Por ejemplo, no se incorporó soporte para Carbon Events en PowerPlant hasta 2004. No había una forma sencilla de que aplicaciones creadas con PowerPlant pudieran adaptarse para ser aplicaciones nativas para Mac OS X. Dejando a un lado Cocoa, las aplicaciones creadas con PowerPlant no podían aprovechar las nuevas y más potentes APIs Carbon de Mac OS X.

Ahora bien, no es como comparar manzanas con manzanas, porque una de las mayores diferencias entre el antiguo Mac OS y Mac OS X es que en Mac OS no existía una plataforma de desarrollo incorporada como ocurre con Cocoa en Mac OS X. (Y hay que hacer hincapié en que Carbon fue un kit de desarrollo de primer nivel para Mac OS X durante la primera mitad de la década — podría decirse que Cocoa no llegó a ser realmente la plataforma de desarrollo definitiva hasta la WWDC  de 2007, cuando Apple canceló repentinamente la creación de una plataforma Carbon de 64 bits, que se había anunciado para Mac OS X 10.5 tan sólo 9 meses antes [durante la WWDC de 2006]). Los desarrolladores de Metrowerks que crearon PowerPlant no pudieron anticipar Carbon y Mac OS X, y mucho menos Cocoa, y los desarrolladores de Mac que decidieron usar PowerPlant no tuvieron ningún consejo por parte de Apple en plan “No, esto es lo que deberías hacer” que decidieran ignorar.

Pero debido a que PowerPlant era (a) popular y (b) no estaba al día de los nuevos avances en la plataforma de Mac OS X, se convirtió en un lastre y un freno para Apple. Apple invirtió una importante cantidad de tiempo, dinero y esfuerzo intentando dar soporte a los desarolladores de PowerPlant y en traerlos hasta donde Apple quería hacer llegar a la plataforma.

Por tanto, mi comparación en este caso no es decir que PowerPlant fuera malo o que los desarrolladores que dependían de él tomaran una mala decisión. Más bien es que Apple descubrió que había grandes riesgos al permitir que cualquier tipo de tecnología se interponga entre las APIs de Apple y los programadores independientes. Apple no podía arreglar PowerPlant. No podían portarlo a Mac OS X por su cuenta. Estaba fuera de su poder, y Motorola (que compró Metrowerks en 1999) tenía otras prioridades.

Miguel de Icaza plantea que este tipo de decisión debería dejarse en manos de los programadores independientes:

Como programador, creo que debería ser responsable de mis decisiones tecnológicas. Si escojo una herramienta de desarrollo multiplataforma que tiene un aspecto horrible en el iPhone, esto dejará el campo abierto para que un competidor lo haga mejor. O si mi aplicación no aprovecha una nueva API de iPhone OS, también estoy dejando un flanco descubierto del que puede aprovecharse un competidor. Apple no necesita intervenir imponiendo unas directrices, pues la calidad de las aplicaciones, el App Store, las revistas especializadas, los analistas y el boca a boca están creando las condiciones para que se produzca una situación de competencia darwiniana en la que sobrevivirá el mejor.

Creo que el párrafo anterior expresa muy bien la opinión de muchos programadores que se oponen enérgicamente a las restricciones impuestas por la nueva Sección 3.3.1, y en muchos casos se sienten directamente ofendidos por ellas. Más o menos algo como “dejadme que yo sea quien se arriesgue a que se abra un abismo entre el middleware que quiero usar y la plataforma Cocoa”.

Y es algo totalmente razonable. Pero el punto de vista de Apple también es razonable — ya han tenido experiencias negativas cuando herramientas y plataformas de desarrollo populares han quedado fuera de su control. En este momento, Apple tiene la autoridad para prohibir estas “capas de software de terceros que se interponen entre la plataforma y el programador” por decreto. Si esperaran hasta que surjan problemas reales de compatibilidad en el futuro, podría ser ya demasiado tarde — llegados a ese punto, si los sistemas middleware incompatibles son lo suficientemente populares, la autoridad no estará en manos de Apple, sino en las del colectivo de programadores que dependen del middleware. Apple puede prohibirlas ahora por decreto; no podrían hacer lo mismo en un futuro en el que se uso ya esté generalizado.

Con las capas que añade el middleware, la plataforma subyacente puede quedarse estancada. Apple quiere mantener todo el control posible sobre las aplicaciones nativas para el iPhone, y está usando este control para, tal y como dice el propio Jobs, impulsar “la mejora y el avance de la plataforma”.

John Siracusa habló sobre esto mismo hace dos semanas en su artículo titulado “Apple’s Wager” (el envite de Apple):

Al igual que el Mac, el iPhone salió al mercado con una enorme ventaja técnica sobre sus competidores. Pero en esta ocasión, Apple está decidida a no desperdiciar su ventaja. En lugar de eso, está esforzándose al máximo por llevar la delantera. Todo lo que pueda frenar “el avance de la plataforma” debe desaparecer. Y el mejor modo en que Apple puede evitarlo es controlando su propio destino de cualquier forma posible. Esto quiere decir, entre otras cosas, eliminar a los productores de middleware, disuadir del desarrollo multiplataforma (ya sea de forma explícita o implícita), y un control abritrario absoluto sobre la presencia de todas las aplicaciones en la plataforma.

Apple opina que otras plataformas que permiten este tipo de cosas, la mayoría de las cuales son muy apreciadas por los programadores, pagan el precio de frenar su avance respecto a la competencia.

No estoy seguro de que Apple esté haciendo lo correcto. Como ya he dicho, el punto de vista de Miguel de Icaza — que la toma de estas decisiones y riesgos debería depender de cada programador — es totalmente sensata. Siracusa tiene toda la razón al decir que Apple está haciendo una apuesta fuerte con esta decisión. Apple se está jugando todo su futuro en el mercado móvil apostando que su plataforma de desarrollo es mejor que todas las demás.


  1. La versión original de este artículo mencionaba erróneamente que PowerPlant no era compatible en absoluto con Carbon: “PowerPlant no era compatible con Carbon. No existía ninguna forma sencilla o directa de que las aplicaciones creadas con PowerPlant dieran el salto a Carbon. Eran aplicaciones que estaban condenadas a ejecutarse en modo Classic bajo Mac OS X”. Esto es incorrecto; por ejemplo, leed esta nota de prensa aparecida en Mayo de 1999. Lamento el error, pero creo que el ejemplo sigue siendo válido.

Jay Yarow comenta el problema de Microsoft con los tablets

A Microsoft le faltan aún meses para volver a entrar en la competición de los teléfonos móviles, y aparentemente no tienen nada previsto en el campo de los tablets.

‘Lo que antes llamaban claustrofobia’

La evolución de Jack Torrance, de la mano de Max Brown.

Adivinad cuántos modelos de teléfonos móviles vende actualmente Motorola

117.

Motorola antes y en la actualidad

Peter Svensson escribe para Forbes:

Motorola Inc. publicó unas ganancias durante el primer trimestre superiores a lo esperado, debido a que las ventas de sus nuevos teléfonos superaron las propias estimaciones de la empresa. También presentaron unas previsiones más optimistas que las anticipadas por Wall Street, y sus acciones experimentaron una gran subida durante la negociación previa a la apertura del mercado.

No obstante, ha perdido la posición de mayor fabricante estadounidense de teléfonos en favor de Apple Inc.. Motorola vendió un total de 8,5 millones de teléfonos durante dicho trimestre, mientras que Apple vendió 8,8 millones de iPhones. Hace cuatro años, cuando el Motorola Razr era aún popular, vendió 46,1 millones de teléfonos durante el primer trimestre.

David Chartier analiza cinco bolsos y mochilas para el iPad

Esto es el tipo de cosas que Macworld hace mejor que nadie — una comparativa de varios productos que compiten entre sí. El favorito de Chartier: el Tom Bihn Ristretto para iPads y Netbooks.

Internet Explorer 9 sólo permitirá la reproducción de vídeo con HTML5 en formato H.264

Dean Hachamovitch:

El futuro de la web está en el HTML5. Microsoft está enormemente comprometido con el proceso de desarrollo del estándar HTML5 junto al W3C. HTML5 tendrá una tremenda importancia a la hora de hacer progresar la creación y el diseño de aplicaciones web interactivas y con gran diversidad de contenidos. La especificación de HTML5 describe la inclusión de soporte para la reproducción de vídeo sin especificar ningún formato concreto de vídeo. Creemos que H.264 es un excelente formato. En su soporte de HTML5, Internet Explorer 9 permitirá la reproducción de vídeos únicamente en formato H.264.

Charlie Stross analiza la estrategia a largo plazo de Apple

No estoy de acuerdo con todo lo que dice, pero el análisis que Charlie Stross hace de la estrategia de Apple a largo plazo es fantástico en su conjunto. Esto da en el clavo:

Tengo una teoría, y es la siguiente: Steve Jobs cree que se está jugando el futuro de Apple — el futuro de una corporación con un valor de mercado que supera ampliamente los 200.000 millones de dólares — en un intento a todo o nada por hacerse con un nuevo mercado. HP se ha despertado y ha olido el bosque ardiendo, con dos o tres años de retraso; Microsoft está atrapado en un foso de alquitrán, incapaz de entender que el infierno que avanza en su dirección va a arrasar todo el ecosistema en el que existe actualmente.

La decisión de Apple de prohibir las aplicaciones creadas con el compilador multiplataforma de Flash no tienen que ver con el momento actual. Tienen que ver con la capacidad de tomar decisiones ahora — ejerciendo el control mientras lo tienen — para dar forma al paisaje que la industria en conjunto tendrá dentro de una década. Y podéis considerarme de la misma opinión que Stross — la decisión de HP de comprar Palm es una señal de que HP entiende la estrategia de Apple y de que quieren formar parte del juego.

Aquí es donde no estoy de acuerdo con Stross:

Y en realidad [Steve Jobs] no quiere aplicaciones multiplataforma que podrían robar atención y energía hacia otros sitios ajenos a su ecosistema de aplicaciones. El objetivo a largo plazo es respaldar la migración a largo plazo de Apple, que pasará de ser una empresa de hardware company con una vertiente de software a ser una empresa de servicios en Internet con una división de hardware — casi como Google, si miráis el Nexus One de Google de la forma apropiada. La alternativa es sumarse a la industria del PC mientras ésta cae en una larga espiral camino de la irrelevancia.

Apple debería añadir una fuerte infraestructura de servicios online a sus competencias básicas, desde luego. Pero el hardware nunca ha sido menos importante. Creo que el objetivo de Apple es crear software y hardware que no puedan igualar sus competidores. Desde el punto de vista del diseño, Apple crea toda una experiencia. Desde el punto de vista financiero, por otra parte, Apple vende hardware.

Reflexiones sobre los caballos

Otra carta abierta escrita por el consejero delegado de una empresa.