jueves, noviembre 19, 2015

Diferencias entre las versiones de ROMs personalizadas de Android. [stable-snapshot-nightly]

Esta es una pregunta que de manera habitual me hacen muchos usuarios en la web, debido a que sobre Android se ha generado una terminología, que no se corresponde con los términos usados anteriormente con el software de ordenadores.

Debido a esta jerga técnica, muchos usuarios tienen miedo a la hora de hacer una modificación, e incluso de llegar a instalar un sistema Android para mejorar el rendimiento de los recursos del hardware de su dispositivo, ya que les parece complicada y no saben si funcionará o no.

En esta publicación de hoy, voy a dedicar un tiempo a tratar de explicar un poco los términos empleados por los desarrolladores, para llamar técnicamente a las compilaciones de software que conocemos como ROMs y las diferencias entre ellas.
La ROM es un sistema operativo completo funcional, que debe ejecutarse en un dispositivo Android y gestionar correctamente los recursos de hardware de que dispone en ese dispositivo. Son creadas a partir del código fuente libre de Android conocido por sus siglas AOSP y se pueden construir por uno o varios desarrolladores que a su vez, pueden formar grupos de desarrollo.


Este código es software libre, es decir Google lo creó utilizando el código empleado en Linux que está licenciado por las licencias de software libre GPLv3. Estas licencias (que fueron diseñadas para luchar contra las patentes de software), obligan al creador del software a publicarlo, para que esté disponible a toda la comunidad de desarrolladores o programadores. Es decir, los Dev pueden revisarlo, modificarlo, crear versiones nuevas, crear nuevos proyectos o bifurcaciones, pero siempre está obligado a publicarlo en un sitio web, que se conoce como repositorio (Github es un buen ejemplo) para que pueda ser revisado y modificado por otros, y así continuamente.

Por supuesto siempre que se crea un proyecto, deben haber signos, caracteres o términos, para que los expertos de otros lugares entiendan lo que se ha hecho. Por ejemplo, en ingeniería existe una codificación y normas para la ejecución de planos y diseños, para que los demás ingenieros puedan entender lo que se ha proyectado y en que valores se ha calculado.
Los desarrolladores de ROM tienen esta terminología que les permite a ellos y a los usuarios, entender en que fase de la creación está el proyecto. Lo mas común es categorizar las ROMs en: Stables, Snapshot y Nightlies.


1.- ROM Stable.- En un sistema operativo de ordenadores es lo que se conoce como versión Final. Es estable como indica su nombre, es funcional y se ejecuta sobre el hardware con normalidad. NO quiere decir de ninguna manera que estén exceptos de errores, los errores pueden suceder, pero no es lo deseable. Normalmente se establece esta categoría, cuando todas las características deseadas por los desarrolladores, han sido probadas e incorporadas a la ROM.

Estas ROMs suelen estar testeadas y ejecutadas en firme sobre el hardware original, antes de tener esta categoría. Suelen probarse mediante betatesters, que son usuarios avanzados que se prestan a probar los desarrollos usando sus propios dispositivos.
Comparativamente son similares a las que liberan los fabricantes de los teléfonos cuando quieren hacer una actualización.


2.- ROM Snapshot.- Durante la creación de una ROM, se hacen ciertas pruebas cada cierto tiempo durante el desarrollo, para probar el código o nuevas caracteristicas, y como resultado sale una ROM bastante estable. Estas compilaciones suelen hacerse una vez al mes o incluso pueden tomar mas tiempo, y se liberan al público en su mayoría para que sean probadas por los usuarios y tener referencias de su uso.

Esto permite recoger cierta información y crear informes oficiales de errores, que son enviados al sitio donde se administra y gestiona el proyecto, para que sean tomadas en cuenta y arreglarlo. Si lo comparamos con el software de PCs, es lo que llamaríamos una version RC o candidata a versión Final.
Existen algunos grandes proyectos que se han convertido en empresas (como CyanogenMod por ejemplo) en los que para ser mas específicos, se divide en dos categorías: Snapshot y RC dándole a esta ultima categoría, una mayor estabilidad durante el desarrollo y al usuario, un adelanto para que pruebe y use el software antes de que se publique la versión estable.


3.- ROM Nightly.- Como su nombre indica todas las noches, se libera una versión del código de la ROM que ha sido compilado automáticamente. Esto es muy utilizado cuando la ROM es creada por un proyecto o grupo de programadores que usan un Git o sea, una especie de "almacén de código" donde cada programador publica la porción de código que ha creado, para que se integre dentro de la ROM y esté disponible al resto de desarrolladores.

Estas ROMs son relativamente estables o inestables en algunos casos y casi siempre son funcionales, pero pueden dar un fallo concreto en una aplicación que gestiona alguna parte del software, como puede ser la conexión WiFi o el GPS, por ejemplo. Voy a extenderme un poco aquí en este punto.

La ROM se construye automáticamente y al final del día, con todo el código nuevo creado mas el anterior, se genera un archivo que suele ser la ROM. No existe interacción humana con el código y en gran medida se libera, para comprobar si el código añadido a lo largo del día se compilará.

Es decir, si esta compilación no estuviera bien al menos en su mayor parte, no se puede generar el archivo y los desarrolladores se darían cuenta de que hay algún error grave en el código publicado.
Los errores y bugs son casi normales y en general, no se aceptan los informes de errores en este tipo de compilación o ROM.


Resumiendo, con esto no quiero decir que las nightlies sean versiones muy inestables ni nada parecido, al contrario, yo a lo largo de los años, he probado cientos de ROMs en las que  una Nightly funcionaba casi mejor que la versión Stock del fabricante, y esto aunque parezca raro, sucede bastante a menudo.

Tiene su lógica, ya que las versiones Stocks de los fabricantes traen una capa de software añadida personalizada del fabricante además del bloatware, que son todas esas aplicaciones que vienen integradas en el sistema y no sirven para casi nada que no sea aumentar el consumo de recursos.
Para concluir, añadir que el término Stock (valores) se refiere a la ROM oficial del fabricante que también es una versión estable. Espero haber sido de ayuda, Suerte!!!