Combinaison de licences entre les applications, libcurl et les bibliothèques tierces
libcurl peut être généré pour utiliser un nombre assez important de bibliothèques tierces, c’est-à-dire des bibliothèques écrites et fournies par d’autres parties et distribuées sous leurs propres licences. Même libcurl contient du code susceptible de poser problème à certains. Ce document tente de décrire les licences utilisées par libcurl et les autres bibliothèques, ainsi que les dilemmes que leur liaison et leur combinaison peuvent entraîner pour les utilisateurs finaux. Je ne suis pas avocat et ceci ne constitue pas un avis juridique ! Un dilemme courant est que le code sous licence GPL[1] ne peut pas être lié à du code sous licence BSD d’origine (avec la clause de publicité). Vous pouvez toujours générer vos propres copies qui les utilisent tous, mais les distribuer sous forme de binaires constituerait une violation de la licence GPL, à moins d’accompagner votre licence d’une exception[2]. Ce problème particulier a été résolu lors de la création de la licence BSD modifiée, qui ne comporte pas la clause de publicité incompatible avec la GPL. libcurl Utilise une licence de type MIT (ou BSD modifiée) aussi libérale que possible. OpenSSL (Peut être utilisé pour la prise en charge de SSL/TLS) Utilise une licence de type BSD d’origine avec une clause de publicité qui la rend “incompatible” avec la GPL. Vous n’êtes pas autorisé à distribuer des binaires liés à OpenSSL qui incluent du code GPL (sauf si ce code GPL spécifique comporte une exception pour OpenSSL, une pratique de plus en plus courante). Si la licence d’OpenSSL vous pose problème, envisagez d’utiliser une autre bibliothèque TLS. GnuTLS (Peut être utilisé pour la prise en charge de SSL/TLS) Utilise la licence LGPL[3]. Si cela vous pose problème, envisagez d’utiliser une autre bibliothèque TLS. Notez également que GnuTLS dépend lui-même d’autres bibliothèques (libgcrypt et libgpg-error) qui sont également sous licence LGPL ou GPL. WolfSSL (Peut être utilisé pour la prise en charge de SSL/TLS) Utilise la licence GPL[1] ou une licence propriétaire. Si cela vous pose problème, envisagez d’utiliser une autre bibliothèque TLS. NSS (Peut être utilisé pour la prise en charge de SSL/TLS) Est couvert par la licence MPL[4], la licence GPL[1] et la licence LGPL[3]. Vous pouvez choisir de placer le code sous les conditions de la MPL, de la GPL ou de la LGPL. Ces licences vous accordent des autorisations différentes et vous imposent des obligations différentes. Vous devez sélectionner la licence qui répond le mieux à vos besoins. axTLS (Peut être utilisé pour la prise en charge de SSL/TLS) Utilise une licence de type BSD modifiée. mbedTLS (Peut être utilisé pour la prise en charge de SSL/TLS) Utilise la licence GPL[1] ou une licence propriétaire. Si cela vous pose problème, envisagez d’utiliser une autre bibliothèque TLS. BoringSSL (Peut être utilisé pour la prise en charge de SSL/TLS) En tant que fork d’OpenSSL, il utilise la même licence que celui-ci. libressl (Peut être utilisé pour la prise en charge de SSL/TLS) En tant que fork d’OpenSSL, il utilise la même licence que celui-ci. <!—c-ares (Utilisé pour la résolution de noms asynchrone) Utilise une licence MIT très libérale qui n’impose aucune restriction aux autres bibliothèques ou composants avec lesquels vous pouvez le lier.—> zlib (Utilisé pour la prise en charge de Transfer-Encoding compressé) Utilise une licence de type MIT qui ne devrait entrer en conflit avec aucune autre bibliothèque. MIT Kerberos (Peut être utilisé pour la prise en charge de GSS) Sous licence MIT, qui ne devrait entrer en conflit avec aucun autre composant. Heimdal (Peut être utilisé pour la prise en charge de GSS) Heimdal est sous licence BSD d’origine avec la clause de publicité. GNU GSS (Peut être utilisé pour la prise en charge de GSS) GNU GSS est sous licence GPL. Notez que vous ne pouvez pas distribuer de packages curl binaires qui l’utilisent si vous générez curl pour qu’il soit également lié à des bibliothèques sous licence BSD d’origine et qu’il les utilise ! libidn (Utilisé pour la prise en charge d’IDNA) Utilise la GNU Lesser General Public License [3]. La LGPL est une variante de la GPL avec un “copyleft” légèrement moins contraignant. Cette licence impose davantage d’exigences lors de la distribution de binaires ; consultez la licence pour plus de détails. Notez également que si vous distribuez un binaire qui inclut cette bibliothèque, vous devez également inclure le texte complet de la licence LGPL. Veuillez indiquer clairement les parties du package distribué auxquelles la licence s’applique. OpenLDAP (Utilisé pour la prise en charge de LDAP) Utilise une licence de type BSD modifiée. Comme libcurl utilise OpenLDAP uniquement en tant que bibliothèque partagée, je n’ai jamais entendu parler de quelqu’un qui distribue OpenLDAP lié à libcurl dans une application. libssh2 (Utilisé pour la prise en charge de scp et sftp) libssh2 utilise une licence de type BSD modifiée. [1] = GPL - GNU General Public License : https://www.gnu.org/licenses/gpl.html[2] = https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs : informations détaillées sur la rédaction d’une exception à la 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/
