Android es por lejos el sistema operativo móvil más utilizado del mundo. Si bien se promociona como un proyecto de código abierto dentro del Android Open Source Project (AOSP), la plataforma tiene algunas porciones de su código cerrado (las Google Apps, como Play y Gmail, requieren una licencia), al igual que el firmware que utilizan los fabricantes en sus equipos.
Por ello fueron naciendo versiones “comunitarias” de Android que se enfocan en ofrecer una alternativa 100% libre y una de ellas es Replicant. RedUSERS se comunicó con Paul Kocialkowski, uno de los encargados de mantenerla, para que nos cuente todo sobre este fork de Android que es apoyado por Richard Stallman y la Fundación del Software Libre que preside.
¿Qué elementos propietarios de Android fueron “abiertos” para desarrollar Replicant?
Como cualquier otro sistema operativo, posee diferentes sistemas que tienen mucho de su código en común. Primero, tenemos la versión de Android que es desarrollada internamente en Google, que no es software libre per-se hasta que es lanzada a los repositorios del Android Open Source Project (AOSP), donde se convierte en software libre.
Si ese paso no ocurre, como sucedió con Android 3 HoneyComb, entonces se mantiene como software propietario. Los fabricantes usualmente usan la base de código de Google y suman sus modificaciones, que son mayoritariamente propietarias al tiempo que no lanzan el código fuente de tales cambios. Más importante, para añadir soporte para sus dispositivos, los fabricantes incluyen librerías propietarias relacionadas con el hardware de sus teléfonos, como el módem, audio, camara, GPS, aceleración gráfica, etc.
Cuando una versión de Android de la comunidad basada en AOSP intenta correr en algunos dispositivos OEM, debe incluir esas librerías propietarias para que el sistema pueda funcionar y hacer uso del hardware. Incluso para los equipos de Google hay soporte parcial en AOSP, hay muchas piezas no libres que son requeridas para hacer que el sistema funcione en el equipo. Esas son las partes con las que trabajamos para reemplazarlas con software libre.
Mientras que AOSP está cerca de ser software totalmente libre, no puede correr en equipos sin los blobs propietarios relacionados al hardware, pues no son parte de AOSP pero se lanzan por separado por Google para los teléfonos de Google. Sin embargo, Replicant está hecho totalmente de software libre y no viene con ningún componente no libre, con el costo de perder características de hardware cuando no podemos reemplazar los componentes no libres.
De todas maneras, Replicant no trata de “abrir” software, sino de liberar software y a sus usuarios. No compartimos la visión del movimiento Open Source: somos un proyecto de software libre y ponemos el énfasis en la libertad del software y nada más.
¿Es fácil de migrar a Replicant?
Hay guías de instalación detalladas para cada uno de los equipos que soporta Replicant. El procedimiento de instalación no siempre es simple y requiere cierto conocimiento, así que es probable que no sea fácil para todos, pero sí para algunos. Con conocimientos decentes en el uso de GNU/Linux y el uso de la línea de comandos se estaría capacitado para completar los pasos correctamente. Obviamente, sólo apuntamos a usuarios de GNU/Linux y no proveemos ninguna instrucción para otros sistemas operativos.
¿Existe el riesgo de dejar el teléfono inservible?
Siempre hay una posibilidad de dejar al celular temporalmente inusable, pero nuestras instrucciones no llevan a convertir al teléfono en un “ladrillo” para siempre. Siempre hay maneras de recuperarse de una mala instalación y le indicamos a los usuarios que sigan las instrucciones y no hagan nada más que lo que dice la guía.
Una de las ventajas de Android es su catálogo de aplicaciones. Replicant ofrece su propia tienda, pero se pueden instalar otras apps como las GApps?
F-Droid, si bien es la tienda de aplicaciones que viene preinstalada en Replicant, no es exactamente la tienda propia de Replicant: puede ser instalada en cualquier versión de Android, como CyanogenMod. El punto de F-Droid es que provee aplicaciones libres fácilmente a los usuarios, ya que no tiene sentido tener un sistema operativo libre y correr aplicaciones propietarias en él. No obstante, es técnicamente posible instalar las Google Apps en Replicant, aunque sea probablemente ilegal y se pierda el objetivo de Replicant y del Software libre.
¿Entonces, los APK de Android son 100% compatibles?
Si, lo son. Replicant es actualmente una versión levemente modificada de CyanogenMod, no hay un cambio grande y profundo que se le haya hecho a la interfaz o al core del sistema. Simplemente añadimos nuestros reemplazos de software libre, algunas cosas de branding y nos aseguramos de que todo se ajuste bien. Así que en este sentido, Replicant es más o menos lo mismo que CyanogenMod.
Sólo hay una docena de equipos compatibles con Replicant, ¿esto se debe a que igual que pasa con el software, también hay una fragmentación de hardware en Android?
No entiendo qué significa la fragmentación de Android en términos concretos. Si la idea es resaltar que hay muchos dispositivos de Android, eso es muy cierto y obviamente no podemos soportarlos a todos, especialmente porque sólo somos dos desarrolladores muy ocupados trabajando en el proyecto. Tratamos de seleccionar los objetivos más fáciles de soportar y también miramos cuánto del modelo que corre un firmware no libre puede controlar el resto del teléfono, lo que es crucial para la seguridad.
Un gran problema entre los usuarios de Android es que sus dispositivos pueden no ser compatibles con versiones futuras del sistema operativo, ¿cómo manejan este tema en Replicant?
Nuestro problema con las nuevas versiones de Android es la creciente dependencia de la aceleración de gráficos, que no la podemos proveer con software libre. Esto significa que es cada vez más difícil para nosotros brindar gráficos de alta velocidad, especialmente en equipos “viejos”.
La mayoría del tiempo, el portar los viejos equipos a las últimas versiones de Android cuesta a los fabricantes algún tiempo de desarrollo para ninguna ganancia real, desde el momento en el que los teléfonos ya fueron vendidos y funcionan con sus versiones actuales de Android. No porque no sean compatibles o sean muy lentos, sino porque el fabricante no tiene el interés real de hacerlo. No obstante, ahí es donde las versiones comunitarias de Android pueden avanzar porque pueden hacer el traspaso ellas mismas a las nuevas versiones de Android. Pero es sólo posible si pueden adaptar ciertas partes a las nuevas APIS y cuando esas partes son software propietario, no hay un buen modo de hacerlo.
Esta es la razón por la cual algunos equipos son descartados en las versiones comunitarias de Android: el software propietario es un gran obstáculo en el camino de “portar” hacia una nueva versión de Android. Por el contrario, los reemplazos de software libre para esas partes específicas del hardware hacen que sea fácil llevar equipos a nuevas versiones de Android, entonces esas versiones comunitarias de Android no tienen que esperar o pedir por nuevos blobs a los fabricantes: pueden cocinar toda la última versión por ellos mismos. Pero en la práctica, las partes de aceleración de gráficos son siempre no libres y son un gran inconveniente en el proceso.
En Replicant, podemos portar en teoría todos los dispositivos soportados a cualquier versión nueva de Android, siempre que la falta de aceleración gráfica lo haga usable, pues todas las partes relacionadas con el hardware son software libre. Pero decidimos seguir la decisión de CyanogenMod de abandonar equipos como el HTC Dream y el Nexus One, porque se están volviendo muy lentos para las nuevas versiones y no vale la pena nuestro tiempo, pues encontramos mejores dispositivos que respetan más la libertad del usuario.
El tema de la seguridad de la información es importante en cualquier plataforma, ¿Cómo garantizan la seguridad de la información?
No garantizamos la seguridad de la información personal. Si realmente cuidas tu información, no deberías usar un teléfono. Como Replicant es un sistema completamente libre, no puede garantizar que todo el teléfono esté bajo tu control ni sea seguro. Usando Replicant y apps libres se garantiza que ningún componente del sistema contenga backdoors o funcionalidades maliciosas, mientras otras versiones de Android con código propietario pueden tener partes maliciosas como CarrierIQ.
Pero esa no es la única amenaza de seguridad en un teléfono: el modem corre software propietario que se conecta a la red del operador y permite que sea controlado remotamente. Es sabido que el modem puede proveer información del teléfono bajo demanda, como la locación del GPS, y también puede convertir al teléfono en una máquina de escuchar remota cuando tiene acceso al micrófono.
También puede tener acceso al almacenamiento principal, la memoria RAM, etc. Esta es la razón por la que evaluamos cuidadosamente a qué puede acceder el modem en los teléfonos. Replicant soporta y trata de ser informativo sobre esto. Pero eso no es todo: el propio operador puede espiar las comunicaciones, mensajes de texto y conexiones a Internet, sin la necesidad de cooperación por parte del modem. Encima de todo, los protocolos GSM son conocidos por ser débiles y fáciles de quebrar. Por lo tanto, los teléfonos móviles son malos en cuanto a seguridad.
Ustedes conocen el código de Android, ¿qué aspectos pueden resaltar y cuáles criticar sobre él desde el punto de vista de su programación?
No tengo comentarios acerca de la calidad del código y del sistema operativo en sí mismo desde un punto de vista técnico. Lo que puede decir acerca de la actitud de Google es que tiende a reemplazar cada vez más aplicaciones base de AOSP con versiones propietarias de Google, descartando el desarrollo de las versiones AOSP de esos programas. Esto es una vergüenza porque tiende a hacer de AOSP un sistema que no está dirigido a ser utilizado realmente.
De todas formas, la gente de CyanogenMod está trabajando duro para escribir aplicaciones de software libre de calidad para solucionarlo, como el administrador de archivos, Apollo, Focal, etc. Pero la situación de CyanogenMod dista de ser perfecta desde su reciente decisión de convertirse en una compañía que obliga a las aplicaciones de CyanogenMod a tener una doble licencia, con una licencia propietaria. Entonces tememos que las versiones libres de esas aplicaciones se convertirán en copias obsoletas y deprecadas de las propietarias, tal como ocurre con AOSP actualmente.
Android se está convirtiendo en un sistema operativo de alto consumo de recursos y requiere cada vez más hardware en comparación con otras plataformas para correr fluidadmente. ¿Cuál es el enfoque de Replicant para mejorar la performance?
Estás en lo cierto. Android se está volviendo cada vez más un devorador de recursos. Seguimos pensando que Android es nuestra mejor oportunidad de tener un sistema operativo móvil libre, por lo que no lo dejaremos para migrar a otros como Firefox OS, Tizen o Ubuntu Touch, que por cierto todos tienen los mismos problemas de libertad que Android, aún cuando los requerimientos de hardware hagan cada vez más difícil brindar una experiencia de usuario fluida en Replicant pues no tenemos aceleración de hardware gráfico.
De todas formas, los últimos dispositivos con Android tienen CPU más rápidas que pueden cubrir esos temas, pero quizás a cierto punto se volverá muy difícil mantenerlo. En todo caso, no brindaremos mejores performances comparadas con otras versiones de Android. Usar Android sin aceleración gráfica se suponía como imposible en la versión 4.0 y tuvimos que trabajar duro todo el tiempo para llegar a algo que sea lo suficientemente bueno para ser usado. No hacemos magia, sólo ajustamos las opciones de configuración correctas aquí y allá para hacerlo menos demandante de aceleración gráfica.
¿Están trabajando con fabricantes de equipos con hardware, firmwares y software libre (como Yeelong y sus notebooks) para ofrecer teléfonos con Replicant?
No estamos trabajando con ningún fabricante para incluir Replicant en nungún dispositivo, pero nos vienen con esa idea, deberemos considerar cuidadosamente temas de patentes para hacerlo. Es mucho más fácil para nosotros mantener una versión comunitaria de Android sin ataduras a un fabricante o compañía particular: preferimos mantener desarrolladores amateurs y voluntarios. A pesar de que comenzamos una campaña de donaciones gracias a la Fundación de Software Libre (FSF), no estamos pagando por el desarrollo y el dinero es utilizado para comprar equipos y ayudarnos a asistir a eventos de software libre para presentar a Replicant.