Libera tu código

Licenciar tu código

Una de las cosas más importantes a la hora de lanzar un proyecto de programación es decidir bajo que licencia se abre, fundamental para garantizar que el dueño del proyecto puede mantenerlo.

Para ello, es recomendable usar una licencia aprobada por la Open Source Initiative. ¿Por qué es esto? Porque son las más extendidas y es más probable que los potenciales usuarios y contribuyentes a nuestro proyectos las entiendan. Usar otro tipo de licencias o crear tú una te quita estas ventajas.

¿Cómo elegir la licencia?

Hay varias licencias, y la que elijas dependerá de los intereses que tengas para el proyecto. Hay algunas páginas que te ayudan a elegir, por ejemplo What Kind Of Licence Should I Choose?

Las licencias libres más comunes y que cubren un gran espectro de casos de uso son:

Poner licencia al código

Es importante seguir correctamente los pasos y referenciar de manera clara y sin ambigüedad la licencia, para prevenir futuros problemas legales. Cada licencia tiene su proceso concreto, pero en rasgos generales bastaría con lo que explicamos a continuación.

Propiedad del código

Una vez que hemos decidido la licencia más apropiada, tenemos que asegurarnos de que podemos probar legalmente lo que exige la licencia. En concreto, debemos poder asegurar legalmente que:

En proyectos pequeños, es más fácil asegurar que el código es exclusivamente propiedad intelectual del dueño. Proyectos más grandes pueden haber recibido contribuciones de personas externas al proyecto, como un contratista o alguien que ha donado código, y no tener los derechos sobre ese trabajo explícitamente.

Es importante definir un proceso de auditoría continuada de la propiedad intelectual. Es aconsejable definir un mecanismo y herramientas que permitan saber en cada momento quién ha hecho qué, para llevar un control del desarrollo y evitar problemas como disputas o litigios sobre la propiedad del código.

Pasos a seguir

Debemos aplicar la licencia de manera que la gente pueda verla. No es suficiente con afirmar que tu código está disponible bajo una licencia determinada, sino también que es visible en todas las localizaciones apropiadas. Han de llevarse a cabo las siguientes acciones, como mínimo requerido:

Por supuesto, hay que poner a disposición de la gente formas de descarga y/o contribución al proyecto, por ejemplo, o desde puntos de distribución como Github , Google Code o SourceForge, además de incluir información de contacto, por ejemplo en el archivo README.

Es importante añadir correctamente el aviso al encabezado de cada archivo, para hacerlo, hay que seguir unos pasos que depende cada una de las licencias, aunque al añadirla hay que tener en cuenta 2 cosas: el aviso de copyright y la declaración de los permisos de copyright, indicando bajo qué licencia está distribuido el programa.

El aviso de copyright debería incluir el año (o rango de años) en que se terminó de preparar el lanzamiento. Si varias personas ayudaron a escribir el código, hay que usar todos sus nombres.

Un ejemplo extraído de la licencia MPL:

/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is __________________________________________.
*
* The Initial Developer of the Original Code is
* ____________________________________________.
* Portions created by the Initial Developer are Copyright (C) 2___
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* ***** END LICENSE BLOCK ***** */

Un ejemplo más sencillo que se podría usar en caso de que la licencia lo permita y los que han contribuido al código ya estén reflejados en otro lugar, por ejemplo en un control de versiones como git:

/*! Nombre_del_proyecto vX.Y
Copyright (c) 2010-2014 nombre_de_los_dueños_originales

This Source Code Form is subject to the terms of the
Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed
with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

Si se ha copiado código de otras personas bajo la misma licencia, deben copiarse sus avisos de copyright también. Así, se pondrán todos los avisos juntos al principio de cada archivo, o en un archivo auxiliar al que se haga referencia desde el aviso de copyright.

Licenciar el contenido

No obstante, no solo hay que tener en cuenta la licencia del código (las licencias libres u open source son para software), también las licencias de las imágenes, sonidos y documentos que contenga el proyecto. Se recomienda Creative Commons. De igual forma, también se necesita tener una licencia para las bases de datos.

Incluir código libre en tu proyecto

Si tu código incluye librerías de otros proyectos es importante que tu licencia se adecúe a las de estos. Por lo tanto, hay que considerar si las licencias de cada una de las librerías son compatibles con la nuestra.

Diferentes licencias requieren diferentes atribuciones, por lo que la decisión más sencilla es tratarlas a todas igual, ya que dar más atribuciones de las necesarias no suele ser un problema. Es común incluir un texto NOTICE.txt en la raíz del directorio indicando la información importante sobre las licencias de las librerías que usas.

Es importante puntualizar que hay una licencia con requisitos particulares: Common Public Attribution License

Además de incluir las licencias de las librerías se deberá incluir la licencia de cada componente de código usada en el proyecto. Se suele incluir el texto completo de la licencia de cada componente en el directorio donde se encuentra. También es importante mantener las cabeceras de licencia de los archivos, aunque esto puede ser obligatorio o no dependiendo de la licencia usada.

Formas de negocio

Una alternativa bastante usual, pensando en sacarle provecho económico al proyecto, es liberar tu código usando una doble licencia.

Es decir, el software se lanza bajo una licencia copyleft fuerte y lanzar otra versión alternativa, que no contenga copyleft, para aquellos usuarios con los que se quiera llegar a un acuerdo, que estén interesados en desarrollar proyectos basados en el código pero no quieran estar limitados para una licencia copyleft.

Para hacer esto, hay que tener en cuenta que o tienes el copyright de todos los componentes del software o bien los distintos desarrolladores están de acuerdo en liberarlo bajo esa licencia.

Enlaces de interés