62

I have read this questions and answers, but I still don't understand what exactly do I need to do if I dynamically link with a library that uses a LGPL license (the SDL library in my case).

If I understand LGPL text correctly, I need to somehow provide the source for the library. Is this enough? If not, what else needs to be done?

BЈовић
  • 13,981
  • 8
  • 61
  • 81

3 Answers3

62

LGPL's basic requirement is to separate the LGPL-licensed library and your own product well enough. That should allow users to supply their own version of the library instead of the one you've shipped with your software (with the bugs fixed, for instance). To accomplish this, you have two options:

  • use the LGPL code as a shared library (so the users would just copy their binary of the library over the one you ship), or
  • supply the source code of the whole project (so the users can copy their source of the library and recompile everything).

Note, however, that mere separation is not enough, though required. You should provide your users a documented way to replace a library with their version (i.e., how to upload firmware, or to recompile a Python wrapper for an LGPL C++ library).

The second notable clause is attribution requirement. This should help to promote the name of the original developer of the library, and state that what is cool software might have been developed by someone else :). In the relevant section of "About" window or a README file (if your license is Apache, this would be NOTICE file), you should list the name of the LGPL work you used.

Note that I am not a lawyer, and this is not a legal advice. Note that I am also not a plumber, and this is not a sanitary advice.

P Shved
  • 7,427
  • 35
  • 50
15

If you are statically linking the LGPL library then you need to provide the source of the library and either the source or object code of your application.

If you are dynamically linking the LGPL library then you can either distribute you application alone, without the library and tell people where to download it from and how to include it, to use it. Or you can include a copy of the library binaries and its source with your application.

This explains it pretty well: http://answers.google.com/answers/threadview/id/439136.html (which I took from an answer in the question linked in the OP)

IANAS

Matt Ellen
  • 3,368
  • 4
  • 30
  • 37
  • 3
    ^This. The key is this: consumer of product gets an application with an LGPL'd library. Can they make an improvement to the LGPL'd part and use the new improved version with the original product? If yes, then you've complied with the intended purpose of the LGPL. LGPLv3 makes it explicit that even if the product is embedded firmware, you *still must make it possible for the end-user to replace the LGPL'd part*. That means being able to recompile the full firmware with a new version of the library and *load it onto the device*. (My understanding, IANAL, this is not legal advice.) – Scott Whitlock Jun 22 '11 at 14:04
  • @Scott: I believe the embedded/firmware portion applies only if it is possible to change the firmware on the device. – David Thornley Jun 22 '11 at 14:23
  • What does the "S" in "IANAS" mean? – Joe Z. Jan 05 '13 at 15:19
  • 1
    @JoeZeng Solicitor – Matt Ellen Jan 05 '13 at 16:01
1

IANAL, but my understanding is that the point of the LGPL is that it doesn't "infect" the code depending on it like the GPL or AGPL. So you can have LGPL code as a dependency, and you don't have to do anything.

That being said, if you alter/modify/distribute LGPL code with your application, you need to make that code publicly available.

Jason Lewis
  • 2,113
  • 13
  • 18
  • Wasn't there an agreement / understanding that "making the source publicly available" could be satisfied by including a URL that linked to the original source/repo? (Assuming you used an unmodified version for your product, of course.) I was a little surprised when I heard this, so it could in fact be dead wrong :). – TMN Jun 22 '11 at 16:49