I'm creating software which includes (PHP library for generating PDF documents on-the-fly) to export invoices which falls under GNU Lesser General Public License, the open source product is called tcpdf.

What does this mean for me? I plan on charging for my software. This software makes up a very small part of our entire software function. If I utilize this in my software do I have to release my full source code of my project?

  • 6
    I'll see if we have a canonical question about LGPL requirements, but in short: if you use LGPL'd code as a library that is logically separable from your larger application then your source-disclosure requirements only apply to the library itself (and any changes you make to the library itself), not to your whole application. That is the primary difference between the GPL and the LGPL.
    – apsillers
    Nov 18, 2020 at 22:37
  • Yep. The purpose of LGPL is actually that usage.
    – Peter
    Nov 19, 2020 at 20:49

1 Answer 1


It depends on your use of the library. LGPL was planned mainly for libraries compiled to machine code. LGPL requires you to publish the full code of a library (library is usually in another file like .dll, .so), but not your software. It is required to publish your software under LGPL or GPL only if you copy parts of the library into your code base. The LGPL does require that it is allowed and possible for an end-user (assuming they have enough technical knowledge) to rebuild the application with a different, binary compatible, version of the LGPL library. If you don't use the dynamic linking facilities of your OS, you may have to distribute source and/or object files corresponding to your code to facilitate that requirement.

But LGPL allows you to share your software as SaaS, because you don't distribute it (AGPL "repairs" this "legal loophole"). So, if your software is SaaS, you are probably safe.

If your software is distributed to users, and you only use library APIs from code, but require users to have libraries already installed, you are probably safe too.

If you modify a library and still link it dynamically, you must publish the library source code under the LGPL or GPL.

If you use parts of library code in your software, you must distribute your software under the LGPL or GPL.

I know the question is old, and you probably found the solution, but maybe this answer will help other people.

This is not legal advice

  • 1
    The LGPL does not actually differentiate between dynamic and static linking. If you link to an LGPL library in any way, you must provide a mechanism to replace the LGPL library. That mechanism can be dynamic linking, but you can also satisfy it by providing object files of your code. In both cases, you can use a closed-source license for your code. Jun 29 at 12:44
  • Yes it's true. Actually my mistake. However, you still need to ensure that the library can be modified, which is difficult in some cases of static linking. Could you change my answer to be more correct?
    – Maniues
    Jun 29 at 12:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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