         License Mixing with apps, libcurl and Third Party Libraries
         ===========================================================

libcurl can be built to use a fair amount of various third party libraries,
libraries that are written and provided by other parties that are distributed
using their own licenses. Even libcurl itself contains code that may cause
problems to some. This document attempts to describe what licenses libcurl and
the other libraries use and what possible dilemmas linking and mixing them all
can lead to for end users.

I am not a lawyer and this is not legal advice!

One common dilemma is that GPL[1]-licensed code is not allowed to be linked
with code licensed under the Original BSD license (with the announcement
clause). You may still build your own copies that use them all, but
distributing them as binaries would be to violate the GPL license - unless you
accompany your license with an exception[2]. This particular problem was
addressed when the Modified BSD license was created, which does not have the
announcement clause that collides with GPL.

libcurl http://curl.haxx.se/docs/copyright.html

        Uses an MIT (or Modified BSD)-style license that is as liberal as
        possible.

OpenSSL https://www.openssl.org/source/license.html

        (May be used for SSL/TLS support) Uses an Original BSD-style license
        with an announcement clause that makes it "incompatible" with GPL. You
        are not allowed to ship binaries that link with OpenSSL that includes
        GPL code (unless that specific GPL code includes an exception for
        OpenSSL - a habit that is growing more and more common). If OpenSSL's
        licensing is a problem for you, consider using another TLS library.

GnuTLS  http://www.gnutls.org/

        (May be used for SSL/TLS support) Uses the LGPL[3] license. If this is
        a problem for you, consider using another TLS library. Also note that
        GnuTLS itself depends on and uses other libs (libgcrypt and
        libgpg-error) and they too are LGPL- or GPL-licensed.

WolfSSL   https://www.wolfssl.com/

        (May be used for SSL/TLS support) Uses the GPL[1] license or a
        propietary license. If this is a problem for you, consider using
        another TLS library.

NSS     https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS

        (May be used for SSL/TLS support) Is covered by the MPL[4] license,
        the GPL[1] license and the LGPL[3] license. You may choose to license
        the code under MPL terms, GPL terms, or LGPL terms. These licenses
        grant you different permissions and impose different obligations. You
        should select the license that best meets your needs.

axTLS   http://axtls.sourceforge.net/

        (May be used for SSL/TLS support) Uses a Modified BSD-style license.

mbedTLS https://tls.mbed.org/

        (May be used for SSL/TLS support) Uses the GPL[1] license or a
        propietary license. If this is a problem for you, consider using
        another TLS library.

BoringSSL https://boringssl.googlesource.com/

        (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
        license as that.

libressl http://www.libressl.org/

        (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
        license as that.

c-ares  http://daniel.haxx.se/projects/c-ares/license.html

        (Used for asynchronous name resolves) Uses an MIT license that is very
        liberal and imposes no restrictions on any other library or part you
        may link with.

zlib    http://www.zlib.net/zlib_license.html

        (Used for compressed Transfer-Encoding support) Uses an MIT-style
        license that shouldn't collide with any other library.

MIT Kerberos http://web.mit.edu/kerberos/www/dist/

        (May be used for GSS support) MIT licensed, that shouldn't collide
        with any other parts.

Heimdal http://www.h5l.org

        (May be used for GSS support) Heimdal is Original BSD licensed with
        the announcement clause.

GNU GSS https://www.gnu.org/software/gss/

        (May be used for GSS support) GNU GSS is GPL licensed. Note that you
        may not distribute binary curl packages that uses this if you build
        curl to also link and use any Original BSD licensed libraries!

libidn  http://josefsson.org/libidn/

        (Used for IDNA support) Uses the GNU Lesser General Public
        License [3]. LGPL is a variation of GPL with slightly less aggressive
        "copyleft". This license requires more requirements to be met when
        distributing binaries, see the license for details. Also note that if
        you distribute a binary that includes this library, you must also
        include the full LGPL license text. Please properly point out what
        parts of the distributed package that the license addresses.

OpenLDAP http://www.openldap.org/software/release/license.html

        (Used for LDAP support) Uses a Modified BSD-style license. Since
        libcurl uses OpenLDAP as a shared library only, I have not heard of
        anyone that ships OpenLDAP linked with libcurl in an app.

libssh2 http://www.libssh2.org/

        (Used for scp and sftp support) libssh2 uses a Modified BSD-style
        license.

[1] = GPL - GNU General Public License: https://www.gnu.org/licenses/gpl.html
[2] = https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
      how to write such an exception to the 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/
