14/04/2023
En el vasto universo del desarrollo de software, las licencias son los pilares que definen cómo se puede usar, modificar y distribuir una pieza de código. Mientras que muchas licencias propietarias buscan restringir estas acciones, las licencias GNU, nacidas del espíritu del software libre, persiguen un objetivo diametralmente opuesto: garantizar la libertad de los usuarios. Dentro de esta filosofía, encontramos dos licencias principales para librerías: la Licencia Pública General (GPL) y la Licencia Pública General Reducida (LGPL), anteriormente conocida como Library GPL. Comprender las particularidades de la LGPL es crucial, ya que se aplica a un gran número de componentes fundamentales y define una estrategia única para el avance del software libre.
A diferencia de la GPL, que exige que cualquier programa que utilice un componente licenciado bajo ella también deba ser software libre, la LGPL introduce una flexibilidad estratégica. Esta licencia está diseñada para permitir que las librerías sean utilizadas tanto en programas de software libre como en programas de software propietario. Esta distinción es fundamental y ha sido objeto de debate y planificación dentro de la comunidad GNU, buscando siempre el equilibrio entre la promoción de la libertad y la maximización de la adopción.
- LGPL vs. GPL: Una Decisión Estratégica para el Software Libre
- Las Libertades Fundamentales Garantizadas por la LGPL
- El Gran "Pero": Lo que la LGPL NO Garantiza (y por qué es crucial)
- Compromisos y Responsabilidades del Usuario y Distribuidor
- Distinciones Clave: "Trabajo Basado en la Librería" vs. "Trabajo que Utiliza la Librería"
- El Desafío de las Patentes y la LGPL
- La Evolución de la LGPL y su Relevancia Actual
- Comparación Estratégica: GPL vs. LGPL
- Preguntas Frecuentes (FAQ) sobre la LGPL
- ¿Es la LGPL una licencia "libre"?
- ¿Puedo cobrar por software que usa una librería LGPL?
- ¿Necesito distribuir el código fuente de mi aplicación si usa una librería LGPL?
- ¿Qué diferencia hay entre enlazar estáticamente y dinámicamente con una librería LGPL?
- ¿La LGPL garantiza que el software funcionará sin errores?
- ¿Puedo cambiar la licencia de una librería LGPL a GPL?
- ¿Puedo usar una librería LGPL en un proyecto comercial propietario?
- Conclusión
LGPL vs. GPL: Una Decisión Estratégica para el Software Libre
La elección entre aplicar la GPL o la LGPL a una librería no es trivial; es una cuestión de estrategia que depende de las particularidades de cada situación. La GPL ordinaria, con su naturaleza más restrictiva, asegura que una librería solo pueda ser empleada en el desarrollo de programas que también sean libres. Esto confiere una ventaja competitiva significativa a los desarrolladores de software libre, ya que les proporciona herramientas que no están disponibles para sus contrapartes propietarias sin adoptar también la libertad.
Un ejemplo paradigmático de esta estrategia es la librería GNU Readline. Esta librería, que ofrece funcionalidades únicas como la edición e historial de entrada para programas interactivos, no tiene equivalentes fácilmente disponibles en el software propietario. Al licenciarla bajo la GPL, se incentiva a los desarrolladores a crear software libre si desean incorporar esta valiosa característica. De hecho, existen aplicaciones que son software libre precisamente por la necesidad de utilizar Readline, demostrando el poder de la GPL para fomentar el crecimiento del ecosistema libre.
Sin embargo, la LGPL entra en juego cuando esta ventaja competitiva no es tan marcada. Si una librería libre ofrece funcionalidades que ya están ampliamente disponibles a través de alternativas propietarias, limitar su uso únicamente a software libre no aportaría un beneficio particular a la comunidad. En estos casos, la LGPL es la opción preferida, ya que permite que la librería sea adoptada por un espectro más amplio de proyectos, incluyendo aquellos de naturaleza propietaria. Esta flexibilidad puede llevar a que la librería se convierta en un estándar de facto, beneficiando indirectamente al software libre al fomentar una mayor interacción y, potencialmente, contribuciones. Un caso notable de esta evolución es OpenOffice.org, que en su versión Beta 3 cambió su licencia a la LGPL v3, buscando una mayor flexibilidad y protección que permitiera la referencia a librerías LGPL en tiempo de ejecución por parte de programas de código cerrado.
La comunidad del software libre reconoce que, aunque la popularidad de una librería es tentadora, el verdadero valor reside en el apoyo mutuo. Al mantener ciertas librerías bajo la GPL, se fortalece el conjunto de herramientas exclusivas para el software libre, impulsando su desarrollo y haciéndolo más atractivo frente a las alternativas propietarias. No obstante, la LGPL desempeña un papel vital al facilitar la interoperabilidad y la adopción masiva en escenarios donde la exclusividad no es la estrategia más beneficiosa para el movimiento en su conjunto. Es un delicado equilibrio entre la promoción de la libertad y la expansión de la influencia.
Las Libertades Fundamentales Garantizadas por la LGPL
Las Licencias Públicas Generales de GNU, incluida la LGPL, están diseñadas para proteger y promover las libertades esenciales del usuario en relación con el software. Cuando hablamos de software libre bajo la LGPL, nos referimos a la libertad de uso, no a su precio. La LGPL garantiza una serie de derechos fundamentales que empoderan al usuario y al desarrollador:
- Libertad de Distribución: Usted tiene la libertad de distribuir copias de la librería, y puede incluso cobrar un importe por el acto físico de transferir una copia, si así lo desea. Esta libertad asegura que el software pueda llegar a cualquier persona.
- Acceso al Código Fuente: Se le garantiza el derecho a recibir el código fuente de la librería o a poder obtenerlo si lo desea. Esta es una libertad crucial, ya que el acceso al código fuente es la base para entender, estudiar y modificar el software.
- Libertad de Modificación: Usted puede modificar la librería y utilizar partes de ella en nuevos programas. Si bien la LGPL impone ciertas responsabilidades al distribuir modificaciones, la capacidad de adaptar el software a sus necesidades es un pilar fundamental del software libre.
- Libertad para Usar en Nuevos Programas Libres: Puede usar partes de la librería modificada o no, en nuevos programas libres.
- Información sobre sus Derechos: La licencia le informa claramente sobre sus derechos y responsabilidades, asegurando que esté consciente de las libertades que posee.
- Compatibilidad con Software Propietario: Una de las garantías más distintivas de la LGPL es que permite el enlace de la librería con programas de software no libre. Esto es lo que la hace una opción atractiva para desarrolladores comerciales que desean aprovechar componentes libres sin tener que licenciar todo su producto como software libre.
- Capacidad de Reemplazo: La LGPL asegura que el usuario de un programa que utiliza una librería licenciada bajo esta licencia tenga la libertad y los medios para ejecutar ese programa utilizando una versión modificada de la librería. Esto implica que el distribuidor debe proporcionar los medios para que el usuario pueda reemplazar la versión original de la librería con una modificada y que el programa siga funcionando correctamente, generalmente mediante el uso de mecanismos de librerías compartidas o la provisión de ficheros objeto completos.
Para proteger estos derechos, la LGPL establece ciertas restricciones para los distribuidores, asegurando que las libertades otorgadas no sean negadas a los receptores. Estas restricciones se traducen en responsabilidades para quien distribuye o modifica copias de la librería, como la obligación de mantener los avisos de derechos de autor y de licencia intactos, y de garantizar que los receptores también puedan obtener el código fuente.
El Gran "Pero": Lo que la LGPL NO Garantiza (y por qué es crucial)
A pesar de las amplias libertades que la LGPL concede, es de suma importancia comprender que no todo está "garantizado" en el sentido comercial o de rendimiento. De hecho, uno de los aspectos más críticos y explícitamente declarados de la licencia es la ausencia de garantía.
La LGPL establece claramente que, dado que la librería se licencia de forma gratuita, no existe ninguna garantía para la misma en la medida permitida por la ley aplicable. Los titulares de los derechos de autor y otras partes que suministran la librería lo hacen "tal cual", sin ninguna garantía de ningún tipo, ya sea expresa o implícita. Esto incluye, pero no se limita a, las garantías implícitas de comerciabilidad o de idoneidad para un propósito particular. En otras palabras, no hay promesa de que la librería funcione de una manera específica, que esté libre de errores, o que sea adecuada para un uso concreto.
Esta disposición significa que todo el riesgo en cuanto a la calidad y el rendimiento de la librería recae enteramente en el usuario. Si la librería resultara ser defectuosa, es el usuario quien asume el coste de todo el mantenimiento, reparación o corrección necesaria. Esto es una cláusula estándar en muchas licencias de software libre y es fundamental para proteger a los desarrolladores de posibles litigios relacionados con el rendimiento del software que distribuyen gratuitamente.
Además de la ausencia de garantía, la LGPL también impone una limitación de responsabilidad. Bajo ninguna circunstancia, a menos que sea requerido por la ley aplicable o por un acuerdo escrito, ningún poseedor de derechos de autor o cualquier otra parte que modifique y/o redistribuya la librería será responsable por daños. Esto incluye cualquier daño general, especial, accidental o consecuente que pudiera originarse por el uso o la incapacidad de usar la librería. Ejemplos de estos daños incluyen pérdidas de datos, producción de datos incorrectos, pérdidas sufridas por terceros o fallos de la librería para funcionar con otro software, incluso si se ha notificado la posibilidad de tales daños.
Estas cláusulas de "sin garantía" y "limitación de responsabilidad" son esenciales para el modelo de software libre, ya que permiten a los desarrolladores compartir su trabajo sin temor a responsabilidades legales onerosas que podrían desincentivar la contribución y la colaboración. Es una contrapartida necesaria a la gran libertad que se ofrece al usuario.
Compromisos y Responsabilidades del Usuario y Distribuidor
Si bien la LGPL otorga amplias libertades, también impone responsabilidades claras a quienes copian, distribuyen o modifican el software. Estas responsabilidades están diseñadas para proteger las libertades de los usuarios finales y asegurar la continuidad del modelo de software libre:
- Preservación de Avisos: Al copiar y distribuir copias literales del código fuente completo de la librería, usted debe publicar de forma manifiesta y apropiada un aviso de derechos de autor y una renuncia de garantía en cada copia. Es fundamental mantener intactas todas las notificaciones que se refieran a la LGPL y a la ausencia de cualquier garantía. Además, debe distribuir una copia de la licencia junto con la librería.
- Modificaciones y Nuevas Librerías: Si usted modifica una copia de la librería o cualquier parte de ella, creando así un "trabajo basado en la librería", y desea copiar y distribuir estas modificaciones, debe cumplir con varias condiciones:
a) El trabajo modificado debe ser, por sí mismo, una librería.
b) Los ficheros modificados deben llevar avisos claros, declarando que usted los cambió y la fecha de cualquier modificación.
c) Todo el trabajo modificado debe ser licenciado sin cargo a terceras partes, bajo los términos de esta Licencia.
d) Si una funcionalidad en la librería modificada se refiere a una función o tabla de datos que debe ser suministrada por un programa de aplicación, usted debe hacer un esfuerzo de buena fe para asegurar que, si la aplicación no la suministra, la funcionalidad siga operando y manteniendo su propósito significativo. - Distribución de Código Objeto o Ejecutable: Si distribuye la librería (o una porción o derivado de ella) en código objeto o forma ejecutable, debe acompañarla con el correspondiente código fuente legible y completo. Este código fuente debe ser distribuido bajo los términos de las Secciones 1 y 2 de la LGPL, preferiblemente en un medio usado habitualmente para el intercambio de software. Si la distribución del código objeto se hace ofreciendo acceso desde un lugar designado (por ejemplo, un servidor), entonces ofrecer un acceso equivalente al código fuente desde el mismo sitio satisface el requisito.
- Enlace con "Trabajos que Usan la Librería": Cuando un programa que no contiene derivado de la librería (un "trabajo que usa la librería") se enlaza con ella para producir un ejecutable, ese ejecutable se convierte en un derivado de la librería y, por lo tanto, está cubierto por la LGPL. Como excepción, usted puede distribuir dicho trabajo bajo los términos de su elección, siempre que permitan la modificación del trabajo por parte del cliente y la ingeniería inversa para depurar tales modificaciones. Debe incluir una notificación de que la librería se utiliza, una copia de la LGPL, y, si el trabajo muestra notas de derechos de autor, incluir las de la librería.
- Mecanismos de Librería Compartida: Para los ejecutables que se enlazan con la librería, una forma común de cumplir con las responsabilidades es usar un mecanismo de librería compartida adecuado. Un mecanismo adecuado es aquel que utiliza en tiempo de ejecución una copia de la librería ya presente en el ordenador del usuario (en lugar de copiar funciones al ejecutable) y que funcionará correctamente con una versión modificada de la librería si el usuario instala una, siempre que la versión modificada sea compatible con la interfaz.
Estas responsabilidades aseguran que la libertad de modificar y redistribuir la librería, y de ejecutar el software con versiones modificadas de ella, se mantenga para todos los usuarios, incluso cuando el software se distribuye en formas compiladas o enlazadas con otros programas.
Distinciones Clave: "Trabajo Basado en la Librería" vs. "Trabajo que Utiliza la Librería"
La LGPL introduce una distinción fundamental que es crucial para entender sus implicaciones, especialmente en el contexto del software propietario: la diferencia entre un "trabajo basado en la librería" y un "trabajo que utiliza la librería".
Trabajo Basado en la Librería
Un "trabajo basado en la librería" es aquel que contiene código fuente derivado directamente de la librería original. Esto significa que el trabajo incluye la librería o una parte de ella de forma literal, o con modificaciones, o traducida a otro lenguaje. En esencia, si su código es una modificación, una extensión o una parte intrínseca de la librería LGPL, entonces es un "trabajo basado en la librería".
Según la LGPL, cualquier "trabajo basado en la librería" debe ser licenciado bajo los términos de la propia LGPL (o, opcionalmente, bajo la GPL ordinaria si así lo decide el desarrollador en un punto específico). Esto asegura que las modificaciones y derivaciones de la librería original mantengan las mismas libertades y responsabilidades.
Trabajo que Utiliza la Librería
Por otro lado, un "trabajo que utiliza la librería" es un programa que no contiene código derivado de ninguna porción de la librería, pero está diseñado para funcionar con ella al ser compilado o enlazado. En sí mismo, este trabajo separado no es un derivado de la librería y, por lo tanto, cae fuera del ámbito de las restricciones de la LGPL para su propio licenciamiento. Esto significa que un programa que "usa" una librería LGPL no tiene que ser software libre o estar licenciado bajo la LGPL.
Sin embargo, la situación cambia cuando un "trabajo que utiliza la librería" se enlaza con la librería LGPL. La combinación de ambos (el programa y la librería) para formar un ejecutable se considera legalmente un "trabajo combinado" o un derivado de la librería original. Este ejecutable combinado, al contener porciones de la librería LGPL, sí está cubierto por la LGPL. Esto implica que, aunque el código fuente del programa principal pueda ser propietario, el ejecutable resultante debe cumplir con las condiciones de la LGPL en lo que respecta a la librería. Esto generalmente significa que, si se distribuye el ejecutable, se debe proporcionar acceso al código fuente de la librería y permitir al usuario reemplazar la versión de la librería en el ejecutable.
La forma de enlace (estático o dinámico) es relevante aquí. Un enlace dinámico (usando librerías compartidas) es a menudo la forma más sencilla de cumplir con la LGPL, ya que el ejecutable utiliza una copia de la librería que ya está presente en el sistema del usuario o que el usuario puede reemplazar fácilmente. En el caso de un enlace estático, donde las funciones de la librería se copian directamente en el ejecutable, el distribuidor debe proporcionar los ficheros objeto completos del "trabajo que utiliza la librería" para que el usuario pueda re-enlazarlo con una versión modificada de la librería. Esta distinción es fundamental para comprender cómo la LGPL permite la coexistencia de componentes libres y propietarios en un mismo producto.
El Desafío de las Patentes y la LGPL
Las patentes de software propietario representan una amenaza constante para la existencia de cualquier programa libre. Para mitigar este riesgo, la LGPL incluye una cláusula específica diseñada para proteger las libertades de los usuarios. La licencia insiste en que cualquier licencia de patente obtenida para una versión de la librería debe ser consistente con todas las libertades de uso especificadas en la LGPL. Esto significa que una empresa no puede limitar eficazmente a los usuarios de un programa libre mediante la obtención de una licencia restrictiva de un titular de patente que contradiga los términos de la LGPL.
En caso de que se impongan condiciones (por ejemplo, por orden judicial o acuerdo de patente) que contradigan las condiciones de la LGPL, el distribuidor no está exento de sus obligaciones bajo la LGPL. Si no es posible distribuir la librería de tal manera que satisfaga simultáneamente las obligaciones de la LGPL y cualquier otra obligación pertinente (como una licencia de patente restrictiva), entonces la única opción sería abstenerse completamente de distribuir la librería. Esta disposición subraya el compromiso de la LGPL con la protección de la libertad del software, incluso frente a los desafíos legales y de propiedad intelectual.
La Evolución de la LGPL y su Relevancia Actual
La Free Software Foundation (FSF) mantiene la capacidad de publicar versiones nuevas y/o revisadas de la Licencia Pública General Menor de vez en cuando. Estas nuevas versiones son similares en espíritu a las precedentes, pero pueden diferir en detalles para abordar nuevos problemas o intereses emergentes en el ámbito del software. Cada versión se distingue por un número. Si una librería especifica un número de versión de la LGPL que se aplica a ella misma y "cualquier versión posterior", el usuario tiene la opción de cumplir los términos y condiciones tanto de esa versión como de cualquier versión posterior publicada por la FSF. Si la librería no especifica un número de versión, el usuario puede elegir cualquier versión publicada por la FSF. Esta flexibilidad asegura que la licencia pueda adaptarse a los cambios en el panorama tecnológico y legal, manteniendo su relevancia y eficacia a lo largo del tiempo.
Comparación Estratégica: GPL vs. LGPL
| Característica | Licencia Pública General (GPL) | Licencia Pública General Reducida (LGPL) |
|---|---|---|
| Filosofía Principal | Máxima libertad y "viralidad": todo el software derivado debe ser libre. | Libertad con flexibilidad: permite el enlace con software propietario. |
| Uso en Software Propietario | No permitido directamente (el software propietario debería volverse libre). | Permitido a través de enlace (dinámico o estático con provisión de código objeto). |
| Impacto en el Software Enlazado | El programa enlazado debe ser licenciado bajo GPL. | El ejecutable combinado está cubierto por LGPL, pero el "trabajo que usa la librería" no tiene que ser LGPL. |
| Objetivo Estratégico | Fomentar el crecimiento del software libre puro, dar ventaja a desarrolladores libres. | Promover la adopción más amplia de la librería, incluso en contextos propietarios, cuando no hay ventaja única. |
| Ejemplos Comunes | GNU Readline, el kernel Linux. | Librería GNU C (glibc), OpenOffice.org (actualmente). |
| Provisión de Código Fuente | Siempre se debe proveer el código fuente completo del programa enlazado. | Se debe proveer el código fuente de la librería y permitir el re-enlace. |
Preguntas Frecuentes (FAQ) sobre la LGPL
¿Es la LGPL una licencia "libre"?
Sí, la LGPL es una licencia de software libre. Garantiza las cuatro libertades esenciales: la libertad de ejecutar el programa para cualquier propósito, la libertad de estudiar cómo funciona y adaptarlo, la libertad de redistribuir copias, y la libertad de mejorar el programa y publicar las mejoras.
¿Puedo cobrar por software que usa una librería LGPL?
Sí, la LGPL le permite cobrar un importe por el acto físico de transferir una copia del software. La "libertad" en el software libre se refiere a las libertades de uso, modificación y distribución, no al precio.
¿Necesito distribuir el código fuente de mi aplicación si usa una librería LGPL?
No, si su aplicación es un "trabajo que utiliza la librería" (es decir, no contiene código derivado de la librería LGPL en sí, sino que solo se enlaza con ella), no está obligado a distribuir el código fuente de su propia aplicación bajo la LGPL. Sin embargo, sí debe proporcionar el código fuente de la librería LGPL utilizada y los medios para que el usuario pueda reemplazar la versión de la librería en el ejecutable (por ejemplo, mediante enlace dinámico o proporcionando los ficheros objeto de su aplicación para re-enlace).
¿Qué diferencia hay entre enlazar estáticamente y dinámicamente con una librería LGPL?
El enlace dinámico (uso de librerías compartidas) suele ser más sencillo para cumplir con la LGPL, ya que el ejecutable utiliza una copia de la librería que ya está en el sistema del usuario, permitiendo al usuario sustituirla fácilmente. El enlace estático, donde el código de la librería se incorpora directamente al ejecutable, requiere que el distribuidor proporcione los ficheros objeto del "trabajo que utiliza la librería" para que el usuario pueda re-enlazar el ejecutable con una versión modificada de la librería.
¿La LGPL garantiza que el software funcionará sin errores?
No, la LGPL, al igual que la mayoría de las licencias de software libre, incluye una clara ausencia de garantía. La librería se proporciona "tal cual", sin garantías de ningún tipo (implícitas o explícitas) sobre su comerciabilidad, idoneidad para un propósito particular o ausencia de errores. El riesgo de calidad y rendimiento recae en el usuario.
¿Puedo cambiar la licencia de una librería LGPL a GPL?
Sí, la Sección 3 de la LGPL permite al titular de una copia de la librería optar por aplicar los términos de la Licencia Pública General GNU ordinaria en lugar de la LGPL. Una vez realizado este cambio en una copia, es irreversible para esa copia y sus derivados. Esta opción es útil si desea incorporar partes de la librería en un programa que no es una librería y desea que todo el programa esté bajo la GPL.
¿Puedo usar una librería LGPL en un proyecto comercial propietario?
Sí, esa es una de las principales ventajas de la LGPL sobre la GPL. La LGPL permite que las librerías sean utilizadas en proyectos comerciales y propietarios, siempre y cuando se cumplan las condiciones de la licencia, principalmente en lo que respecta a la provisión del código fuente de la librería y la capacidad del usuario de reemplazarla.
Conclusión
La GNU Lesser General Public License (LGPL) es una herramienta legal poderosa y estratégica en el arsenal del software libre. Aunque "menor" en sus restricciones en comparación con la GPL ordinaria, no es "menor" en su impacto. Al permitir el enlace con el software propietario, la LGPL facilita una adopción más amplia de componentes libres, abriendo puertas a colaboraciones y usos que de otro modo estarían vedados. Sin embargo, este grado de libertad viene acompañado de responsabilidades claras, especialmente en lo que respecta a la provisión del código fuente de la librería y la capacidad del usuario para modificarla y reemplazarla. La LGPL encarna un equilibrio cuidadoso: promueve la libertad fundamental del software al tiempo que lo hace más accesible y competitivo en el panorama global del desarrollo, demostrando que la libertad y la interoperabilidad pueden coexistir para el beneficio de todos.
Si quieres conocer otros artículos parecidos a LGPL: Libertades y Compromisos de la Librería Libre puedes visitar la categoría Librerías.
