| 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, unless there's a specified exception in the GPL-licensed module). 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 annoncement 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. Some of the source files that deal with KRB4 have Original |
| BSD-style announce-clause licenses. You may not distribute binaries |
| with krb4-enabled libcurl that also link with GPL-licensed code! |
| |
| OpenSSL http://www.openssl.org/source/license.html |
| |
| Uses an Original BSD-style license with an announement 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 GnuTLS instead. |
| |
| GnuTLS http://www.gnutls.org/ |
| |
| Uses the LGPL[3] license. If this is a problem for you, consider using |
| OpenSSL instead. Also note that GnuTLS itself depends on and uses |
| other libs (libgcrypt and libgpg-error) and they too are LGPL- or |
| GPL-licensed. |
| |
| c-ares http://daniel.haxx.se/projects/c-ares/license.html |
| |
| 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.gzip.org/zlib/zlib_license.html |
| |
| Uses an MIT-style license that shouldn't collide with any other |
| library. |
| |
| krb4 |
| |
| While nothing in particular says that a Kerberos4 library must use any |
| particular license, the one I've tried and used successfully so far |
| (kth-krb4) is Original BSD-licensed with the announcement clause. Some |
| of the code in libcurl that is written to deal with Kerberos4 likewise |
| have such a license. |
| |
| GSSAPI |
| |
| While nothing in particular says that a GSS/Kerberos5 library must use |
| any particular license, the one I've used (Heimdal) is Original BSD- |
| licensed with the announcement clause. |
| |
| fbopenssl |
| |
| Unclear license. Based on its name, I assume that it uses the OpenSSL |
| license and thus shares the same issues as described for OpenSSL |
| above. |
| |
| libidn http://www.gnu.org/licenses/lgpl.html |
| |
| Uses the GNU Lesser General Public License. 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 |
| |
| 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. |
| |
| |
| [1] = GPL - GNU General Public License: http://www.gnu.org/licenses/gpl.html |
| [2] = http://www.fsf.org/licenses/gpl-faq.html#GPLIncompatibleLibs details on |
| how to write such an exception to the GPL |
| [3] = LGPL - GNU Lesser General Public License: |
| http://www.gnu.org/licenses/lgpl.html |