El año de Linux en los bolsillos
El titular no dice toda la verdad; en todo caso los candidatos son los últimos años, cuando el núcleo Linux de Android se metió en la mayoría de nuestros bolsillos (hasta el 75%, según algunos estudios). Sin embargo, el primer mes de 2013 aportó varias novedades interesantes que abren nuevas oportunidades y opciones a usuarios, desarrolladores y sistemas móviles basados en Linux.
y baja con un nuevo sistema operativo, Tizen. Al día siguiente, Canonical, desarrolladora de Ubuntu, anunció Ubuntu for phones. Como si faltasen novedades, dos semanas más tarde se presentaron los dos primeros dispositivos de la empresa española Geekphone que funcionan con el sistema operativo FirefoxOS promovido por la Fundación Mozilla con otra empresa española -Telefónica- como uno de los principales colaboradores financieros y técnicos (seguramente la razón de que Mitchell Baker, presidenta de la Fundación Mozilla, se haya mudado a Barcelona el año pasado).
Es interesante que al mismo tiempo que Android domina el mercado y adquiere una calidad y madurez comparable a la de su gran competidor, el iOS de Apple, aparezcan alternativas derivadas pero tan diferentes. El argumento de los protagonistas suele ser de índole técnico: tener sistemas sólo basados en HTML5, más ligeros y con menos requerimientos de hardware. Pero también se leen y adivinan otras razones. Aunque el sistema Android es software libre, Google tiene un gran control sobre el ecosistema: determina las pautas de desarrollo y lanzamientos, es propietario de la marca y logo de Android que le permiten establecer condiciones a los fabricantes, hasta las aplicaciones más usadas son programas -no libres- de Google: Play, Maps, Gmail, etc.
Las razones técnicas
Android Inc. nació en 2003 para desarrollar el sistema Android, luego fue adquirida por Google en 2005. En 2007 se creó la Open Handset Alliance para fomentar su desarrollo, y se lanzó el primer dispositivo con Android en 2008. La pila de software de este sistema operativo está formada por software libre: Linux, herramientas de software necesarias, y en la capa más alta la máquina virtual Dalvik, la responsable de ejecutar el código de las “aplicaciones nativas” para Android, escritas en Java.
La elección de Java como lenguaje de programación fue criticada desde el principio. A diferencia de iOS, que ejecuta en código nativo del procesador (compilado desde el fuente en Objective C), en este caso la ejecución no es directa, Dalvik es el responsable de ejecutar el código intermedio de Java. El objetivo era la independencia del procesador, aprovechar las librerías existentes, y atraer a la masiva comunidad de programadores Java. Los desarrolladores de Android hicieron un gran esfuerzo en optimizar la ejecución de los programas, Dalvik no es la máquina virtual de Java estándar, sino una específicamente diseñada para dispositivos de poca memoria y potencia, en las últimas versiones incluye optimizaciones tan importante como JIT (Just In Time compiler).
Las optimizaciones de Java/Dalvik no son las únicas. Android aprovecha las capacidades más avanzadas del Linux para minimizar el uso de memoria mediante una arquitectura muy bien diseñada. Por razones de seguridad, las aplicaciones se deben ejecutar como procesos diferentes (similares a los procesos de cualquier Unix o distribución GNU/Linux), con su propio intérprete y librerías de Java. Para no duplicar el consumo de memoria de cada proceso, se usa de forma muy ingeniosa la técnica Copy On Write (COW) de Linux, que evita duplicar páginas de memoria de sólo lectura o ejecución.
A pesar de las optimizaciones, las críticas continúan justificadamente. Android todavía no ha llegado a la suavidad y uniformidad de tiempos de respuestas del iOS. Incluso en las últimas versiones de 4.2 se observan regresiones importantes en este campo.
Los tres nuevos sistemas operativos -Tizen, Ubuntu for phones, y FirefoxOS- están basados, como Android, en el núcleo Linux y prácticamente sus mismas herramientas, pero los tres eliminan la capa de Java/Dalvik.
Las otras motivaciones
El dominio del mercado de un sistema operativo libre, pero con una enorme dependencia de Google, no convencía -ni convenía- a muchos fabricantes, lo que parece haber generado una falta de compromiso con la marca. Así, la mayoría de los fabricantes no dedicaron recursos para mantener actualizados sus dispositivos con las innovaciones y actualizaciones frecuentes, frutos de la rápida evolución de Android.
Esa falta de compromiso generó una “fragmentación” por la variedad de versiones -antiguas y modernas- disponibles simultáneamente. Así, los desarrolladores deben dedicar más esfuerzos para mantener compatibilidad con las antiguas versiones y al mismo tiempo aprovechar las mejoras de las últimas. Una situación no deseada por nadie. Google hace esfuerzos para evitar esta fragmentación, por ejemplo, con la Platform Development Kit que facilita el trabajo de adaptación de Android a los diferentes terminales, pero no fructificaron lo suficiente todavía, ni siquiera entre las marcas más importantes.
La situación tampoco interesa mucho a las operadoras telefónicas. Cada terminal Android que subsidian significa un mercado aún mayor para Google, por los nuevos usuarios y el tráfico generado por el buscador, el navegador Chrome y las demás aplicaciones importantes. La Fundación Mozilla tampoco estaba en una situación cómoda, Firefox perdía terreno en los dispositivos móviles, el Webkit es el motor HTML más usado en Android (Chrome) e iOS (Safari y Chrome), lo que implica una reducción de la influencia de Mozilla sobre los estándares web futuros.
Se daban todas las condiciones para probar nuevas alternativas con una ventaja adicional, Android y Linux ya les facilitaron el trabajo: podían utilizar el mismo sistema operativo base, ya adaptado y funcionando en la mayoría de terminales. Una opción razonable era construir la última capa del sistema operativo -interfaz de usuario y soporte de aplicaciones- basadas en HTML5. Ya existían intérpretes eficientes y libres -Gecko y Webkit-, sólo había que ampliar el API y preparar los entornos de desarrollo. Además, conseguirían mayor apoyo de desarrolladores (es un entorno que ya conocen) y una rápida adaptación de las aplicaciones HTML5 ya existentes.
HTML5 vs aplicaciones nativas
La popularización de aplicaciones nativas, en detrimento de las aplicaciones HTML5, significó un retroceso a la situación de apertura y estándares que se había logrado en la web. Se podían aprovechar mejor las capacidades del hardware no previstas en HTML5 o Javascript, pero esto también ocasiona problemas y costes para los programadores. Hay que desarrollar para diversas plataformas (Apple, Android, RIM, Windows), o recurrir a sistemas de desarrollos multiplataformas propietarios y no estandarizados.
Aunque en los últimos años se lograron grandes avances en la eficiencia de los motores HTML y Javascript, aún están lejos del rendimiento que ofrece el código nativo (como el de iPhone), o incluso la máquina virtual de Dalvik de Android. Además del Javascript, el HTML (y sus CSS asociados) es un lenguaje complejo que debe interpretarse y crear el árbol completo (DOM) para que sea accesible y manipulable desde Javascript. Hacerlo eficientemente exige ingeniería sofisticada, y requerirá tiempo hasta tener tiempos de ejecución similares a máquinas virtuales de Java.
Por ello no es tan simple cumplir con algunas promesas de que las aplicaciones HTML5 serán más rápidas en las aplicaciones nativas de Android. Es verdad que al reducir software y librerías necesarias se ahorra memoria (y por lo tanto hardware más barato) y que la gestión de la memoria de Linux sufrirá menos “presión”, pero ello no implica que se obtengan automáticamente mejores “velocidades de ejecución”. Mientras no se tengan tests objetivos comparando aplicaciones de complejidad y funcionalidades similares, es más una expresión de deseos que una realidad probable.
Lo que puede pasar
Aunque es lo habitual, no soy tan temerario para pretender que puedo predecir el futuro. Sin embargo, hay cambios importantes evidentes: los nuevos sistemas operativos tienen un claro posicionamiento a favor de HTML5. Aunque será complicado que a corto plazo compitan con aplicaciones nativas equivalentes, es una buena iniciativa, su influencia nos acercará nuevamente a las ventajas -ya demostradas durante la última década- de desarrollar sobre estándares web.
FirefoxOS es una apuesta muy importante para Mozilla y cuenta con el apoyo de Telefónica (una de las operadoras más grandes del mundo), que distribuirá los teléfonos Geekphone en los países donde tiene mayor presencia, especialmente Sudamérica. Samsung ha alcanzado una posición dominante con sus teléfonos Android, por lo que no se espera que abandone la plataforma en el futuro próximo, pero su compromiso de lanzar dispositivos con Tizen será un gran empuje a ese sistema operativo y el desarrollo HTML5 en general, lo que redundará también en beneficios para FirefoxOS y WebOS.
Es un poco más arriesgada la apuesta de Ubuntu, situada a medio camino entre una elección por HTML5 y aplicaciones nativas más eficientes -en principio- que las programadas en Java. Se juega su futuro en la adopción de su sistema de desarrollo para aplicaciones nativas, más cercano al iOS de Apple.
Ninguna lo tiene fácil para quitarle mercado a Android. Aunque aumente la tendencia de desarrollar aplicaciones HTML5, Android está preparado para ejecutar esas aplicaciones desde su navegador, o desde “vistas” en aplicaciones nativas, además se beneficiará del desarrollo y mejoras del Webkit en Tizen (eventualmente, también Apple).
Como dije al principio, no será el año que Linux domine el mercado de los teléfonos móviles, ya lo hizo. Pero sí un año interesante por la aparición de estos sistemas operativos basados en Linux y de estándares HTML5, útiles para todas las plataformas.
Desde una perspectiva global, y analizando la historia de la informática de los últimos 30 años, estamos comprobando otra vez cómo, con el tiempo suficiente, las plataformas basadas en software libre facilitan la prueba y error necesarios para innovar, y terminan dominando el mercado en áreas fundamentales. Eso sí, por donde menos lo esperaban hasta los mejores expertos, por eso es mejor no hacer predicciones.