LICENSE-MIXING 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. License Mixing with apps, libcurl and Third Party Libraries
  2. ===========================================================
  3. libcurl can be built to use a fair amount of various third party libraries,
  4. libraries that are written and provided by other parties that are distributed
  5. using their own licenses. Even libcurl itself contains code that may cause
  6. problems to some. This document attempts to describe what licenses libcurl and
  7. the other libraries use and what possible dilemmas linking and mixing them all
  8. can lead to for end users.
  9. I am not a lawyer and this is not legal advice!
  10. One common dilemma is that GPL[1]-licensed code is not allowed to be linked
  11. with code licensed under the Original BSD license (with the announcement
  12. clause). You may still build your own copies that use them all, but
  13. distributing them as binaries would be to violate the GPL license - unless you
  14. accompany your license with an exception[2]. This particular problem was
  15. addressed when the Modified BSD license was created, which does not have the
  16. annoncement clause that collides with GPL.
  17. libcurl http://curl.haxx.se/docs/copyright.html
  18. Uses an MIT (or Modified BSD)-style license that is as liberal as
  19. possible. Some of the source files that deal with KRB4 have Original
  20. BSD-style announce-clause licenses. You may not distribute binaries
  21. with krb4-enabled libcurl that also link with GPL-licensed code!
  22. OpenSSL http://www.openssl.org/source/license.html
  23. (May be used for SSL/TLS support) Uses an Original BSD-style license
  24. with an announement clause that makes it "incompatible" with GPL. You
  25. are not allowed to ship binaries that link with OpenSSL that includes
  26. GPL code (unless that specific GPL code includes an exception for
  27. OpenSSL - a habit that is growing more and more common). If OpenSSL's
  28. licensing is a problem for you, consider using GnuTLS or yassl
  29. instead.
  30. GnuTLS http://www.gnutls.org/
  31. (May be used for SSL/TLS support) Uses the LGPL[3] license. If this is
  32. a problem for you, consider using OpenSSL instead. Also note that
  33. GnuTLS itself depends on and uses other libs (libgcrypt and
  34. libgpg-error) and they too are LGPL- or GPL-licensed.
  35. yassl http://www.yassl.com/
  36. (May be used for SSL/TLS support) Uses the GPL[1] license. If this is
  37. a problem for you, consider using OpenSSL or GnuTLS instead.
  38. c-ares http://daniel.haxx.se/projects/c-ares/license.html
  39. (Used for asynchronous name resolves) Uses an MIT license that is very
  40. liberal and imposes no restrictions on any other library or part you
  41. may link with.
  42. zlib http://www.gzip.org/zlib/zlib_license.html
  43. (Used for compressed Transfer-Encoding support) Uses an MIT-style
  44. license that shouldn't collide with any other library.
  45. krb4
  46. While nothing in particular says that a Kerberos4 library must use any
  47. particular license, the one I've tried and used successfully so far
  48. (kth-krb4) is partly Original BSD-licensed with the announcement
  49. clause. Some of the code in libcurl that is written to deal with
  50. Kerberos4 is Modified BSD-licensed.
  51. MIT Kerberos http://web.mit.edu/kerberos/www/dist/
  52. (May be used for GSS support) MIT licensed, that shouldn't collide
  53. with any other parts.
  54. Heimdal http://www.pdc.kth.se/heimdal/
  55. (May be used for GSS support) Heimdal is Original BSD licensed with
  56. the announcement clause.
  57. GNU GSS http://www.gnu.org/software/gss/
  58. (May be used for GSS support) GNU GSS is GPL licensed. Note that you
  59. may not distribute binary curl packages that uses this if you build
  60. curl to also link and use any Original BSD licensed libraries!
  61. fbopenssl
  62. (Used for SPNEGO support) Unclear license. Based on its name, I assume
  63. that it uses the OpenSSL license and thus shares the same issues as
  64. described for OpenSSL above.
  65. libidn http://www.gnu.org/licenses/lgpl.html
  66. (Used for IDNA support) Uses the GNU Lesser General Public
  67. License. LGPL is a variation of GPL with slightly less aggressive
  68. "copyleft". This license requires more requirements to be met when
  69. distributing binaries, see the license for details. Also note that if
  70. you distribute a binary that includes this library, you must also
  71. include the full LGPL license text. Please properly point out what
  72. parts of the distributed package that the license addresses.
  73. OpenLDAP http://www.openldap.org/software/release/license.html
  74. (Used for LDAP support) Uses a Modified BSD-style license. Since
  75. libcurl uses OpenLDAP as a shared library only, I have not heard of
  76. anyone that ships OpenLDAP linked with libcurl in an app.
  77. [1] = GPL - GNU General Public License: http://www.gnu.org/licenses/gpl.html
  78. [2] = http://www.fsf.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on
  79. how to write such an exception to the GPL
  80. [3] = LGPL - GNU Lesser General Public License:
  81. http://www.gnu.org/licenses/lgpl.html