I am a contributor to a very old project presently licensed under the GPL. Our project is a plugin for a closed-source program, but the GPL does not permit this kind of linking. The GPL FAQ states:

"If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means that combination of the GPL-covered plug-in with the non-free main program would violate the GPL. However, you can resolve that legal problem by adding an exception to your plug-in's license, giving permission to link it with the non-free main program."

This was interpreted to mean that WE were in violation of the GPL on our own code because the GPL does not permit dynamic linking between Free and non-Free code.

bmargulies pointed out we that aren't violating the GPL, since a violation occurs when someone combines the GPL library with the closed source component and then distributes the result. Therefore it's OK for us to consider linking to the closed-source host as OK and not pursue it, and no third party can feasibly take legal action against us for this.

This is great, but what if our project included in its source code GPLed source code from someone else's project? Can that project's owners decide that our interpretation of linking doesn't fly with them and take action against us?

  • If you say it is a plug-in, I assume you have to include parts of the host programs code to make it work? (Header files for function definitions?) Is this correct? How are this parts of the host program licensed? – Josef says Reinstate Monica Oct 1 '15 at 7:49
  • I do not. The developer of the host program provides a SDK, the license of which is GPL-incompatible ("all rights reserved"). The user is responsible for obtaining this SDK on their own to recompile the plugin, in the same manner they would be responsible for obtaining a compiler and header files for compiling software on their own operating environment. In the event the SDK becomes unobtainable, the plugin cannot be recompiled, but that would mean the host program is no longer available either and we would begin porting the plugin to another, if such a thing existed. – Daniel Seagraves Oct 2 '15 at 8:13
  • Ok, so the user has to obtain the SDK herself and then compile the combined source to create a working plugin. Thanks for clearing that up. But this means that currently no one can legally distribute any binaries of your plugin. – Josef says Reinstate Monica Oct 2 '15 at 12:23
  • That's not true. The SDK is header files only. The plugin itself is a collection of DLLs and data files that are loaded by the host. The plugin binaries don't end up containing any of the host code. Distribution of the plugin by itself is OK. You are correct that it can't be distributed together with the host, but we don't want people doing that anyway. – Daniel Seagraves Oct 4 '15 at 5:50

So, now we must note that the copyright holders of the included code are in a position to complain if someone distributes in violation of the GPL. However, by the same logic as my previous answer, I do not see how you and your fellows have distributed in violation. The hypothetical violators would be others who distributed the combination of your plugin (and thus these others' work) with the closed source program.

The authors of the included code would certainly have a legal course of action against someone who did that. On the other hand, since the host program is closed-source, who has rights to create a combined work that includes it and your plugin? I would guess that the owner of the closed-source program does not grant that right to anyone. So, if the owner doesn't bundle you in a release, who is left to violate?

It would certainly be polite for you to post a notice explaining this situation and warning potential distributors that there is no way to distribute the combination of your plugin and the host program without legal liability. However, again, it takes a long stretch of the imagination to see how any of this leads to liability for you and your fellow creators.

Of course, I'm not a lawyer, and I'm especially not your lawyer. But I have been helping to run a software company that produces and consumes FLOSS software for quite a while, and it's part of my job to know the basic working parameters of this stuff.

  • Outstanding work. I want to quote you in a document to be published with the source to make sure this doesn't come up again later, is that OK? – Daniel Seagraves Aug 10 '15 at 21:58
  • 1
    @DanielSeagraves While it exciting to see a user so enthusiastic about a contribution by a community member, make sure that you in no way take this as legal advice, and you do not make others accountable. – Zizouz212 Aug 10 '15 at 22:06
  • Of course not. It's not being used as a legal defense, just a forestall against repeating this discussion (and resulting liability scare) again in the future. – Daniel Seagraves Aug 10 '15 at 22:11
  • The CC license makes you free to use it; do note @Zizouz212's caveat and my note added to the answer. – bmargulies Aug 10 '15 at 22:11
  • Maybe you should still think about adding the linking exception or changing the license to LGPL for all code where this is possible and all new code. This way, if the parts of the code from authors you couldn't reach become obsolete, the license problem goes away. (If you license your code as LGPL it can still be used in the GPL plugin but also in LGPL software) – Josef says Reinstate Monica Oct 2 '15 at 13:13

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.