Esta es una traducción de la página original en inglés.

Android y la libertad de los usuarios

¿Hasta qué punto Android respeta la libertad de los usuarios? Para un usuario de ordenadores que valora la libertad, esta es la pregunta más importante que debe hacerse sobre cualquier sistema de software.

En el movimiento del software libre desarrollamos software que respeta la libertad de los usuarios, para que tanto usted como nosotros podamos escapar del software que no lo hace. Por el contrario, la idea del «código abierto» se centra en la manera de desarrollar código: es una corriente de pensamiento diferente cuyo valor principal es la calidad del software en lugar de la libertad. Por lo tanto, el problema aquí no es si Android es o no «abierto», sino si permite a los usuarios ser libres.

Android es un sistema operativo principalmente para teléfonos móviles y otros dispositivos. Está formado por Linux (el núcleo de Torvalds), algunas bibliotecas, una plataforma Java y algunas aplicaciones. Excepto Linux, el software de las versiones 1 y 2 de Android fue desarrollado principalmente por Google. Google lo publicó bajo la licencia Apache 2.0, que es una licencia de software libre laxa sin copyleft.

La versión de Linux incluida en Android no es software completamente libre, ya que contiene «paquetes binarios» que no son libres (igual que la versión de Torvalds de Linux), parte de los cuales se utilizan de hecho en algunos dispositivos Android. Las plataformas Android usan también otros tipos de firmware que no son libres, además de bibliotecas que tampoco son libres. Aparte de eso, el código fuente de las versiones 1 y 2 de Android, tal y como lo publicó Google, es software libre, pero ese código no es suficiente para hacer funcionar el dispositivo. Algunas de las aplicaciones que generalmente vienen con Android tampoco son libres.

Android es muy diferente del sistema operativo GNU/Linux porque contiene muy poco de GNU. De hecho, prácticamente el único componente que tienen en común Android y GNU/Linux es Linux, el núcleo. Todo esto confunde a las personas que equivocadamente piensan que «Linux» se refiere a la combinación completa GNU/Linux y hacen declaraciones paradójicas como que «Android contiene Linux, pero no es Linux»(1). Si evitamos la confusión desde el principio, la situación es sencilla: Android contiene Linux, pero no GNU; por lo tanto, Android y GNU/Linux son bien diferentes, ya que todo lo que tienen en común es Linux.

Dentro de Android, el núcleo Linux es un programa independiente cuyo código fuente está publicado bajo la versión 2 de la GPL de GNU. Combinar Linux con código que está bajo la licencia Apache 2.0 sería una violación de copyright, ya que la versión 2 de la GPL y la Apache 2.0 son incompatibles. Los rumores de que Google de alguna manera convirtió Linux a la licencia Apache son falsos: Google no tiene ningún poder para cambiar la licencia del código de Linux, y no lo intentó. Si los autores de Linux permitieran su uso bajo la versión 3 de la GPL, entonces ese código podría combinarse con otro código cubierto por la licencia Apache, y la combinación se podría publicar bajo la versión 3 de la GPL. Pero Linux no fue publicado así.

Google ha cumplido los requisitos de la Licencia Pública General de GNU para Linux, pero la licencia Apache que cubre el resto de Android no requiere la publicación del código fuente. Google dijo que nunca publicaría el código fuente de Android 3.0 (aparte de Linux). El código fuente de Android 3.1 tampoco se publicó, por lo que Android 3, aparte de Linux, es lisa y llanamente software privativo.

Google dijo que no publicó el código fuente de la versión 3.0 porque tenía fallos, y que había que esperar la siguiente versión. Esto puede ser un buen consejo para los que simplemente quieran usar el sistema Android, pero son los usuarios quienes deberían decidir. De todos modos, los desarrolladores y aficionados que quisieran incluir algún cambio en sus propias versiones podrían perfectamente usar ese código.

Afortunadamente, cuando más tarde Google publicó la versión 4 (con su código fuente), también publicó el código fuente de Android 3. El problema anterior resultó ser una anormalidad temporal más que un cambio de política. Sin embargo, lo que pasa una vez puede ocurrir de nuevo.

