Google lleva tiempo buscando vías para facilitar el mantenimiento de Android, el sistema operativo que gobierna la inmensa mayoría de los smartphones activos. Para ello, el gigante del buscador trabaja desde hace años en ajustar el kernel de Android a la rama oficial de Linux, haciendo que los drivers de terceros sean instalados mediante un mecanismo llamado Project Treble, que fue presentado en 2017.
Dicho con otras palabras, Google quiere ajustar el kernel de Android al de Linux con el fin de ofrecer un núcleo genérico para todos los dispositivos. La compañía trabaja desde hace tiempo para lograr ese objetivo, y de hecho parece que en el lanzamiento de Android 12 se producirán progresos significativos en ese sentido, ya que Todd Kjos, ingeniero de software de Google, ha presentado un informe en la Linux Plumbers Conference en el que se dice que la mencionada versión del sistema se acerará bastante a la rama principal de Linux al suministrar a los usuarios finales una Imagen de Kernel Genérica (GKI en sus siglas inglés).
La relación de Android con Linux ha tenido notables decepciones y desencuentros. La decepción ha sido sobre todo porque lo que prometía ser un “caballero blanco” del software libre ha terminado devorado por los servicios de Google y las implementaciones privativas que permite la licencia Apache. Los desencuentros vienen porque algunas de las partes de Android presentes en Linux se fueron y volvieron del proyecto original, sin que aquello supusiera ni mucho menos el fin de la bifuración de Linux por parte de Google.
El gigante del buscador bifurcó Linux en su momento con el fin de añadirle cambios específicos orientados a los teléfonos móviles, creando “Android common”. Luego los fabricantes de SoC, entre los que están Qualcomm, Samsung y MediaTek, bifurcan “Android common” con el fin de crear un kernel específico para sus chips, siendo el segundo producto bifurcado una vez más para adaptar el núcleo a cada dispositivo específico.
Como vemos, el kernel de Android pasa por tres procesos de bifurcación antes de llegar a un dispositivo, lo que termina haciendo que la resolución de fallos sea complejo debido a que los parches tienen que ir descendiendo por el árbol de bifurcaciones hasta llegar a los usuarios finales, generando un problema derivado de la fragmentación. La documentación oficial de Android señala que “estas modificaciones pueden ser extensas, hasta el punto de que hasta el 50% del código que se ejecuta en un dispositivo es código fuera del árbol (no procedente de versiones anteriores de Linux o de los núcleos comunes de AOSP)”.
Tras exponer el panorama, eso obvio que la intención de Google con la GKI es reducir la cantidad de bifurcaciones de tres a una, haciendo que exista un kernel genérico común para todos los fabricantes y dejando a estos espacio para sus personalizaciones con Project Treble, mediante el cual la compañía pretende construir una Imagen Genérica de Sistema (GSI) para poder actualizar Android independientemente del soporte de hardware.
Google quiere sacar del núcleo de Android el código específico para el hardware y colocarlo en módulos suministrados por el proveedor, de forma que estos puedan ser suministrados de forma asíncrona del kernel genérico a través de una Interfaz de Módulo del Kernel (KMI en sus siglas en inglés).
Todd Kjos ha reconocido que el proceso de transición no es nada sencillo, que requeriría de varios años de trabajo y que hay posibilidades de que no llegue a completarse. La compañía espera poder cambiar a un ciclo upstream para las nuevas funciones en 2023 mientras dedica los años del 2020 al 2022 a trabajar en las características existentes y aislar los cambios de los proveedores hacia los módulos.
Con el fin de al menos poner unos cimientos para el nuevo enfoque del kernel, se espera que el Google Pixel 6 sea el primer dispositivo Android que suministre un kernel GKI versión 5.10 (el cual es LTS al menos en el proyecto original), lo que al menos sería un paso importante hacia la dirección que quiere marcar el gigante del buscador.