16 de noviembre de 2012

Google añade cadenas a Android

Que Android tiene algunos problemas de fragmentación no es a estas alturas una noticia. Es más, ni tan siquiera es sorprendente, o evitable. Si permites que cualquier hijo de vecino ponga Android a cualquier cacharro chino, como mínimo tienes que empezar por aceptar la existencia de diferencias inevitables de rendimiento y capacidades entre unos cacharros y otros, que pueden llegar a afectar a los desarrolladores. La fragmentación de Android es algo con lo que hay que reconciliarse y saber convivir.

Aun así, es lógico que Google intente corregir o al menos desincentivar la fragmentación. Puestos a elegir entre fragmentación y no fragmentación de una plataforma, todos preferimos la no fragmentación. Que sea inevitable no quiere decir que haya que aplaudirla y darle facilidades.

Pero hay muchos tipos de fragmentación, y formas y formas de luchar contra ella. Y la que acaba de escoger Google no huele nada bien. Concretamente, Google ha decidido actualizar las condiciones del SDK de Android para el desarrollo de aplicaciones, añadiendo la siguiente línea:

3.4 You agree that you will not take any actions that may cause or result in the fragmentation of Android, including but not limited to distributing, participating in the creation of, or promoting in any way a software development kit derived from the SDK.

Muy bienintencionado, pero esa prohibición entra en conflicto filosófico con las libertades esenciales del software libre. Un ciudadano debería tener libertad plena incluso para crear un SDK alternativo, que fragmente a Android o no, es secundario y hasta irrelevante. Y estas nuevas condiciones no sólo está prohibiendo eso, sino incluso el mero hecho de "participating in the creation of, or promoting".

Naturalmente, nadie está obligado a escribir programas para Android, pero eso no es obstáculo para preocuparse por que Android esté evolucionando hacia una plataforma que no se puede llamar "libre" con propiedad.

Desde un punto de vista histórico, preocupa que Android esté empezando a reproducir los comportamientos de su padre. Android es una plataforma Java y, recuerden que Java es una plataforma que su creador Sun Microsystems promocionaba como abierta -existe un comité donde los grandes participantes acordaban los cambios en común, etc-, pero en la práctica Sun exhibía con frecuencia cierta paranoia ante la posibilidad de un fork, hablando de lo buena que es la uniformidad y de la fatalidad cósmica que sería que alguien la rompiese. Cuando Android vió la luz, todo fueron palabras bonitas, pero no fueron capaces de conseguir que Android comprara licencias y se uniera al mundo Java oficial.

Ante la insistencia de Google de ir por su cuenta, se pusieron serios. Google reaccionó en plan: hey, tan sólo estamos jugando con partes de Java y tratando de crear really cool gadgets, ¿por qué odias la innovación? De ahí surgió, posteriormente a la compra de Sun, el caso de Oracle vs Google por infringir patentes en Android - un intento desesperado de mantener el control de Java a golpe de sentencia, y que nos deparó ese entrañable momento en el que Oracle intentó defender que se pudiera aplicar copyright a una API.

Ironías de la vida, ahora es Google quien empieza a ver con malos ojos que alguien intente romper la uniformidad que tanto despreciaban. ¿Hasta que punto estarán dispuestos a llegar para defender la de Android? ¿Que valora Google más, o valorará dentro de unos años, los principios y la libertad del software o las enormes cantidades de dinero e inversión técnica depositadas en Android?

12 de noviembre de 2012

Windows 8

Hace tantos años que se viene deseando el fin del monopolio Windows, que parece mentira que haya llegado un punto que parezca que su caída esté, al menos, dentro de las posibilidades. Hasta el propio Steve Ballmer lo admite.

Como es bien sabido, los dispositivos portátiles y táctiles requieren un tipo de interfaces de usuario que difieren en muchos aspectos del conocido esquema WIMP. En el sistema operativo inaugurador del sector, iOS, la nueva interfaz fue introducida a través del "kit" de Cococa UIKit, mientras que el tradicional AppKit de OS X no está disponible en dispositivos portáctiles (portables+táctiles). Por su parte, Android no tenía pasado alguno, así que fue implementado exclusivamente para dispositivos portáctiles.

Windows 8 ha optado por una vía alternativa, consistente en permitir ambas interfaces, la tradicional de Windows y la nueva, para portáctiles, apodada Metro (nombre que Microsoft ha pedido que no se use, pero que usaré de todos modos porque hay que tener mala leche popularizar un término y luego tratar de eliminar su uso). Sin embargo, la capacidad de usar ambos tipos de interfaz se reduce a usarlas dentro del mismo sistema operativo, porque visualmente están prácticamente divorciadas: existen dos escritorios, el escritorio tradicional y el escritorio Metro, y cada tipo de aplicación se ejecuta en su escritorio, y se puede cambiar de un escritorio a otro.