De cualquier manera, la mayor parte del código fuente de diferentes versiones de Android ha sido publicada como software libre. ¿Significa esto que los productos que usan esas versiones de Android respetan la libertad de los usuarios? No, por varias razones.

La primera es que la mayor parte de ellos contiene aplicaciones privativas de Google para comunicarse con servicios como YouTube y Google Maps. No son oficialmente parte de Android, pero eso no hace que el producto sea aceptable. Muchas de las aplicaciones libres disponibles para versiones anteriores de Android han sido sustituidas por aplicaciones que no son libres; en 2013 aparecieron dispositivos Android que no incluían ninguna forma de ver fotos que no fuera mediante la aplicación privativa Google+. En 2014 Google anunció que las versiones de Android para televisores, relojes y coches no serían libres en gran parte.

La mayoría de los dispositivos Android vienen con el software privativo Google Play (anteriormente «Android Market»). Este software invita a los usuarios que tienen una cuenta en Google a instalar aplicaciones que no son libres. También tiene una puerta trasera con la que Google puede instalar o desinstalar aplicaciones por la fuerza (por lo que probablemente se trata de una puerta trasera universal, aunque esto no ha sido comprobado). Google Play no es oficialmente parte de Android, pero no por ello es menos malo.

Google ha transferido numerosas funcionalidades básicas a la biblioteca de Google Play Services, que no es libre. Si el propio código de una aplicación es libre pero depende de Google Play Services, la aplicación en su conjunto de hecho no es libre.; no se puede ejecutar en una versión libre de Android, como Replicant.

Si uno valora la libertad, no quiere las aplicaciones privativas que ofrece Google Play. Para instalar aplicaciones libres de Android no se necesita Google Play, porque pueden obtenerse de f-droid.org.

Los productos Android vienen también con bibliotecas que no son libres. No son oficialmente parte de Android, pero como hay funcionalidades de Android que dependen de ellas, son parte de cualquier instalación real de Android.

Incluso los programas que son oficialmente parte de Android pueden no corresponderse con el código fuente que Google publica. Los fabricantes pueden cambiar este código y muchas veces no publican el código fuente de sus versiones. La GPL de GNU les obliga a distribuir el código de sus versiones de Linux, suponiendo que la cumplen. El resto del código, que está bajo la licencia laxa Apache, no les obliga a publicar el código fuente que realmente utilizan.

Un usuario descubrió que muchos de los programas del sistema Android que venía con su teléfono habían sido modificados para enviar datos personales a Motorola. Algunos fabricantes añaden paquetes ocultos de vigilancia general, como Carrier IQ.

Replicant es la versión libre de Android. Los desarrolladores de Replicant han sustituido muchas de las bibliotecas privativas en algunos modelos de dispositivo. Se han excluido las aplicaciones que no son libres, pero no cabe duda de que esas no queremos usarlas. Por el contrario, CyanogenMod (otra versión modificada de Android) no es libre, ya que contiene algunos programas que no son libres.

Muchos dispositivos Android son «tiranos»: están diseñados para que los usuarios no puedan instalar y ejecutar su propio software modificado, sino solo las versiones que haya aprobado alguna empresa. En tales condiciones, los ejecutables no son libres, aun cuando se hayan obtenido a partir de código fuente libre y disponible. Sin embargo, en algunos de estos dispositivos se puede conseguir el acceso de administrador y así los usuarios pueden instalar otro software.

Los controladores o el firmware que cumplen una función importante también suelen ser privativos. Son los que gestionan el acceso a la red de telefonía móvil, el WiFi, el bluetooth, el GPS, la gráfica 3D, la cámara, el altavoz y en algunos casos hasta el micrófono. En ciertos modelos algunos de estos controladores son libres, y hay otros de los que se puede prescindir, pero no se puede prescindir del micrófono ni de la red de telefonía móvil.

