Te explicamos la GPLv3 de forma sencilla

licencia GPLv3
Sep26Retomando nuestra costumbre de ir destripando cosas, empezamos una serie de post sobre la licencia de software libre que máis aceptación tiene en la comunidad: la GPLv3. ¿No sería genial que todos los que la enchufáis por defecto supiérais de que va?

Por Bárbara Román
// Son 1507 palabras. Esto se lee en, nah, 7 minutos, 32 segundos.

Venga, empezamos esta serie sobre la versión 3 de la licencia GPL hablando de los más básico:

¿Cómo sé que estoy cumpliendo los legales de esta Licencia?

Muchos nos preguntáis esta cuestión en los eventos a los que asistimo, o sea, que no tenéis muy claro a qué os obliga. Bien, partiendo de que la General Public License (GPL) es la licencia por excelencia del software libre,  vamos bien. Esta licencia fue creada por la Free Software Fundation (FSF) con la finalidad de garantizar el derecho de los usuarios de software a poder ejecutar, estudiar, modificar y compartir ese software, evitando las limitaciones que tradicionalmente imponen las leyes de copyright. O sea, para que cada uno pueda hacer lo que considere sin repercusiones legales.

Esto lo hicieron aprovechando los términos de las leyes de copyright para conseguir el efecto contrario, de ahí el término "copyleft" para describirla. Todas aquellas personas, (humanas o no) que licencien su software con la GPL conceden a los usuarios los derechos mencionados para ejecutar, estudiar, modificar e incluso distribuir ese software, siempre que cumplan con los requisitos que en ella se imponen.

Entendido, pero ¿cuáles son los requisitos legales de la GPLv3?


Simplificándolo mucho una licencia de software es un contrato donde el titular de los derechos del software (licenciante) fija la condiciones para que otra persona (licenciatario) utilice su software. Si no cumples, pierdes ese derecho, por eso es important que entendáis las condiciones LOL

Vamos a diferenciar entre licenciantes, redistribuidores o licenciatarios, conectándolo con los derechos o libertades y las obligaciones de esta licencia:

Si eres licenciatario tienes que tener las cuatro libertades: no implica que tengas que puedas conseguir el software gratis, pero si lo adquieres tendrás derecho a pedir el código fuente, ejecutar el programa sin limitación, estudiarlo o modificarlo. Mientras no lo distribuyas puedes hacer lo que quieras, y cuando lo distribuyas tienes que respetar la licencia, o sea, que no puedes cerrarlo, que no puedes borrar los avisos de copyright, que no puedes modificarlo sin mencionar esa modificación, que no puedes restringir los derechos de futuros usuarios. Las mismas libertades que has recibido deben llegar íntegras a los demás. Si no, MAL TODO.

 

Si eres licenciante, para que el programa se encuentre distribuido bajo la GPL formalmente deben cumplirse estos requisitos:

  • Incluir en cada archivo las notas de copyright apropiadas, indicando claramante que versiones de la licencia pueden utilizar los usuarios.
  • Añadir un archivo COPYING que contenga una copia de la GPL.
  • Incluir una nota de licencia en cada archivo.

Esto supone incluir dos elementos en cada archivo fuente, uno relativo al aviso del copyright y otro en donde se autoriza la copia advirtiendo que el programa de distribuye bajo los términos de la GPL

En la práctica el licenciante tiene que respetar dos cosas:

1. El usuario puede hacer con el programa lo que quiera:

Lo ponemos en negrita porque parece que es lo má complicado de entender. Si atendemos al contenido de las cuatro libertades podemos observar que las libertades 0 a 2 se centran en el uso que el licenciatario hace del programa en su casa y la libertad 3 se centra en la posibilidad de, si lo desea, compartir con otras personas el programa, tanto original como modificado.

Para respetar la libertad 0 tenemos que evitar cualquier tipo de limitación en cuanto a la ejecución del programa, lo que se conecta con las libertades 1 y 2, en cuanto, que no podemos imponer medidas técnicas que impidan el estudio del código fuente (ingeniería inversa, descompilarlo) y además no podremos ejercitar acciones legales en su contra por realizarlas. Ahora bien, si el licenciatario hace modificaciones en el programa y luego lo comparte está a su vez obligado a cumplir con los términos de la licencia; si simplemente lo ejecuta y usa pero no lo propaga o distribuye no tiene que preocuparse por nada, pero en cuanto lo comparta (propagar o distribuir) tiene que respetar los términos de la licencia.

