3

I am making use of a library licensed under LGPLv2 in a proprietarily licensed closed-source project. Specifically, I am dynamically linking my commercial C++ program to a C++ library that is itself distributed under LGPLv2.

Now as much as I understood, the dynamic linkage makes my software a "work that uses the library" and not a derivative work and thus frees me from having to distribute either the source or object code of my own software.

What isn't entirely clear to me is, if I have to include attribution to the library (in form of a copyright notice) and, more importantly, a copy of its license as part of my software distribution.

The LGPLv2 license seems to list these requirements under section 6:

You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License.

where it also lists the whole deal about offering source or object code of my own stuff. But being merely a "work that uses the library" through dynamic linking would seem to make section 6 not apply to my software, thus freeing me of any need for attribution and delivering a copy of the license. But being not too well-versed in the intricacies of software lawyering, I want to make sure I didn't miss or missinterpret anything there.

(It's not like I have any problem with acknowledging use of the library at all. But anything that doesn't have me include a ton of third party license files into my software distribution is welcome. I also know (or think to know) that I will also have to make the entire source code of the LPGL-licensed library available through an additional venue, which then would of course include the entire license information anyway.)

1 Answer 1

2

Whether section 6 applies does not depend on how you link, but on how much of the library is included into your software's binaries. The threshold is that no macro or function in the header may have more than 10 lines.

The LGPLv2 discusses multiple cases of a “work that uses the library” (WuL), which is defined as being “designed to work with the Library by being compiled or linked with it.”

Section 5 distinguishes between the WuL in isolation, and the result of linking them (which includes the library). The WuL is not derivative of the library, whereas the result of linking may be.

Section 5 allows any kind of linking without further conditions if the linked object code only contains minor parts of the software. Applied to C++, this allows any kind of header files as long as all macros and inline functions are less than 10 lines in length.

Note that even dynamic linking has a compile-time component and may copy part of the library into your software's object code, specifically any definitions in a header.

Beyond that 10 line threshold, the license defines this as a work that includes portions of the library, and you must meet the conditions in section 6.

You have found the correct paragraph that applies to any software that includes portions of the library. Section 6 then requires:

  • prominent notice that the library is used in the software
  • prominent notice that the library and use of this library are covered by the LGPL
  • a copy of the license
  • if your software shows any copyright notices at run time, you must show the library's copyright notices as well. The library's copyright notice must direct users to a copy of the license.

Section 6 then has a further requirement to make the source code of the library available. In case of dynamic linking, 6(b) applies which frees you from further conditions.

In any case of dynamic linking (whether under section 5 and/or 6) you still have to copy the library. The conditions for this are given in section 4, which just includes the usual GPL stuff like providing the corresponding source of the library. But such requirements are separate from possible attribution requirements within your software.


Note that all open source licenses that I know of have an attribution component. A few licenses waive this where the covered software is only used as object code, for example:

  • LGPLv2, LGPLv3 (under the 10 line threshold, as discussed above)
  • Boost license (explicit exclusion for object code)
  • arguably, the ISC license (the license must appear in all copies, but doesn't have to be human-readable)

Regardless of the specific requirements, attribution of included third party software is a best practice, and does not have to be overwhelming. Web browsers like Chrome or Firefox are a fairly good example of managing a large number of open source attributions.

8
  • Thank you for your elaborations. I'm aware of the 10-lines of inlining deal and the requirements of section 6. So when you say the attribution is waived below this threshold (i.e. when section 6 does not apply), does this mean I do not have to include the license of the library in my software distribution and adhere to a strict copyright notice in that case? I'm sorry if I seem to be reasking this, but I'm trying to get something more direct out of all these general elaborations the license text already throws at me. Jun 1, 2019 at 10:55
  • Also, I'm totally fine with attribution and would probably do this anyway, but I'd prefer it on my own terms rather than a phrasing that can bite me in my legal butt for accidentally choosing the wrong phrasing or not denoting the license file clearly enough. Jun 1, 2019 at 10:56
  • @ChristianRau I can't tell you what your precise requirements are because I don't know whether you are under or over the threshold above which section 6 applies. Generally, you'd be above the threshold. If you're under the threshold, no conditions to your software apply though you would still have to provide source code etc for the library.
    – amon
    Jun 1, 2019 at 11:41
  • Regarding the possibility of subtle legal mistakes: the (L)GPLv2 automatically terminates when you (accidentally) violate the license. You would have to ask the authors to reinstate the license. (L)GPLv3 fixes this. Furthermore, many companies like RedHat have adopted legally binding mechanisms to automatically reinstate the license when violations are fixed. Consider checking if you can benefit from LGPLv3 (e.g. if the license has “or any later version” language) or if it is covered by an enforcement statement like RedHat's.
    – amon
    Jun 1, 2019 at 11:44
  • 1
    @jrh I think you would have to look at all dependencies. It's not possible to cheat the (L)GPL just by adding an include. The LGPL's ten line limit applies to any functions or templates that are included.
    – amon
    Oct 13, 2020 at 12:27

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.