Annotation of embedaddon/curl/docs/LICENSE-MIXING.md, revision 1.1.1.1

1.1       misho       1: License Mixing
                      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](https://www.gnu.org/licenses/gpl.html)
                     14: licensed code is not allowed to be linked with code licensed under the
                     15: [Original BSD license](https://spdx.org/licenses/BSD-4-Clause.html) (with the
                     16: announcement clause). You may still build your own copies that use them all,
                     17: but distributing them as binaries would be to violate the GPL license - unless
                     18: you accompany your license with an
                     19: [exception](https://www.gnu.org/licenses/gpl-faq.html#GPLIncompatibleLibs). This
                     20: particular problem was addressed when the [Modified BSD
                     21: license](https://opensource.org/licenses/BSD-3-Clause) was created, which does
                     22: not have the announcement clause that collides with GPL.
                     23: 
                     24: ## libcurl
                     25: 
                     26:  Uses an [MIT style license](https://curl.haxx.se/docs/copyright.html) that is
                     27:  very liberal.
                     28: 
                     29: ## OpenSSL
                     30: 
                     31:  (May be used for SSL/TLS support) Uses an Original BSD-style license with an
                     32:  announcement clause that makes it "incompatible" with GPL. You are not
                     33:  allowed to ship binaries that link with OpenSSL that includes GPL code
                     34:  (unless that specific GPL code includes an exception for OpenSSL - a habit
                     35:  that is growing more and more common). If OpenSSL's licensing is a problem
                     36:  for you, consider using another TLS library.
                     37: 
                     38: ## GnuTLS
                     39: 
                     40:  (May be used for SSL/TLS support) Uses the
                     41:  [LGPL](https://www.gnu.org/licenses/lgpl.html) license. If this is a problem
                     42:  for you, consider using another TLS library. Also note that GnuTLS itself
                     43:  depends on and uses other libs (libgcrypt and libgpg-error) and they too are
                     44:  LGPL- or GPL-licensed.
                     45: 
                     46: ## WolfSSL
                     47: 
                     48:  (May be used for SSL/TLS support) Uses the GPL license or a proprietary
                     49:  license. If this is a problem for you, consider using another TLS library.
                     50: 
                     51: ## NSS
                     52: 
                     53:  (May be used for SSL/TLS support) Is covered by the
                     54:  [MPL](https://www.mozilla.org/MPL/) license, the GPL license and the LGPL
                     55:  license. You may choose to license the code under MPL terms, GPL terms, or
                     56:  LGPL terms. These licenses grant you different permissions and impose
                     57:  different obligations. You should select the license that best meets your
                     58:  needs.
                     59: 
                     60: ## mbedTLS
                     61: 
                     62:  (May be used for SSL/TLS support) Uses the [Apache 2.0
                     63:  license](https://opensource.org/licenses/Apache-2.0) or the GPL license.
                     64:  You may choose to license the code under Apache 2.0 terms or GPL terms.
                     65:  These licenses grant you different permissions and impose different
                     66:  obligations. You should select the license that best meets your needs.
                     67: 
                     68: ## BoringSSL
                     69: 
                     70:  (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
                     71:  license as that.
                     72: 
                     73: ## libressl
                     74: 
                     75:  (May be used for SSL/TLS support) As an OpenSSL fork, it has the same
                     76:  license as that.
                     77: 
                     78: ## BearSSL
                     79: 
                     80:  (May be used for SSL/TLS support) Uses an MIT license that is very liberal
                     81:  and imposes no restrictions on any other library or part you may link with.
                     82: 
                     83: ## c-ares
                     84: 
                     85:  (Used for asynchronous name resolves) Uses an MIT license that is very
                     86:  liberal and imposes no restrictions on any other library or part you may link
                     87:  with.
                     88: 
                     89: ## zlib
                     90: 
                     91:  (Used for compressed Transfer-Encoding support) Uses an MIT-style license
                     92:  that shouldn't collide with any other library.
                     93: 
                     94: ## MIT Kerberos
                     95: 
                     96:  (May be used for GSS support) MIT licensed, that shouldn't collide with any
                     97:  other parts.
                     98: 
                     99: ## Heimdal
                    100: 
                    101:  (May be used for GSS support) Heimdal is Original BSD licensed with the
                    102:  announcement clause.
                    103: 
                    104: ## GNU GSS
                    105: 
                    106:  (May be used for GSS support) GNU GSS is GPL licensed. Note that you may not
                    107:  distribute binary curl packages that uses this if you build curl to also link
                    108:  and use any Original BSD licensed libraries!
                    109: 
                    110: ## libidn
                    111: 
                    112:  (Used for IDNA support) Uses the GNU Lesser General Public License [3]. LGPL
                    113:  is a variation of GPL with slightly less aggressive "copyleft". This license
                    114:  requires more requirements to be met when distributing binaries, see the
                    115:  license for details. Also note that if you distribute a binary that includes
                    116:  this library, you must also include the full LGPL license text. Please
                    117:  properly point out what parts of the distributed package that the license
                    118:  addresses.
                    119: 
                    120: ## OpenLDAP
                    121: 
                    122:  (Used for LDAP support) Uses a Modified BSD-style license. Since libcurl uses
                    123:  OpenLDAP as a shared library only, I have not heard of anyone that ships
                    124:  OpenLDAP linked with libcurl in an app.
                    125: 
                    126: ## libssh2
                    127: 
                    128:  (Used for scp and sftp support) libssh2 uses a Modified BSD-style license.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>