views:

45

answers:

2

My company is very concerned about entaglements that could result from the use of copy-left (e.g. GPL) code in our product. Because of this we have no compile scope Maven artifacts with copy-left licenses.

However, with runtime or test scoped artifacts, does the same requirement apply? I wouldn't think so, but am very interested in hearing the opinions of the community here.

A: 

My general understanding is that LGPL libraries can be used at runtime without "polluting" your product's license, but that you'd suffer the copy-left effect of GPL libraries even if they were runtime-only dependencies.

Really, though, this is not the kind of thing that you want to trust the community's opinion on. I think the only correct final answer to this question is to ask your company's copywrite lawyer about this, because IANAL. If they're as concerned as you say, they should have already looked into this and they should be telling you if it's legal or not.

Andrzej Doyle
+2  A: 

However, with runtime or test scoped artifacts, does the same requirement apply? I wouldn't think so, but am very interested in hearing the opinions of the community here.

I'm not a lawyer but I don't see why things would be different for Java code depending on runtime or1 test scoped dependencies. Such code import classes from a library and thus becomes a derivative work of the library in the same way.

Below, some quotes from The LGPL and Java:

It has always been the FSF's position that dynamically linking applications to libraries creates a single work derived from both the library code and the application code. The GPL requires that all derivative works be licensed under the GPL, an effect which can be described as “hereditary.” So, if an application links to a library licensed under the GPL, the application too must be licensed under the GPL. By contrast, libraries licensed under the GNU Lesser General Public License (LGPL) may be linked to proprietary applications.

(...)

The typical arrangement for Java is that each library an application uses is distributed as a separate JAR (Java Archive) file. Applications use Java's “import” functionality to access classes from these libraries. When the application is compiled, function signatures are checked against the library, creating a link. The application is then generally a derivative work of the library. So, the copyright holder for the library must authorize distribution of the work.

So, unless the library is licensed under the GNU General Public License with a linking exception, my understanding is that:

(...) code linked with GPL code must be using a GPL-compatible license.

But, as always, you should ask a lawyer.

1 Update: I was too much focused on the test scope and did not pay enough attention to the case of runtime dependencies. As pointed out by the OP, runtime dependencies seem different since you don't directly import classes from them so the above might not apply (this is at least my interpretation but I'm still not a lawyer :)

References

Pascal Thivent
The GPL is such a horribly restrictive license.
Chris Marisic
@Chris This is probably why people expecting their libraries to be (widely) used don't license them under the GPL. But having the choice is in itself not a bad thing.
Pascal Thivent
@Pascal -- But that is the point. For runtime libraries you do not "import" anything. If you did, they would HAVE to be compile time libraries. For example, a JDBC driver could be GPL, but it is only a runtime dependency.
HDave
@HDave Good point about runtime (answer updated). But test is definitely different IMO.
Pascal Thivent