Licencia pública general menor de GNU

Compartir Imprimir Citar
Licencia de software libre

La Licencia pública general reducida de GNU (LGPL) es una licencia de software libre publicada por la Free Software Foundation (FSF). La licencia permite a los desarrolladores y empresas utilizar e integrar un componente de software publicado bajo la LGPL en su propio software (incluso propietario) sin que los términos de una licencia fuerte de copyleft exijan que se publique el código fuente de sus propios componentes. Sin embargo, cualquier desarrollador que modifique un componente cubierto por LGPL debe hacer que su versión modificada esté disponible bajo la misma licencia LGPL. Para el software propietario, el código de la LGPL se suele utilizar en forma de biblioteca compartida, de modo que existe una separación clara entre los componentes propietarios y LGPL. La LGPL se usa principalmente para bibliotecas de software, aunque también la usan algunas aplicaciones independientes.

La LGPL se desarrolló como un compromiso entre el fuerte copyleft de la Licencia pública general GNU (GPL) y licencias más permisivas, como las licencias BSD y la licencia MIT. La palabra "Menor" en el título muestra que la LGPL no garantiza la completa libertad del usuario final en el uso del software; solo garantiza la libertad de modificación de los componentes con licencia LGPL, pero no de los componentes patentados.

Historia

La licencia originalmente se llamaba Licencia pública general de la biblioteca GNU y se publicó por primera vez en 1991, y adoptó la versión número 2 para estar a la par con la versión 2 de GPL. La LGPL se revisó de manera menor en el Versión 2.1, publicada en 1999, cuando se le cambió el nombre a Licencia pública general reducida de GNU para reflejar la posición de la FSF de que no todas las bibliotecas deberían usarla. La versión 3 de la LGPL se publicó en 2007 como una lista de permisos adicionales aplicados a la versión 3 de la GPL.

Además del término "trabajo basado en el Programa" de GPL, la versión 2 de LGPL introdujo dos términos de aclaración adicionales "trabajo basado en la biblioteca" y una "obra que usa la biblioteca". La versión 3 de LGPL eliminó parcialmente estos términos.

Diferencias con la GPL

La principal diferencia entre la GPL y la LGPL es que esta última permite vincular la obra con (en el caso de una biblioteca, "utilizada por") un programa no (L)GPL, independientemente de si está licenciado bajo una licencia de la familia GPL u otras licencias. En LGPL 2.1, el programa sin (L)GPL se puede distribuir bajo cualquier término si no es un trabajo derivado. Si se trata de un trabajo derivado, los términos del programa deben permitir la "modificación del trabajo para el uso propio del cliente y la ingeniería inversa para depurar dichas modificaciones." Si una obra que utiliza un programa LGPL es una obra derivada o no, es una cuestión legal. Un ejecutable independiente que se vincula dinámicamente a una biblioteca a través de un archivo.so,.dll o un medio similar generalmente se acepta como no un trabajo derivado según lo define la LGPL. Entraría dentro de la definición de una "obra que usa la Biblioteca". El párrafo 5 de la LGPL versión 2.1 establece:

Un programa que no contiene ningún derivado de ninguna parte de la Biblioteca, pero está diseñado para trabajar con la Biblioteca al ser compilado o vinculado con ella, se llama "trabajo que utiliza la Biblioteca". Tal trabajo, en forma aislada, no es un trabajo derivado de la Biblioteca, por lo que queda fuera del alcance de esta Licencia.

Básicamente, si se trata de una "obra que usa la biblioteca", entonces debe ser posible vincular el software con una versión más reciente del programa cubierto por la LGPL. El método más utilizado para hacerlo es usar "un mecanismo de biblioteca compartida adecuado para vincular". Alternativamente, se permite una biblioteca vinculada estáticamente si se proporciona el código fuente o los archivos de objetos vinculables.

Compatibilidad

Una característica de la LGPL es el permiso para sublicenciar bajo la GPL cualquier pieza de software que se reciba bajo la LGPL (consulte la sección 3 de la LGPL versión 2.1 y la sección 2, opción b de la LGPL versión 3). Esta característica permite la reutilización directa del código LGPLed en bibliotecas y aplicaciones GPLed.

La versión 3 de la LGPL no es inherentemente compatible con la versión 2 de la GPL. Sin embargo, las obras que utilicen esta última que hayan dado permiso para utilizar una versión posterior de la GPL son compatibles: una obra publicada bajo la GPLv2 "o cualquier versión posterior" puede combinarse con código de una biblioteca LGPL versión 3, y el trabajo combinado en su conjunto se rige por los términos de la GPLv3.

Recomendaciones de la FSF sobre licencias de bibliotecas

El nombre anterior Licencia pública general de la biblioteca GNU daba la impresión de que la FSF recomendaba que todas las bibliotecas de software deberían usar la LGPL y los programas deberían usar la GPL. En el ensayo de 1999 Por qué no debería usar la GPL menor para su próxima biblioteca, Richard Stallman explicó que si bien la LGPL no había quedado en desuso, uno no necesariamente debería usar la LGPL para todas las bibliotecas, ya que usar GPL puede dar ventaja a los desarrolladores de software libre.

Por otro lado, la FSF a veces aboga por licencias aún menos restrictivas. Por ejemplo, Stallman respaldó el uso de la licencia de estilo BSD por parte del proyecto Vorbis en sus bibliotecas en 2001.

Especificaciones del lenguaje de programación

La licencia utiliza terminología destinada principalmente a aplicaciones escritas en el lenguaje de programación C o su familia. Franz Inc., los desarrolladores de Allegro Common Lisp, publicaron su propio preámbulo de la licencia para aclarar la terminología en el contexto de Lisp. La LGPL con este preámbulo a veces se denomina LLGPL.

Además, Ada tiene una función especial, los genéricos, que pueden impulsar el uso de la Licencia Pública General Modificada (GMGPL) de GNAT: permite que el código se vincule o cree instancias de unidades cubiertas por GMGPL sin que el código en sí quede cubierto por la GPL.

Las plantillas de C++ y las bibliotecas de solo encabezado tienen el mismo problema que los genéricos de Ada. La versión 3 de la LGPL aborda tales casos en la sección 3.

Herencia de clases

Ha surgido cierta preocupación sobre la idoneidad de las clases orientadas a objetos en el código con licencia LGPL que se heredan por código que no es (L)GPL. La aclaración se da en el sitio web oficial de GNU:

The LGPL does not contain special provisions for inheritance, because none are needed. La herencia crea trabajos derivados de la misma manera que la vinculación tradicional, y la LGPL permite este tipo de trabajo derivado de la misma manera que permite llamadas de función ordinarias.