Android 101 – Android y su licenciamiento (Kernel)

Ya discutimos la parte de Android y hablamos de su funcionamiento y licenciamiento. Pero Android no funciona solo, Android, como mencioné en el artículo anterior, es un “software” que corre sobre el sistema operativo Linux, osea que su corazón, su base, su kernel es Linux. En este escrito evaluaremos varios detalles técnicos del Kernel ya que son necesarios para entender el tipo de licenciamiento del mismo. Antes de continuar, no dejes de leer Android y su licenciamiento ya que el mismo es distinto al del Kernel. En el atículo anterior hablamos del licenciamiento Apache 2.0 y en éste discutiremos GPLv2 (General Public Lincese).

El Kernel es básicamente el sistema operativo y éste contiene todo el código que controla la seguridad, el manejo de usuarios y recursos como RAM, CPU, GPU y todo el código que le permite a Android funcionar como lo hace. Piensa que debajo de todos los visuales que ves, hay muchos programas que le permiten a Android hacer todo lo que hace controlando el Hardware. Linux, el kernel que usa Android, es el mismo que encontramos en Ubuntu, Fedora, Red Hat y otras distribuciones de Linux.

20130407-093555.jpg

Esto puede sonar un poco confuso, pero créeme, vamos a llegar a algo.

Volviendo al Kernel de Linux, este es uno monolítico, que significa que puede cargar o subir módulos a memoria para usarlos cuando los necesite y no tienen que ser parte del código del Kernel. ¿Qué son estos módulos? Estos módulos contienen código que controlan el HARDWARE del dispositivo y muchos se consideran “drivers”. Un “driver” es código o programas que le permiten al sistema operativo comunicarse con el Hardware. Supongamos un capa entre Android y los componentes físicos de la unidad. A los módulos se les conoce como Loadable kernel Modules (LKM).

20130407-094230.jpg

Habiendo explicado todo esto, debemos hablar del licenciamiento del Kernel de Linux. Este Kernel se distribuye bajo la licencia GPLv2 (General Public Licence versión 2), la cual voy a tratar de resumir lo más posible destacando los puntos más importantes para este escrito. La licencia GPL es una que intenta garantizar al usuario final (individual, organizaciones o corporaciones), la libertad para usar, estudiar, compartir o copiar y hasta modificar el “software” bajo la misma. Todo “software” que asegure que estos derechos se mantengan cuando se distribuya, se considera “free software” y no significa gratis sino LIBRE. La licencia GPL básicamente dicta que puedes hacer todo lo antes mencionado al “software” que te llevaste pero al distribuirlo tienes que distribuir su código también; esto asegura que se cumpla la misma: garantizar al usuario final (individual, organizaciones o corporaciones), la libertad para usar, estudiar, compartir o copiar y hasta modificar el “software” bajo la misma.

La GPL también dice que que los LKM deben considerarse parte del código fuente que está protegido bajo ella misma. Por ejemplo, en el caso del Kernel de Linux, todos los módulos o LKM que fueron desarrollados para el mismo (no propietarios), caen bajo el licenciamiento GPL ya que se consideran trabajo derivado (“derivative work”), ya que afectan directamente al Kernel y fueron desarrollados en base al mismo y su funcionamiento fue inspirado en el Kernel en específico. Bajo la licencia GPL, todo trabajo derivado se incluye bajo la misma y en palabras secillas, estos LKM heredan el licenciamiento del Kernel.

Algunos LKM o módulos pueden ser propietarios o en otras palabras, que la organización quien los desarrolla lo hace bajo un licenciamiento privado ya que inicialmente no estaba intencionado a ser desarrollado para el Kernel de Linux. A este tipo de módulos se les llama “propietary drivers”, que originalmente no eran para Linux así que no necesariamente se considera trabajo derivado (“derivative work”). Ejemplo de estos módulos propietarios son algunos “drivers” para controladores WiFi o gráficos diseñados originalmente para Windows y luego los portan a Linux. Estos terminan siendo propietarios ya que se desarrollaron inicialmente para un software privado y bajo una licencia privada que no expone su código.

En conclusión

El Kernel de Android es Linux y el mismo se licencia bajo GPL. Todo el que use el Kernel y lo modifique debe liberar su código para garantizar al usuario final (individual, organizaciones o corporaciones), la libertad para usar, estudiar, compartir o copiar y hasta modificarlo según especifica la licencia GPL.

A diferencia de Android y su licenciamiento, toda organización, corporación o individuo que realice cambios al Kernel que usa Android y lo distribuya, debe distribuir su código.

Autor: Josep Rivera

Soy Analista y programador Senior. Mi pasión es Android y los celulares. Llevo usando Android desde el G1 y la versión 1.5. Uso iOS a diario y NADA como Android.

Comparte este artículo en
4 comments
rogwal
rogwal

muy bueno lo resumiste en pocas palabras excelente 

John Sanchez Bonilla
John Sanchez Bonilla

Me refiero a lo último "A diferencia de Android y su licenciamiento, toda organización, corporación o individuo que realice cambios al Kernel que usa Android y lo distribuya, debe distribuir su código."

Trackbacks

  1. [...] Android y su licenciamiento Android sus licencias y el kernel [...]