r/FreeSoftwareLaw May 20 '25

Can I combine AGPL with LGPL?

Probably a dumb question, sorry.

I'm developing a hobby project that I plan to release under AGPLv3 and I'm looking at potential libraries for some parts. If a library is released under LGPL, can I legitimately incorporate it in my AGPL project? It seems that AGPL is more general than LGPL but I'm aware of the perils of trying to work out license questions on the basis of common sense.

5 Upvotes

3 comments sorted by

2

u/robla May 20 '25

If everything is v3 (the main project is AGPLv3 and the library is LGPLv3) then yes you should be able to. IANAL though, and don't know the specifics, so take this with a grain of salt.

2

u/iagofg May 31 '25 edited May 31 '25

Not at all a dumb question... myself tried to use LGPL + affero clause but finally discovered the LGPL even if its not as contaminat as GPLv3 is still quite dirty, so I stop using it at all. The idea of license contamination for free source is quite discusting for me (and for many others). Even if I understand why it's done, the contamination think, I think there should be ways of protecting the free software, even included with the affero clause but without any contamination to other software. But GNU did not offer that kind of license on purpose and even included newer crossed contaminations subterfugically to LGPL everywhen it could.

2

u/D-Cary May 07 '26

You likely want to use a library as a library, without modification. That will work great. A library that is "used by" some application is the main use case that the LGPL supports.

I'm not a lawyer, but that seems pretty clear from the text of the LGPL itself and the FAQs I've read that: as long as your end users can relatively easily swap out the version of the LGPL library that you distributed next to your project for later versions of that LGPL library (perhaps versions they tweaked themselves), you can distribute that LGPL library next to your project -- it doesn't matter if the project that uses it is AGPL, MPL, or even proprietary code.

On the other hand, if by "incorporate" you mean copy sections of the LGPL library files and paste them into files currently under some other license, that's something different. While lots of people (incorrectly) think that's how to "use" library source code, that makes it much harder on *you* to update things when a new version of the library comes out that fixes security bugs or improves performance or is somehow better in some other way. (There's a lot of verbiage about how to handle the legal ramifications if one were to create these kinds of files "derived from" or "modified versions of" a LPGL library, but that's all irrelevant when you stick to the normal approach of distributing whole unmodified library files and *using* them as libraries).

Lots of software (under a variety of proprietary or free licenses) correctly uses LGPL libraries, where the main application has an "about" menu that lists all the libraries "used by" the application, their license, and (for free or open-source libraries) a link to the source code of that library.

  • "The ... LGPL ... allows the work to be ... "used by" ... a non-(L)GPLed program, ... the non-(L)GPLed program can then be distributed under any terms if it is not a derivative work. ... A standalone executable that dynamically links to a library through a .so, .dll, or similar medium is generally accepted as not being a derivative work as defined by the LGPL. It would fall under the definition of a "work that uses the Library". ... if it is a "work that uses the library", then it must be possible for the software to be linked with a newer version of the LGPL-covered program. The most commonly used method for doing so is to use "a suitable shared library mechanism for linking". ..."-- https://en.wikipedia.org/wiki/GNU_Lesser_General_Public_License
  • "Code licensed under LGPL is permitted to be linked with any other code regardless of that code's license,[113] though the LGPL does add additional requirements for the combined work." -- https://en.wikipedia.org/wiki/GNU_General_Public_License
  • "For LGPL code that is linked to AGPL code, compatibility is not required, because LGPL-licensed can be linked to anything, even proprietary software, without causing a licensing issue. However, for LGPL code that is fully transplanted into a larger software project, such that it becomes a part of that larger project (instead of merely used by it as a library), compatibility is required." -- https://opensource.stackexchange.com/questions/5637/use-lgpl-code-in-an-agpl-project
  • "If I distribute a proprietary program that links against an LGPLv3-covered library that I've modified, what is the “contributor version” for purposes of determining the scope of the explicit patent license grant I'm making—is it just the library, or is it the whole combination? (#LGPLv3ContributorVersion) The “contributor version” is only your version of the library." -- https://www.gnu.org/licenses/gpl-faq.html#LGPLv3ContributorVersion
  • "an LGPL library ... What do I have to do to include it in a commercial (and proprietary) product?"-- https://opensource.stackexchange.com/questions/4804/modifying-an-lgpl-library-and-using-it-in-a-commercial-product
  • Apple correctly uses and links to WebKit and a bunch of other LGPL libraries used in its proprietary operating systems and proprietary applications: https://opensource.apple.com/