Git init
[external/curl.git] / docs / LICENSE-MIXING
1          License Mixing with apps, libcurl and Third Party Libraries
2          ===========================================================
3
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.
10
11 I am not a lawyer and this is not legal advice!
12
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.
20
21 libcurl http://curl.haxx.se/docs/copyright.html
22
23         Uses an MIT (or Modified BSD)-style license that is as liberal as
24         possible.  Some of the source files that deal with KRB4 have Original
25         BSD-style announce-clause licenses. You may not distribute binaries
26         with krb4-enabled libcurl that also link with GPL-licensed code!
27
28 OpenSSL http://www.openssl.org/source/license.html
29
30         (May be used for SSL/TLS support) Uses an Original BSD-style license
31         with an announcement clause that makes it "incompatible" with GPL. You
32         are not allowed to ship binaries that link with OpenSSL that includes
33         GPL code (unless that specific GPL code includes an exception for
34         OpenSSL - a habit that is growing more and more common). If OpenSSL's
35         licensing is a problem for you, consider using GnuTLS or yassl
36         instead.
37
38 GnuTLS  http://www.gnutls.org/
39
40         (May be used for SSL/TLS support) Uses the LGPL[3] license. If this is
41         a problem for you, consider using OpenSSL instead. Also note that
42         GnuTLS itself depends on and uses other libs (libgcrypt and
43         libgpg-error) and they too are LGPL- or GPL-licensed.
44
45 yassl   http://www.yassl.com/
46
47         (May be used for SSL/TLS support) Uses the GPL[1] license. If this is
48         a problem for you, consider using OpenSSL or GnuTLS instead.
49
50 NSS     http://www.mozilla.org/projects/security/pki/nss/
51
52         (May be used for SSL/TLS support) Is covered by the MPL[4] license,
53         the GPL[1] license and the LGPL[3] license. You may choose to license
54         the code under MPL terms, GPL terms, or LGPL terms. These licenses
55         grant you different permissions and impose different obligations. You
56         should select the license that best meets your needs.
57
58 c-ares  http://daniel.haxx.se/projects/c-ares/license.html
59
60         (Used for asynchronous name resolves) Uses an MIT license that is very
61         liberal and imposes no restrictions on any other library or part you
62         may link with.
63
64 zlib    http://www.gzip.org/zlib/zlib_license.html
65
66         (Used for compressed Transfer-Encoding support) Uses an MIT-style
67         license that shouldn't collide with any other library.
68
69 krb4
70
71         While nothing in particular says that a Kerberos4 library must use any
72         particular license, the one I've tried and used successfully so far
73         (kth-krb4) is partly Original BSD-licensed with the announcement
74         clause. Some of the code in libcurl that is written to deal with
75         Kerberos4 is Modified BSD-licensed.
76
77 MIT Kerberos http://web.mit.edu/kerberos/www/dist/
78
79         (May be used for GSS support) MIT licensed, that shouldn't collide
80         with any other parts.
81
82 Heimdal http://www.pdc.kth.se/heimdal/
83
84         (May be used for GSS support) Heimdal is Original BSD licensed with
85         the announcement clause.
86
87 GNU GSS http://www.gnu.org/software/gss/
88
89         (May be used for GSS support) GNU GSS is GPL licensed. Note that you
90         may not distribute binary curl packages that uses this if you build
91         curl to also link and use any Original BSD licensed libraries!
92
93 fbopenssl
94
95         (Used for SPNEGO support) Unclear license. Based on its name, I assume
96         that it uses the OpenSSL license and thus shares the same issues as
97         described for OpenSSL above.
98
99 libidn  http://josefsson.org/libidn/
100
101         (Used for IDNA support) Uses the GNU Lesser General Public
102         License [3]. LGPL is a variation of GPL with slightly less aggressive
103         "copyleft". This license requires more requirements to be met when
104         distributing binaries, see the license for details. Also note that if
105         you distribute a binary that includes this library, you must also
106         include the full LGPL license text. Please properly point out what
107         parts of the distributed package that the license addresses.
108
109 OpenLDAP http://www.openldap.org/software/release/license.html
110
111         (Used for LDAP support) Uses a Modified BSD-style license. Since
112         libcurl uses OpenLDAP as a shared library only, I have not heard of
113         anyone that ships OpenLDAP linked with libcurl in an app.
114
115 libssh2 http://www.libssh2.org/
116
117         (Used for scp and sftp support) libssh2 uses a Modified BSD-style
118         license.
119
120 [1] = GPL - GNU General Public License: http://www.gnu.org/licenses/gpl.html
121 [2] = http://www.fsf.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
122       how to write such an exception to the GPL
123 [3] = LGPL - GNU Lesser General Public License:
124       http://www.gnu.org/licenses/lgpl.html
125 [4] = MPL - Mozilla Public License:
126       http://www.mozilla.org/MPL/