Freigeben über


Lizenzmischen mit Apps, libcurl und Bibliotheken von Drittanbietern

libcurl kann so erstellt werden, dass eine angemessene Anzahl verschiedener Bibliotheken von Drittanbietern verwendet wird, Bibliotheken, die von anderen Parteien geschrieben und bereitgestellt werden, die mit ihren eigenen Lizenzen verteilt werden. Sogar libcurl selbst enthält Code, der bei einigen Probleme verursachen kann. In diesem Dokument wird versucht zu beschreiben, welche Lizenzen libcurl und die anderen Bibliotheken verwenden und zu welchen möglichen Dilemmas das Verknüpfen und Mischen dieser Lizenzen für Endbenutzer führen kann.

Ich bin kein Anwalt und das ist keine Rechtsberatung!

Ein häufiges Dilemma ist, dass GPL[1]-lizenzierter Code nicht mit Code verknüpft werden darf, der unter der ursprünglichen BSD-Lizenz (mit der Ankündigungsklausel) lizenziert ist. Sie können weiterhin eigene Kopien erstellen, die sie alle verwenden, aber die Verteilung als Binärdateien würde gegen die GPL-Lizenz verstoßen – es sei denn, Sie begleiten Ihre Lizenz mit einer Ausnahme[2]. Dieses spezielle Problem wurde behoben, als die geänderte BSD-Lizenz erstellt wurde, die nicht über die Ankündigungsklausel verfügt, die mit GPL kollidiert.

Libcurl

Verwendet eine MIT-Lizenz (oder eine modifizierte BSD-Lizenz), die so liberal wie möglich ist.

Openssl

(Kann für SSL/TLS-Unterstützung verwendet werden) Verwendet eine Lizenz im Original-BSD-Stil mit einer Ankündigungsklausel, die sie "inkompatibel" mit GPL macht. Sie dürfen keine Binärdateien versenden, die mit OpenSSL verknüpft sind, die GPL-Code enthält (es sei denn, dieser spezifische GPL-Code enthält eine Ausnahme für OpenSSL - eine Gewohnheit, die immer häufiger wird). Wenn die Lizenzierung von OpenSSL für Sie ein Problem darstellt, sollten Sie eine andere TLS-Bibliothek verwenden.

Gnutls

(Kann für SSL/TLS-Unterstützung verwendet werden) Verwendet die LGPL[3]-Lizenz. Wenn dies ein Problem für Sie ist, ziehen Sie die Verwendung einer anderen TLS-Bibliothek in Betracht. Beachten Sie auch, dass GnuTLS selbst von anderen Libs (libgcrypt und libgpg-error) abhängig ist und diese auch LGPL- oder GPL-lizenziert sind.

WolfSSL

(Kann für SSL/TLS-Unterstützung verwendet werden) Verwendet die GPL[1]-Lizenz oder eine proprietäre Lizenz. Wenn dies ein Problem für Sie ist, ziehen Sie die Verwendung einer anderen TLS-Bibliothek in Betracht.

NSS

(Kann für SSL/TLS-Unterstützung verwendet werden) Wird durch die MPL[4]-Lizenz, die GPL[1]-Lizenz und die LGPL[3]-Lizenz abgedeckt. Sie können den Code unter MPL-Bedingungen, GPL-Bedingungen oder LGPL-Bedingungen lizenzieren. Diese Lizenzen gewähren Ihnen unterschiedliche Berechtigungen und erzwingen unterschiedliche Verpflichtungen. Wählen Sie die Lizenz aus, die Ihren Anforderungen am besten entspricht.

axTLS

(Kann für SSL/TLS-Unterstützung verwendet werden) Verwendet eine geänderte Lizenz im BSD-Stil.

mbedTLS

(Kann für SSL/TLS-Unterstützung verwendet werden) Verwendet die GPL[1]-Lizenz oder eine proprietäre Lizenz. Wenn dies ein Problem für Sie ist, ziehen Sie die Verwendung einer anderen TLS-Bibliothek in Betracht.

BoringSSL

(Kann für SSL/TLS-Unterstützung verwendet werden) Als OpenSSL-Fork verfügt er über die gleiche Lizenz wie diese.

libressl

(Kann für SSL/TLS-Unterstützung verwendet werden) Als OpenSSL-Fork verfügt er über die gleiche Lizenz wie diese.

Zlib

(Wird für die Unterstützung komprimierter Transfer-Encoding verwendet) Verwendet eine LIZENZ im MIT-Stil, die nicht mit einer anderen Bibliothek kollidieren sollte.

MIT Kerberos

(Kann für GSS-Unterstützung verwendet werden) MIT lizenziert, das sollte nicht mit anderen Teilen kollidieren.

Heimdal

(Kann für GSS-Unterstützung verwendet werden) Heimdal ist original BSD mit der Ankündigungsklausel lizenziert.

GNU GSS

(Kann für GSS-Unterstützung verwendet werden) GNU GSS ist GPL lizenziert. Beachten Sie, dass Sie keine binären curl-Pakete verteilen dürfen, die dies verwenden, wenn Sie curl erstellen, um auch alle ursprünglichen BSD-lizenzierten Bibliotheken zu verknüpfen und zu verwenden!

Libidn

(Wird für IDNA-Unterstützung verwendet) Verwendet die GNU Lesser General Public License [3]. LGPL ist eine Variante von GPL mit etwas weniger aggressivem "Copyleft". Für diese Lizenz müssen beim Verteilen von Binärdateien weitere Anforderungen erfüllt werden. Weitere Informationen finden Sie in der Lizenz. Beachten Sie außerdem, dass Sie beim Verteilen einer Binärdatei, die diese Bibliothek enthält, auch den vollständigen LGPL-Lizenztext einschließen müssen. Weisen Sie ordnungsgemäß darauf hin, welche Teile des verteilten Pakets die Lizenz adressieren.

Openldap

(Wird für LDAP-Unterstützung verwendet) Verwendet eine geänderte Lizenz im BSD-Stil. Da libcurl OpenLDAP nur als freigegebene Bibliothek verwendet, habe ich von niemandem gehört, der OpenLDAP in einer App mit libcurl verknüpft bereitstellt.

libssh2

(Wird für scp- und sftp-Unterstützung verwendet) libssh2 verwendet eine Geänderte BSD-Lizenz.

[1] = GPL - GNU General Public License: https://www.gnu.org/licenses/gpl.html
[2] = https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs Details zum Schreiben einer Ausnahme in die GPL.
[3] = LGPL - GNU Lesser General Public License: https://www.gnu.org/licenses/lgpl.html
[4] = MPL - Mozilla Public License: https://www.mozilla.org/MPL/