Combinación de licencias con aplicaciones, libcurl y bibliotecas de terceros
libcurl se puede compilar para usar una buena cantidad de bibliotecas de terceros, bibliotecas escritas y proporcionadas por otras partes que se distribuyen con sus propias licencias. Incluso libcurl en sí contiene código que puede causar problemas a algunos. Este documento intenta describir qué licencias usan libcurl y las demás bibliotecas, y qué posibles dilemas puede acarrear para los usuarios finales vincularlas y combinarlas todas. ¡No soy abogado y esto no es asesoramiento jurídico! Un dilema habitual es que el código con licencia GPL[1] no se puede vincular con código con licencia BSD original (con la cláusula de anuncio). Puede seguir compilando sus propias copias que las usen todas, pero distribuirlas como binarios supondría infringir la licencia GPL, a menos que acompañe su licencia con una excepción[2]. Este problema concreto se resolvió cuando se creó la licencia BSD modificada, que no tiene la cláusula de anuncio que entra en conflicto con la GPL. libcurl Usa una licencia de estilo MIT (o BSD modificada) que es lo más liberal posible. OpenSSL (Se puede usar para la compatibilidad con SSL/TLS) Usa una licencia de estilo BSD original con una cláusula de anuncio que la hace “incompatible” con la GPL. No se permite distribuir binarios vinculados con OpenSSL que incluyan código GPL (a menos que ese código GPL concreto incluya una excepción para OpenSSL, una práctica cada vez más común). Si la licencia de OpenSSL le supone un problema, considere la posibilidad de usar otra biblioteca TLS. GnuTLS (Se puede usar para la compatibilidad con SSL/TLS) Usa la licencia LGPL[3]. Si esto le supone un problema, considere la posibilidad de usar otra biblioteca TLS. Tenga en cuenta también que GnuTLS depende de otras bibliotecas y las usa (libgcrypt y libgpg-error), y que también tienen licencia LGPL o GPL. WolfSSL (Se puede usar para la compatibilidad con SSL/TLS) Usa la licencia GPL[1] o una licencia propietaria. Si esto le supone un problema, considere la posibilidad de usar otra biblioteca TLS. NSS (Se puede usar para la compatibilidad con SSL/TLS) Está cubierta por la licencia MPL[4], la licencia GPL[1] y la licencia LGPL[3]. Puede elegir licenciar el código según los términos de la MPL, la GPL o la LGPL. Estas licencias le conceden permisos distintos e imponen obligaciones distintas. Debe seleccionar la licencia que mejor se adapte a sus necesidades. axTLS (Se puede usar para la compatibilidad con SSL/TLS) Usa una licencia de estilo BSD modificada. mbedTLS (Se puede usar para la compatibilidad con SSL/TLS) Usa la licencia GPL[1] o una licencia propietaria. Si esto le supone un problema, considere la posibilidad de usar otra biblioteca TLS. BoringSSL (Se puede usar para la compatibilidad con SSL/TLS) Como bifurcación de OpenSSL, tiene la misma licencia que esta. libressl (Se puede usar para la compatibilidad con SSL/TLS) Como bifurcación de OpenSSL, tiene la misma licencia que esta. <!—c-ares (Se usa para resoluciones de nombres asincrónicas) Usa una licencia MIT que es muy liberal y no impone restricciones a ninguna otra biblioteca o parte con la que se pueda vincular.—> zlib (Se usa para la compatibilidad con Transfer-Encoding comprimido) Usa una licencia de estilo MIT que no debería entrar en conflicto con ninguna otra biblioteca. MIT Kerberos (Se puede usar para la compatibilidad con GSS) Tiene licencia MIT, que no debería entrar en conflicto con ninguna otra parte. Heimdal (Se puede usar para la compatibilidad con GSS) Heimdal tiene licencia BSD original con la cláusula de anuncio. GNU GSS (Se puede usar para la compatibilidad con GSS) GNU GSS tiene licencia GPL. Tenga en cuenta que no puede distribuir paquetes binarios de curl que la usen si compila curl para que también se vincule con bibliotecas con licencia BSD original y las use. libidn (Se usa para la compatibilidad con IDNA) Usa la Licencia Pública General Reducida de GNU [3]. La LGPL es una variante de la GPL con un “copyleft” algo menos agresivo. Esta licencia exige cumplir más requisitos al distribuir binarios; consulte la licencia para obtener más información. Tenga en cuenta también que, si distribuye un binario que incluye esta biblioteca, también debe incluir el texto completo de la licencia LGPL. Indique correctamente a qué partes del paquete distribuido se refiere la licencia. OpenLDAP (Se usa para la compatibilidad con LDAP) Usa una licencia de estilo BSD modificada. Dado que libcurl usa OpenLDAP solo como biblioteca compartida, no tengo constancia de nadie que distribuya OpenLDAP vinculado con libcurl en una aplicación. libssh2 (Se usa para la compatibilidad con scp y sftp) libssh2 usa una licencia de estilo BSD modificada. [1] = GPL - Licencia Pública General de GNU: https://www.gnu.org/licenses/gpl.html[2] = https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs detalles sobre cómo escribir una excepción a la GPL.
[3] = LGPL - Licencia Pública General Reducida de GNU: https://www.gnu.org/licenses/lgpl.html
[4] = MPL - Licencia Pública de Mozilla: https://www.mozilla.org/MPL/
