12

This question stems from discussion of a question on programmers.stackexchange.com.

In the LGPL 3.0 section 4 "Combined Works" it states:

You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following:

Generally, it seems the LGPL license is concerned with open source libraries and software that uses these libraries where a combined work would be a piece of software that includes a library.

If one were to open source a standalone single file program and someone modified that and redistributed it, it would technically be a derivative work. Would the statements regarding combined works map to derivative works?

Or more simply: Are derivative works a subset of combined works?

7

There are two separate kinds of derived works you can create from an LGPL-licensed work:

  • a combined work that includes/uses the LGPL library (per section 4, "Combined Works")
  • a modification of the LGPL library itself (per section 2, "Conveying Modified Versions")

To qualify as a "Combined Work", your changes cannot be "based on" the library, but rather must be a separable component that uses the library as an interface. Consider the definitions from the license (emphasis mine):

An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library.

A “Combined Work” is a work produced by combining or linking an Application with the Library.

So, a combined work consists of

  1. the LGPL-licensed library, and
  2. another work ("Application") that is not "based on" the library

Visually, we could represent the whole Combined Work as:

 [Application] === (uses) ===> [Library]
|                                       |
|-------------Combined Work-------------|

It seems to me (note: not a lawyer) that if a derived work is only a modification of the library itself, it would qualify as being "based on" the library. Therefore, such a work could not be part of a union that satisfies the license's definition of a Combined Work, because its non-Library component is based on the text Library, rather then using an interface provided by the Library. Instead, it would be a modification of the library, and governed by section 2, rather than section 4.

On the other hand, if you modified the library's file to add completely separate code that merely uses the library's interface, that wouldn't seem to be "based on" the library, because the two components (library and your addition) are completely separate (but merely happen to be contained inside the same file). For example:

class OriginalLibrary() {
    void someInterface(int foobar) {
        return new Sys().doStuff(foobar, 18);
    }
}

int main(char** argv, int argc) {
    OriginalLibrary mylib = new OriginalLibrary();
    printf("I use the library, but I'm not pat of it");
    printf(mylib.someInterface(argv[0]));
}

In this case, the int main method is clearly not "based on" the OriginalLibrary class, even if you put them in the same file.

Finally, your work could be both a modification and a combined work. You could first modify the library itself, and then include that modified library inside of a larger combined work.

  • Essentially, it's a gray area so to defend applying the "Combined Work" section to a particular derivative work, you'd need to establish that a large enough subset of your original work to be considered a library was kept unchanged in a derivative work? Or more simply: Of course it's a subset provided you have Microsoft's budget for lawyers? At least I think that's what you said. – Still.Tony Aug 24 '15 at 18:43
  • In your single file albeit trivial example, the LGPL-licensed work is 5 lines. What if foobar were renamed foobaz? What if it were 6 lines and 1 line was completely changed. What if it were 5000 lines and only those 5 lines stayed the same. There is a threshold at some point where the LGPL-licensed work is considered changed. Or so I'm thinking.. maybe? – Still.Tony Aug 24 '15 at 18:59
  • 2
    @Okuma.Tony The fundamental question is: are you using the library or are you changing the library? Any changes internal to OriginalLibrary are changes to the library, and are governed by Section 2 ("Conveying Modified Versions"). Any combined works made of an LGPL library and associated Application is coverned by Section 4 ("Combined Works"). Note that the LGPL Library included in a Combined Work could itself be a modified version of another LGPL library -- you can distribute a modified library per section 2, and then include it in a combined work per section 4. – apsillers Aug 24 '15 at 20:38
  • 1
    My point is that modifying a library is one kind of operation, and including a library in a combined work is a different kind of operation. Both are allowed, and both are governed by different rules. Maybe that doesn't answer your question, though; am I still missing your point? – apsillers Aug 24 '15 at 20:40
  • I wasn't putting it together with section 2. I think I get it. Either you're conveying a modified work or a combined work or both. Regardless, both operations are covered so my original question was irrelevant. Derivative works need not be a subset of Combined Works to be covered by LGPL. I hope anyone else reading this can make sense of it. – Still.Tony Aug 24 '15 at 20:49
2

There is no official legal term combined work. The official legal term is collective work.

Important: while the Copyright law usually forbids everything unless the owner permits it, an opensourced work that does not mention restrictions that apply to collective works always permits collective works. For this reason, e.g. even GPLv2 permits collective works.

From a legal point of view, collective works are usually a combination of a derived work and a collective work. This applies if you e.g. take an work under a OSS license, modify it and then use the modified work as a part for a collective work.

A collective work is finally usable in case that the restrictions from all licenses do not completely disagree. The collective work is usable if you honor the sum of all restrictions.

A combination of different software that is a simple aggregation of a list of software is neither a derived work, nor a collective work unless the combination offers a significant own level of creation.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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