El firmware de la red telefónica viene preinstalado. Si todo lo que hiciera fuera permanecer inactivo y comunicarnos con la red cuando lo solicitemos, podríamos considerarlo equivalente a un circuito. Cuando insistimos en que el software de un dispositivo informático debe ser libre, podemos pasar por alto el firmware preinstalado que nunca se actualizará, ya que para el usuario da igual que se trate de un programa o de un circuito.

Lamentablemente, en este caso sería un circuito malicioso. Las funcionalidades maliciosas no son aceptables sea cual sea su implementación.

En la mayor parte de los dispositivos Android, este firmware ejerce tanto control que podría convertir el producto en un dispositivo de escucha. En algunos casos, controla el micrófono. En otros, puede tomar el control del dispositivo principal mediante la memoria compartida y así anular o reemplazar el software libre que se ha instalado. En algunos modelos, tal vez en todos, es posible controlar a distancia este firmware para anular el resto del software del dispositivo. La idea del software libre es tener el control de nuestro software y de nuestras tareas de computación; un sistema con una puerta trasera no cumple estos requisitos. Mientras que cualquier sistema informático puede tener fallos, estos dispositivos pueden ser los fallos mismos. (Craig Murray, en Asesinato en Samarcanda, cuenta su participación en una operación de inteligencia en la que se convirtió a distancia el teléfono móvil —no basado en Android— de un objetivo desprevenido en un dispositivo de escucha).

De cualquier forma, el firmware que gestiona el acceso a la red en un teléfono Android no es como un circuito, ya que el hardware permite la instalación de nuevas versiones y esto, de hecho, se hace. Como se trata de firmware privativo, en la práctica solo el fabricante puede desarrollar nuevas versiones, los usuarios no.

En resumen, podemos tolerar un firmware para la red telefónica que no sea libre, siempre y cuando: no se carguen nuevas versiones, no pueda tomar el control del dispositivo principal y pueda comunicarse solo en el momento y de la manera en que el sistema operativo libre se lo permita. En otras palabras, debe ser equivalente a un circuito electrónico, y dicho circuito no ha de ser malicioso. No existe ningún obstáculo técnico que impida desarrollar un teléfono Android con estas características, pero no conocemos ninguno.

Android no es un sistema autónomo, su desarrollo tiene que hacerse en otro sistema. Las herramientas del «kit de desarrollo de software» (SDK) de Google parecen libres, pero comprobarlo requiere mucho trabajo. Los archivos de definición para algunas API de Google no son libres. Para poder instalar el SDK es necesario firmar una licencia de software privativo, algo que no debemos hacer. El SDK de Replicant es un reemplazo libre.

Las informaciones de prensa recientes sobre Android se centran en las guerras de patentes. Durante los veinte años que llevamos luchando por la abolición de las patentes de software, siempre hemos advertido de que tales guerras se producirían. Las patentes de software podrían obligar a eliminar algunas funcionalidades de Android, o incluso impedir que el sistema esté disponible. Para más información acerca de los motivos por los que las patentes de software se deben abolir, véase endsoftpatents.org.

De todos modos, los ataques de las patentes y las respuestas de Google no tienen relación directa con el tema de este artículo: que los productos Android se aproximan solo parcialmente a un sistema de distribución ético, y no lo alcanzan. Este asunto también merece la atención de la prensa.

Android es un importante avance hacia un teléfono móvil libre, ético y controlado por los usuarios, pero el camino por recorrer es largo y Google está tomando la dirección equivocada. Los hackers están trabajando en Replicant, pero la gestión de un nuevo modelo de dispositivo implica una tarea enorme, y aún queda el problema del firmware. A pesar de que los teléfonos Android de hoy en día son mucho menos malos que los teléfonos de Apple o Windows, no puede decirse que respeten la libertad.

Nota

  1. Un ejemplo extremo de esta confusión lo constituye el sitio linuxonandroid.com, que ofrece ayuda para «instalar Linux [sic] en sus dispositivos Android». Esto es completamente falso: lo que están instalando es una versión del sistema GNU, excluido Linux, que ya está presente como parte de Android. No recomendamos este sitio, ya que solo da soporte a distribuciones GNU/Linux que no son libres.