1 License Mixing with apps, libcurl and Third Party Libraries
2 ===========================================================
4 libcurl can be built to use a fair amount of various third party libraries,
5 libraries that are written and provided by other parties that are distributed
6 using their own licenses. Even libcurl itself contains code that may cause
7 problems to some. This document attempts to describe what licenses libcurl and
8 the other libraries use and what possible dilemmas linking and mixing them all
9 can lead to for end users.
11 I am not a lawyer and this is not legal advice!
13 One common dilemma is that GPL[1]-licensed code is not allowed to be linked
14 with code licensed under the Original BSD license (with the announcement
15 clause). You may still build your own copies that use them all, but
16 distributing them as binaries would be to violate the GPL license - unless you
17 accompany your license with an exception[2]. This particular problem was
18 addressed when the Modified BSD license was created, which does not have the
19 announcement clause that collides with GPL.
21 libcurl http://curl.haxx.se/docs/copyright.html
23 Uses an MIT (or Modified BSD)-style license that is as liberal as
26 OpenSSL http://www.openssl.org/source/license.html
28 (May be used for SSL/TLS support) Uses an Original BSD-style license
29 with an announcement clause that makes it "incompatible" with GPL. You
30 are not allowed to ship binaries that link with OpenSSL that includes
31 GPL code (unless that specific GPL code includes an exception for
32 OpenSSL - a habit that is growing more and more common). If OpenSSL's
33 licensing is a problem for you, consider using GnuTLS or yassl
36 GnuTLS http://www.gnutls.org/
38 (May be used for SSL/TLS support) Uses the LGPL[3] license. If this is
39 a problem for you, consider using OpenSSL instead. Also note that
40 GnuTLS itself depends on and uses other libs (libgcrypt and
41 libgpg-error) and they too are LGPL- or GPL-licensed.
43 yassl http://www.yassl.com/
45 (May be used for SSL/TLS support) Uses the GPL[1] license. If this is
46 a problem for you, consider using OpenSSL or GnuTLS instead.
48 NSS http://www.mozilla.org/projects/security/pki/nss/
50 (May be used for SSL/TLS support) Is covered by the MPL[4] license,
51 the GPL[1] license and the LGPL[3] license. You may choose to license
52 the code under MPL terms, GPL terms, or LGPL terms. These licenses
53 grant you different permissions and impose different obligations. You
54 should select the license that best meets your needs.
56 axTLS http://axtls.sourceforge.net/
58 (May be used for SSL/TLS support) Uses a Modified BSD-style license.
60 c-ares http://daniel.haxx.se/projects/c-ares/license.html
62 (Used for asynchronous name resolves) Uses an MIT license that is very
63 liberal and imposes no restrictions on any other library or part you
66 zlib http://www.gzip.org/zlib/zlib_license.html
68 (Used for compressed Transfer-Encoding support) Uses an MIT-style
69 license that shouldn't collide with any other library.
71 MIT Kerberos http://web.mit.edu/kerberos/www/dist/
73 (May be used for GSS support) MIT licensed, that shouldn't collide
76 Heimdal http://www.pdc.kth.se/heimdal/
78 (May be used for GSS support) Heimdal is Original BSD licensed with
79 the announcement clause.
81 GNU GSS http://www.gnu.org/software/gss/
83 (May be used for GSS support) GNU GSS is GPL licensed. Note that you
84 may not distribute binary curl packages that uses this if you build
85 curl to also link and use any Original BSD licensed libraries!
87 libidn http://josefsson.org/libidn/
89 (Used for IDNA support) Uses the GNU Lesser General Public
90 License [3]. LGPL is a variation of GPL with slightly less aggressive
91 "copyleft". This license requires more requirements to be met when
92 distributing binaries, see the license for details. Also note that if
93 you distribute a binary that includes this library, you must also
94 include the full LGPL license text. Please properly point out what
95 parts of the distributed package that the license addresses.
97 OpenLDAP http://www.openldap.org/software/release/license.html
99 (Used for LDAP support) Uses a Modified BSD-style license. Since
100 libcurl uses OpenLDAP as a shared library only, I have not heard of
101 anyone that ships OpenLDAP linked with libcurl in an app.
103 libssh2 http://www.libssh2.org/
105 (Used for scp and sftp support) libssh2 uses a Modified BSD-style
108 [1] = GPL - GNU General Public License: http://www.gnu.org/licenses/gpl.html
109 [2] = http://www.fsf.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
110 how to write such an exception to the GPL
111 [3] = LGPL - GNU Lesser General Public License:
112 http://www.gnu.org/licenses/lgpl.html
113 [4] = MPL - Mozilla Public License:
114 http://www.mozilla.org/MPL/