I am writing a small general purpose library, which i would like to use in my BSD/X11 licensed project. I want to include globalisation support in it, specifficaly, i would like to use Glib::ustring from glibmm, which is licensed under LGPL. Here comes the question: With regards to BSD/X11 being more permissive than LGPL, can i use this piece of code in my BSD/X11 licensed library?
IANAL, but...
As long as you follow the linking restrictions in the LGPL, you should be OK - basically, the user has to be able to modify the LGPL'd code. Since your code is BSD-licensed, and the BSD-license allows a binary without source (which would voilate the LGPL) you'd need to create a dynamic library licensed under the LGPL of all your LGPL'd code and use that.
IANAL, but I believe this is allowed. There's nothing in the BSD license that prevents you from mixing in code of other licenses, and the LGPL doesn't care what you link it against either. You will be subject to the following restrictions however:
1) For the BSD portion, if there is an attribution clause, you will still need to honor it and include the proper attribution in your documentation etc.
2) For the LGPL library, you are required to make the source of the library available to recipients of your project's binaries.
@Branan: My current understanding of LGPL's section 4 (IANAL):
- AFAIK, the onus of making the dynamic library is on the party distributing a binary-only version (or otherwise LGPL-incompatible version), not on the licensor (assuming the licensor doesn't distribute a binary-only/LGPL-incompatible version).
- Static LGPL library is fine too if the binary-only version is distributed with a bunch of object files (corresponding to the permissively-licensed code) that the user can then relink with their customised version of the LGPL library.
- In any case, the binary-only code must permit reverse engineering, to allow the LGPL library to be customised by the user and still be linkable to the object files.