Eligiendo licencia para el código
De Nosolosoftwarewiki
La única diferencia legal entre un código considerado software libre y otro propietario es su licencia.
Contenido |
¿Qué es el Software Libre?
Para que un programa sea considerado software libre debe cumplir las 4 condiciones siguientes:
- L0: libertad para ejecutar el programa, con cualquier propósito.
- L1: libertad para estudiar su funcionamento y adaptarlo a las necesidades. Es necesario el acceso al código fuente.
- L2: libertad para redistribuir copias del programa.
- L3: libertad para mejorarlo y publicar las mejoras u otras modificaciones. Es necesario el acceso al código fuente.
Cualquier licencia que cumpla estas 4 libertades es considerada software libre.
Licencia y autoría
La licencia es el mecanismo legal mediante el cual el autor declara qué derechos sobre el programa cede al usuario. Se podría decir que es un contrato entre el autor del programa y el usuario final, donde se declara cómo y para qué puede usarlo.
Sin embargo, la autoría del software no cambia, ésta siempre es del programador y está garantizada por las leyes de copyright.
Por defecto, las leyes de propiedad intelectual no garantizan ningún derecho al usuario. Es imprescindible que un programa declare que está bajo una determinada licencia de software libre para que sea considerado como tal.
Consideraciones
Tanto la Free Software Foundation como la Open Source Initiative mantienen un listado actualizado de licencias. Aunque todas las que cumplan las 4 libertades son consideradas licencias libres, existen algunos matices importantes a la hora de decantarse por una u otra.
Licencias Robustas VS Permisivas
Se pueden destacar por lo menos 2 categorías principales de licencias libres:
- Licencias Robustas: exigen que los trabajos derivados se redistribuyan con la misma licencia, sin añadir ninguna restricción adicional. Son conocidas como licencias copyleft. Ejemplos de licencias robustas: GPL: GNU General Public License, LGPL: Lesser GPL, MPL: Mozilla Public License.
- Licencias Permisivas: permiten la creación de trabajos derivados cambiando las condiciones originales de la licencia. Esto, por ejemplo, permite crear a partir de un código software liber un producto que no lo sea. Ejemplos de licencias permisivas: BSD: Berkeley Software Distribution, X11/MIT License, Apache.
Elegir entre un tipo u otro de licencia determinará si los programas derivados pueden o no añadir restricciones a nuestra licencia original. Esto determina, por ejemplo, si se puede crear software propietario a partir del programa libre.
Compatibilidad de las licencias
Las licencias se pueden analizar según sean o no compatibles entre sí, es dicir, el código licenciado con una determinada licencia A se puede mezclar con el código licenciado con otra distinta B.
Un ejercicio ilustrativo en este sentido puede ser estudiar qué licencias son o no compatibles con la GPL:
- una licencia se considera GPL-compatible cuando no añade ninguna restricción adicional a las impuestas por ésta. Como consecuencia práctica se tiene que el código con una licencia no compatible con la GPL, no puede integrarse con código GPL.
Tanto las licencias robustas como las permisivas de las que antes hablábamos, pueden ser (o no ser) gpl-compatibles. Probablemente, uno de los casos más famosos es el de la licencia BSD. La BSD original, tenía como restricción adicional a la GPL que:
- 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: This product includes software developed by the University of California, Berkeley and its contributors.
Siendo así, el código BSD no era GPL-compatible y no podía integrarse con ningún código de ese tipo. Es por ello que se creó la licencia BSD modificada, que elimina esta restricción, haciéndose así GPL-compatible, es decir, dando soporte legal a la integración con código GPL.
Licenciamiento dual
Se dice que un programa tiene licencia dual o doble licenciamiento cuando tiene dos o más licencias.
Esta práctica puede ser útil cuando se libera un producto con una licencia copyleft y otra permisiva. Esta práctica ha sido desarrollada en casos notorios como el de la base de datos MySQL para permitir que -aunque el producto sea libre con copyleft- también pueda ser embebido en otros productos propietarios.
Relicenciamiento
El relicenciamiento consiste en cambiar la licencia del programa. Esto únicamente puede ser hecho si todos los agentes que detentan el copyright están de acuerdo.
Conclusiones
La elección de licencia es el único distintivo legal entre un programa de software libre y otro que no lo sea. Antes de elegir licencia, es necesario responder a las siguientes preguntas:
- ¿Podrán añadirse restricciones a la licencia original? O como popularmente se formula, ¿es necesario que a partir de tu programa se pueda crear software propietario?
- ¿Se integrará el código con otro? En ese caso, ¿qué licencia es compatible con las necesidades?
A continuación se muestra una tabla con las restricciones y libertades que tienen las principales licencias de software:
Las licencias recomendadas
Según Bruce Perens, se podrían utilizar únicamente 3 o 4 licencias, que además son compatibles entre sí, lo que facilita la integración de código. Si tienes dudas sobre cual elegir, probablemente la mejor elección sea una de estas tres.
- Apache: es una licencia permisiva, permitiría ser combinada tanto con software libre como con propietario en un trabajo derivado.
- GPL: es una licencia robusta. Es la más popular de las licencias de software libre. Únicamente permite ser combinada con software libre.
- AGPL o Affero GPL: igual que la GPL, pero teniendo el cuenta el caso de "Software as a Service". La licencia GPL no obliga a compartir el código hasta que éste sea distribuido con alguien. ¿Pero qué ocurre cuando se usan servicios externos que corren en otros servidores? La Affero obliga a estes servicios a dar la posibilidad de descargar el código desde la web.
- LGPL o Lesser GPL: es una licencia robusta. Sin embargo, a diferencia de la GPL, permite su uso con programas propietarios. Está especialmente diseñada para librerías que se cargan en tiempo de ejecución del programa (no se compila con todo el software) y que sean usadas por software propietario.
Artículos y bibliografía
- Licencias de software libre, Free Software Foundation
- Licencias de software libre, Open Source Initiative
- Copyright and Open Source Software Licensing, de Sau Sheong Chang
- How many Open Source licenses do you need?, Bruce Perens
- Estudio sobre la licencia GPL v3 y otras licencias open source, Sánchez Crespo abogados y consultores