Por esa razón, la sensación de cambiar de un escritorio a otro es parecida a la de cambiar entre diferences máquinas virtuales en un programa de virtualización. Y no es una sensación sólo visual. Cada aplicación Metro se ejecuta dentro de una "sandbox", y esa sandbox no es un entorno libre donde el programador puede hacer lo que quiera, como se hacía en los programas de toda la vida, sino WinRT, una especie de runtime/librería/API (el artículo enlazado es muy recomendable) formada con pedazos de varias tecnologías de Microsoft, que por el momento está orientada a dispositivos portáctiles y a propósitos muy específicos (se permite el uso de Direct3D para crear juegos, pero curiosamente no hay acceso completo a una API tan básica como la API de sockets Berkeley que utilizan todos los sistemas operativos para comunicarse en Internet).

Esta separación de ambos tipos de aplicaciones llega a extremos francamente ridículos. Por ejemplo, la tienda de aplicaciones sólo está permitida para aplicaciones que usen WinRT, con lo cual gran parte de las aplicaciones del escritorio tradicional de Windows están excluidas. ¿Por qué esa limitación, porque no extender la tienda de aplicaciones a todo tipo de aplicaciones? Las aplicaciones WinRT están tan aisladas que ni tan siquiera han facilitado la comunicación con las aplicaciones del escritorio tradicional: No sólo es que sea técnicamente se hayan prohibido deliberadamente ciertos mecanismos de IPC, es que las propias reglas de la tienda de aplicaciones lo prohiben expresamente.

Usar un sistema operativo que está divorciado de este modo consigo mismo es bastante fustrante. Por una parte, se mantiene la compatibilidad con el universo tradicional Windows, pero complican deliberada e innecesariamente su uso habitual a quienes no están interesados en Metro. El escritorio por defecto es siempre el escritorio Metro, hay varias acciones que sacan al usuario forzosamente del escritorio tradicional cuando se encuentra en él, y se elimina el botón "start" y su menú. Estas decisiones son completamente "políticas", no técnicas, y son el principal origen de quejas. La gente no entiende por qué no hay ninguna opción, o siquiera clave de registro, que permita establecer el escritorio tradicional como escritorio por defecto, y la recuperación del botón de inicio (hay que recurrir a aplicaciones de terceros). ¿Es que Windows ha sido invadido por desarrolladores como los de Gnome 3?

Tal vez en parte, pero existe una razón más importante, y es que es obvio que Windows 8 ha sido diseñado fundamentalmente para dispositivos portáctiles. Al fin y al cabo, es ese sector en el que Microsoft está necesitado de ganar cuota de mercado y relevancia. Seguramente preveen que la mayor parte de escritorios va a quedarse con Windows 7 y no les importa, lo que quieren es plantar cara a Apple y a Android.

¿Y qué tal es Windows 8 en ese campo, qué tal es el escritorio táctil Metro? No he tenido la oportunidad de probarlo en tableta, pero dado que el escritorio Metro está diseñado para poder ser usado con teclado y ratón, es fácil hacerse una idea. Y lo cierto es que en muchos aspectos es francamente bueno: los gráficos son muy fluidos, y el estilo de las aplicaciones Metro tiene su sitio. La pantalla inicial Metro, con sus "tiles" dinámicos, es en principio una buena idea, aunque han simplificado el concepto demasiado. En resumen, se puede decir que Microsoft ya no tiene carencias como plataforma portáctil. Pero eso no basta: se nota la falta de madurez y la desventaja de su tienda de aplicaciones frente a iOS y Android.

Esa desventaja parece insuperable a día de hoy, pero sólo el tiempo dirá lo que ocurre. Lo cierto es que aunque en el mundo de los smartphones está difícil, Windows 8 tiene algunas posibilidades en el mercado de las tabletas. Es sabido que Android no ha tenido en las tabletas el mismo éxito arrollador que tuvo en smartphones. Matthew Yglesias contó que esto se debía a razones puramente económicas: el negocio telefónico está dominado por empresas de telecomunicaciones que están incentivadas a ofrecer teléfonos con Android porque ganan más dinero con ello, pero a los centros comerciales y tiendas artículos electrónicos no les importa vender una tableta iPad o Android siempre y cuando vendan uno, por lo que la competencia está más igualada. Aunque Android está avanzando en este mercado rápidamente, que el aun líder del mercado haya lanzado el iPad mini demuestra que es un mercado menos establecido. Windows 8 puede encontrar ahí un hueco.

Por lo demás, Windows 8 es un sistema operativo rápido y ligero. Los tiempos de arranque son buenos (utilizan una técnica muy curiosa, consistente en hibernar una sesión del sistema justo hasta el punto en el que comienza la sesión del usuario, y resumir esa imagen en cada arranque), la interfaz -tanto la Metro como la tradicional- es rápida. De no ser por el asunto de Metro, sería un sustituto indiscutible de Windows 7, pero la marginación del escritorio tradicional y el forzado de una interfaz táctil lo convertirá en una oveja negra para mucha gente.