From: Ben Finney ben@benfinney.id.au
I have a small (big?) question about mixing licenses within a project. We'd like to distribute the project as LGPL or, in its defect, as GPL.
What are your goals for licensing the project? You're asking for advice to choose between two licenses, but haven't told us why you already prefer one or the other.
We would like to use LGPL if we can (for our API), but as we're building the PD External with a GPL library we might not be able to do that.
By PD do you mean "in the public domain", or something else?
Ah, excuse me... I meant PD as in "Pure Data", a modular audio program ( http://www-crca.ucsd.edu/~msp/software.html ). It's 'plugins' are called 'externals'.
We want to release a C++ API and, separately, the PD external.
Who is the copyright holder for the C++ API? Is it currently licensed to you?
We created the API ourselves however using other libraries (see below).
The libraries we're using (for the API) are the following: LibcURL http://curl.haxx.se/ (MIT) TinyXML http://sourceforge.net/projects/tinyxml (ZLIB) LibSnd - http://www.mega-nerd.com/libsndfile/ (LGPL) As said before, the PD external uses flext (flext - http://grrrr.org/ext/flext/, GPL) and the above-mentioned API.
The MIT and ZLIB licenses are compatible; they essentially demand the same terms. You can distribute a combination of these works so long as you satisfy the terms of both licenses.
A work consisting of work under MIT, ZLIB and LGPL can be distributed only by satisfying all license terms; the only way to do this is license the whole work under the LGPL or GPL (and satisfy the terms of all the constituent licenses).
Yes, we know we either have to release as GPL or LGPL, that's what we want, but let me rephrase the question:
Our API builds on LibcURL (MIT), TinyXML (zLIB) and LibSnd (LGPL) => can we release our API as LGPL?
Our 'pure data plugin' uses above + uses Flext (GPL), thus it can only be released under the GPL, is that right?
Can we release the API as LGPL?
You haven't said what license you currently have for the API. If you are the sole copyright holder, you can grant any license you like (or none, or several). If you have received it under license, you need to satisfy the license terms.
We are the copyright holders. But our API uses other libraries, hence this mail.
I think the confusion arose from my usage of the abbreviation PD for Pure Data - apologies for this...
:::sam:::
On 05-Jul-2005, Sam wrote:
Ben Finney ben@benfinney.id.au
What are your goals for licensing the project? You're asking for advice to choose between two licenses, but haven't told us why you already prefer one or the other.
We would like to use LGPL if we can (for our API), but as we're building the PD External with a GPL library we might not be able to do that.
That doesn't answer the question. Why do you prefer the LGPL over the GPL?
Our API builds on LibcURL (MIT), TinyXML (zLIB) and LibSnd (LGPL) => can we release our API as LGPL?
If your work is a derivative work of those other libraries, you must comply with their copyright licenses. The way you describe your work sounds like it's a derivative; therefore, only LGPL or GPL will suffice for redistributing the work.
Our 'pure data plugin' uses above + uses Flext (GPL), thus it can only be released under the GPL, is that right?
As a derivative work of a GPL work, it can only be redistributed under the same terms, i.e. GPL.
We are the copyright holders. But our API uses other libraries, hence this mail.
It all comes down to whether your work is a "derivative work" of some else's, e.g. the Flext code. If so, you're not the sole copyright holders in the derivative work and must comply with the license under which you received that code.
Writing a program which links to a library is generally held to be making a derivative work of that library, thus the combined program must satisfy all license terms when you perform an act covered by copyright.
In short: though you've written the program, you've based it on someone else's work (the library), thus it's a derivative work, thus their license terms apply to your distribution.
On Wed, 6 Jul 2005 10:03:02 +1000 Ben Finney ben@benfinney.id.au wrote:
... It all comes down to whether your work is a "derivative work" of some else's, e.g. the Flext code. If so, you're not the sole copyright holders in the derivative work and must comply with the license under which you received that code.
Writing a program which links to a library is generally held to be making a derivative work of that library, thus the combined program must satisfy all license terms when you perform an act covered by copyright.
In short: though you've written the program, you've based it on someone else's work (the library), thus it's a derivative work, thus their license terms apply to your distribution.
That's kind of a narrow interpretation of derivative work. Derivative work in the copyright sense is usually interpreted a lot more narrow. E.g. a wrapper around a library is a derivative work (since it adds nothing), a program which uses among others a library to reach its intended goal is not always a derivative work. I'd look at this on a case by case basis and not use the interpretation used in the GPL faq, which is IMHO faulty. I'm just contributing this to urge the OP to talk to a lawyer, and perhaps to the copyright holders of the GPL'd library since in court it can sometimes matter what the intent of the copyright holder is with respect to the licensing.
greets, Wim