2

Suppose I have Java jar-files which I provide to my customers under a commercial closed-source license. But my jar-files depend on a few jar-files released under the GPLv2 (without any special GNU Classpath exception or anything like that).

If I give my customers both my jar-files and the GPLv2 jar-files as a complete product, then I am obviously violating the GPLv2: I am (dynamically) linking the GPLv2 jar-files, which by the GPL requires me to provides access to also our my source files. [Well, fairly obviously. I know dynamic linking is a grey area in GPL land, but I want to be on the safe side and assume this scenario violates the GPLv2.]

However, what if I deliver the product incompletely, and ask my customers to download the GPLv2 jar-files themselves separately?

What would be the legal status in that scenario?

What I do then is deliver an incomplete product, which depends on an API (as opposed to specific GPLv2 jar-files), which the customer in theory could implement by creating their own GPL'd or closed source or public domain jar-files implementing that API. So I would be delivering an incomplete closed source product which doesn't depend on any GPL'd artifact. That seems legal?

And would the customer then be violating the GPLv2 by running our incomplete closed source product with the GPLv2 jar-files?


Note: I'm not asking here whether this scenario would be morally acceptable. :-)

Versions of this same question have been asked before: Dynamic linking, bundling, and GPL and Using GPL resource (with separate installation) with "commercial" product and Automated GPL download and installation in BSD project. But I don't see an answer there that addresses the bundle-vs-separate legal status. I would appreciate authoritative references if available.

3

Strictly speaking this is out of scope of the GPL: The GPL would apply to your software iff your software is a derived work of the GPL library in the sense of copyright law. It is not up to the GPL to decide whether that is the case.

This causes some to argue that linking with a GPL library never creates a derived work, whereas the FSF thinks that:

  • a process is a derived work of all the software that is loaded or linked into that process; and
  • a a software work may be derivative if it engages in intimate data flow or control flow with another software, such as by exchanging complex data structures.

Under the FSF's interpretation your software would be derivative of the GPL libraries regardless of how the GPL libraries are obtained, because your software is specifically designed to require that library. Their relationship is so intimate that your software is not able to perform its main purpose when the GPL libraries have not been installed.

If your software were not derivative, then distributing the GPL libraries alongside your software would not be problematic: then the GPL would consider this to be Mere Aggregation and would not impose any terms on this software, as long as you comply with the GPL with respect to the GPL-covered libraries (such as providing their source code). So asking the users to download the libraries does not change the discussion of whether your software is derivative.

Your third option is a legal workaround. You can expose some generic API that must be provided by a plugin. Perhaps even include a minimally viable default implementation! Your end users can then implement their own plugin, and that plugin can use the GPL-covered library. This is possible solely because the GPL explicitly allows anyone to run the GPL covered software for any purpose, and only imposes conditions when the software is distributed. Here, it is not possible for anyone to distribute this plugin implementation as doing so would violate the GPL of the library, unless the copyright holders provide an exception to the terms of the GPL that allows it to be linked with proprietary code (e.g. as the LGPL or under the Classpath exception).

Note that doing stuff that is not allowed by a license is copyright infringement, and helping others to infringe copyright is still contributory copyright infringement. You should therefore refrain from providing your customers with guides to do anything that would be infringement if you were doing it yourself.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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