2. Tiene que proporcionar al usuario el código fuente del programa para que a su vez aquel pueda hacer lo que quiera con el programa:

Como habréis podido deducir para que el licenciatario pueda realizar todas esas cosas es necesario que cuente con el código fuente del programa. La licencia se refiere a el como Corresponding Source y lo define de la siguiente manera:

"...All the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs wich are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by initmate data communication or control flow between those subprograms and otrher parts of the work."
Es importante destacar que la entrega del código de manera ofuscada, minimizada, comprimida o de cualquier otra forma que no sea la idónea para que el código pueda ser modificado supone un incumplimiento de esta obligación.

 

Y ya, si eres distribuidor (aquella persona, humana o no), que no es el autor del software pero que lo ha recibido y decide compartilo con otras personas, con una GPLv3 deben seguir respetando las condiciones. Serán un escenario distinto si distribuyes versiones no modificadas del programa o por si el contrario distribuyes versiones modificadas.

OPCION 1: versiones no modificadas

  • Mantener los correspondientes avisos de Copyright.
  • Proporcionar una copia del texto de la licencia.
  • Proporcionar el código fuente.

 OPCION 2: versiones modificadas.

Si lo modificas tú mismo,  debes incluir un aviso de que el programa ha sido modificado por ti, especificando a que parte afecta y cuando lo has hecho y además:

  • Mantener los correspondientes avisos de Copyright.
  • Proporcionar una copia del texto de la licencia.
  • Proporcionar el código fuente.
  • Licenciar tu versión bajo la propia GPL.

Si la modificación es de otro, entonces a efectos prácticos es como una copia literal, tú no las cambiado y lo entregas tal cual. O sea, como lo de antes pero sin el aviso de que lo has modificado. ¿Lo pilláis o no lo pilláis?

Es posible que cuando lo modifiques, entregues el ejecutable o código objeto. No te sorprendas si te piden después del código fuente...La licencia GPLv3 te obliga a:

a) Transmitir el código objeto en, o incorporado en, un producto físico (incluyendo un medio de distribución físico), acompañado del código fuente fijado en un medio físico duradero utilizado habitualmente para el intercambio de software.

b) Transmitir el código objeto en un producto físico (incluyendo un medio de distribución físico), acompañado de una oferta por escrito, válida por lo menos durante tres años y válida mientras ofrezca piezas de repuesto o soporte al cliente para ese modelo de producto, dar a cualquiera que posea el código objeto (1) una copia del código fuente de todo el software del producto cubierto por esta Licencia, en un soporte físico duradero utilizado habitualmente para el intercambio de software, por un precio no superior a su coste razonable de realizar físicamente este transporte de la fuente, o (2) acceso para copiar el código fuente desde un servidor de red sin coste alguno.

c) Transmitir copias individuales del código objeto con una copia de la oferta escrita para proporcionar la Fuente Correspondiente. Esta alternativa sólo se permite de forma ocasional y no comercial, y sólo si ha recibido el código objeto con dicha oferta, de acuerdo con la subsección 6b.

d) Transmitir el código objeto ofreciendo acceso desde un lugar designado (gratuito o de pago), y ofrecer acceso equivalente al código fuente de la misma manera a través del mismo lugar sin cargo adicional. No es necesario que los destinatarios copien el código fuente junto con el código objeto. Si el lugar para copiar el código objeto es un servidor de red, el código fuente puede estar en un servidor diferente (operado por usted o un tercero) que soporte instalaciones de copia equivalentes, siempre que mantenga instrucciones claras junto al código objeto que indiquen dónde encontrar el código fuente. Independientemente de qué servidor aloje el código fuente, sigo estando obligado a asegurarme de que esté disponible durante el tiempo necesario para satisfacer estos requisitos.

e) Transmitir el código objeto utilizando peer to peer, siempre que se informe a las semillas de dónde se ofrecen al público en general el código objeto y el código fuente del programa de manera gratuita.

 

Finalmente, una novedad de la GPL v3 es el requisito de proporcionar “información para la instalación” del programa. Esto es un medio para evitar que mediante le bloqueo o lockdown de un dispositivo se pueda vulnerar la libertad de estudiar y modificar el programa….¿os suena de algo? Ponnos un tweet si no entiendes algo, que te damos una clase extra ;)


Publicado el 26 de septiembre de 2018