I have searched around but I don't seem to be able to get a clear answer on my questions that I understand. I want to use the Xuggler library in my application, which is licensed either GPL or LGPL depending on whether I compile it myself. I don't intend to edit the library

If I compile it myself and thus get a LGPL version of the library, can I use it in a commercial application without having to distribute the source code of my application? Furthermore, do I have to give my application the LGPL license as well? What other problems might using this library give me?


In simple terms, as I understand things (I'm not a lawyer, but the licenses aren't that hard to read):

LGPL - You can use and distribute the library with your application, with the stipulation that you have to mention the GPL and LGPL and the library in your notices, and that you have to make the LIBRARY source available to anyone that you sell or give the application to. This includes building the library into your program. Note that if you change the library, you'll need to make that modified source code available.

GPL - you pretty much can only use a GPL library in a GPL program. If you distribute a GPL program, you pretty much have to distribute the source (including any modification you made).

  • Wouldn't that logic make any application running on Linux to have to be GPL? I mean, at some point any application will use a GPL library if it runs on Linux, for example for simple things like writing to a file. Doesn't sound quite right what you specified here. – Patkos Csaba Sep 4 '12 at 18:42
  • @PatkosCsaba - no the linux system libs are LGPL, you only have to allow relinking with other LGPL libs. There are also specific exemptions for system calls that couldn't otheriwse be used – Martin Beckett Sep 4 '12 at 19:24
  • The GPL and LGPL are triggered by distribution. If you include Linux when you distribute your code, then the GPL applies. If you distribute your code without any GPL or LGPL code, you are free to use whatever license you like. Of course, it can be difficult to distribute code without its dependencies! But some things are common to all Linux distributions, and most Linux package managers know how to satisfy dependencies, making the client download and install them before adding your code. – GlenPeterson Sep 4 '12 at 19:25
  • 1
    One extra point - you have to allow relinking of your program with the LGPL libs. Either by using dynamic linking (dll/so) or if the platform can't do this - distribute your object files – Martin Beckett Sep 4 '12 at 19:26
  • Michael: You clearly have a great understanding of these licenses, but I found v2 of the licenses difficult to read and the v3 almost impenetrable. I have given presentations on LGPL and GPL v2 and seen others present, and each time, otherwise smart people pipe up with incorrect notions about these licenses. I think they are not so easy to read, but the effort is very worthwhile. – GlenPeterson Sep 4 '12 at 19:51


IANAL. Assuming LGPL 2. God help you with version 3.


You do not need to license your code that uses the library as GPL or LGPL, but you need to permit modification of the combined work (meaning your code and the library together) as well as reverse-engineering for debugging such modifications. You still have to honor the other aspects of the LGPL for the library which uses it (not for your code that uses the library).


Section 6 of the LGPL v. 2.0 says,

you may also compile or link a 'work that uses the Library' with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.

I believe that when they say, "modification of the work" they mean the combined "work that uses the library" which means you have to permit modification of the combined work as well as reverse-engineering for debugging such modifications.

Additional Thoughts

The company I work for specifically does not want to permit modification or reverse engineering of their proprietary code, so we do not distribute any LGPL code with our application. Neither will we distribute any GPL code unless it specifies the Classpath/Linking Exception.

The GPL 2 with the Classpath/Linking Exception is similar to the LGPL, except it does not impose those restrictions on a combined work. The last section of that Wikipedia article backs me up on this.

In my mind, the GPL 2 with the Classpath/Linking Exception has roughly the same intention as the Apache 2 license, but the Apache license is much clearer about it. I believe that the GPL 3 is worded to prevent the Classpath/Linking Exception.

  • Your company should probably be aware that this attitude isn't legal in for example the Eu. I'm perfectly free to reverse engineer anything I want "for the purpose of interoperation or study" – Martin Beckett Sep 4 '12 at 19:28
  • @Martin Beckett: Good point! Still, when you license the combined work, you have to protect people's right to reverse-engineer your code outside the EU. Granted, it's a small difference. I'll clean up my post to be clear we use no LGPL code, and GPL only with the Linking Exception. – GlenPeterson Sep 4 '12 at 19:37

Not the answer you're looking for? Browse other questions tagged or ask your own question.