domingo, 9 de junio de 2013

Android y su licencia

Encontrè un interesante post en esta fuente, y se los quiero compartir: http://yosoyandroid.com
Android es “Open Source”. Siempre escuchamos esto pero, ¿Sabemos lo que significa? Lo primero que debemos saber es que “Open” no significa gratis sino libre, “freedom”, libertad. Existen muchos tipos de licencias para “software” libre pero nos vamos a enfocar en dos, GPLv2 y Apache. Dos tipos de licencias de “software” de código abierto o libre y los dos que rigen a Android y su Kernel.
La idea de este post es resumir la licencia de Android y cuánta libertad tienen los manufactureros y las entidades que decidan crear su propio ROM de Android. Estudiaremos un poco a fondo estas dos licencias y el por qué y para qué se usan en Android. Vamos a ir por parte ya que es mucho material y en este post, nos enfocaremos en el licenciamiento Android y luego hablaremos del Kernel de Linux.
Android se desarrlló desde sus inicios con el propósito en específico de ser la primera plataforma libre, de código abierto y completa para dispositivos móviles.
Android es lo que se conoce como un “software environment” o simplemente le podemos llamar “software”. Este incluye un sistema operativo basado en el Kernel de Linux el cual incluye una máquina virtual de JAVA conocida como el DALVIK. Dentro de esta máquina virtual es donde se ejecutan o corren los apps, lo que significa que estos corren aislados unos de otros. En palabras simples, lo que conocemos como Android, ese ambiente gráfico que parece controlar nuestros dispositivos; es un conjunto de apps corriendo en en un ambiente protegido o un “sandbox”, sobre el Kernel de Linux.
En Android, a diferencia de otros sistemas operativos, los apps de terceros no son subordinados de los apps incluidos por defecto en el “software”. Esto a lo que se refiere es que por ejemplo si el usuario desea puede reemplazar el app de mensajería, contactos o hasta el app de llamadas telefónicas.
AndroidSoftwareEnvironment
Android fue desarrollado por Android Inc y luego adquirido por Google y desde su inicio se intencionó a ser una plataforma de código abierto y libre para dispositivos móviles. Este tipo de “software” de código abierto se rige bajo unas licencias. En el caso de Android, Google lo distribuye bajo la licencia Apache 2.0.
¿Qué dice la licencia Apache 2.0? Lo más importante del licenciamiento Apache es que te permite usar, modificar, distribuir, vender y promocionar en forma de código u objeto el material que usaste bajo esta licencia. En otras palabras, si usaste un código de un “software” bajo la licencia Apache 2.0, puedes crear tu propio “software” basado en el original, modificándolo como gustes y hasta puedes venderlo sin la necesidad ni obligación de compartir los cambios realizados al código original. Lo que sí te obliga Apache 2.0 a hacer es lo siguiente:
  1. Proveer una copia de la licencia Apache 2.0
  2. Incluir una notificación en el código fuente de que el mismo fue modificado
  3. Retener notificaciones de modificaciones anteriores al código
En resumen, Google decidió licenciar a Android bajo Apache 2.0 porque creen firmemente que el mismo es uno de libre elección. Google ni Android quieren dictarle a los usuarios o desarrolladores lo que pueden o no hacer con su código y un licenciamiento como el GPLv2, el cual rige al Kernel de Linux, no brindaría este tipo de libertad.
Gracias al licenciamiento de Apache 2.0, los manufactureros pueden usar el código de Android, modificarlo y distribuirlo en cualquier forma que deseen sin la necesidad de liberar su código fuente. Bajo la licencia Apache 2.0, liberar el código es opcional y lo haces solo si de verdad quieres ayudar y contribuir a la comunidad de “software” libre. Práctica que pocos o ningún manufacturero sigue.
Próximamente estaremos analizando el licenciamiento del Kernel de Linux y veremos cómo los manufactureros en cierto sentido están obligados por Ley, bajo la licencia GPLv2, a liberar el código fuente de los cambios que realicen al Kernel.

No hay comentarios:

Publicar un comentario