My software is designed to use third-party external tools if the user wishes to do so.

Some users would like to use GPL-covered binaries as external tools (i.e. they tell my software "use this dll to convert your input before feeding it to you").

Since they install the third-party executable themselves (i.e. I don't ship the GPL-covered program nor I link against it in any way), am I violating the GPL license somehow? I late-bind the dll told me by the user.

This is a tricky case which I suppose it's not covered by the usual "GPL for commercial use" paragraphs.

  • Is this a general plugin system or is it designed around function calls in existing libraries? – Praxeolitic Nov 17 '15 at 11:01
  • @Praxeolitic the latter: late-binding means loading the dll into the process space with LoadLibrary on a Windows system and then calling its routines. – Dean Nov 17 '15 at 12:44
  • I mean is the idea that these dlls will be written by users specifically to be used by your code or is the idea that this lets users optionally access an already existing GPL'd library with function signatures that your loading code was designed against? It could be either one with LoadLibrary. – Praxeolitic Nov 17 '15 at 13:10
  • @Praxeolitic The latter: users can optionally use these GPL'd dlls if they want/need an additional feature that my software doesn't natively support. Other programs might also use them, I don't care. – Dean Nov 17 '15 at 14:11
  • Sorry to ask twice, it's just a bit unusual. In that case, if you also link to GPL-incompatible libraries (system libraries are ok) then you really might be violating the GPL. The FSF would say you're combining works and late binding doesn't change that fact but many would disagree. – Praxeolitic Nov 17 '15 at 16:33

Fortunately, this is not a tricky case at all.

You are not in any way bound by any terms in the GPL if you are not distributing software that is licensed to you under the GPL. Neither you nor your users are distributing software licensed to them under the GPL.

Your users are always free to use free software in any way they like. The GPL doesn't forbid - in fact, specifically allows, and was created to guarantee to specifically allow - any kind of use a user would have for the software, including being used together with propriety software in any way.

This is a requirement for any license approved by the FSF as a free license, following from freedom 0 of the free software definition:

0: The freedom to run the program as you wish, for any purpose

In short, the GPL:

  • doesn't apply to you.
  • guarantees this use case is legal for the users of the GPL modules.
  • Even if I late-bind the DLL? I thought that all "dynamic linking" was covered by GPL – Dean Nov 4 '15 at 12:19
  • 1
    That only starts to matter when you're distributing software (and then the answer is somewhat complex, and doesn't have a singular right answer). Your users are not distributing the combination of your product and their GPL licensed modules, so none of the restrictions of the GPL come in to play. – Martijn Nov 4 '15 at 12:44
  • but I do distribute the software (not the third-party GPL plugin). – Dean Nov 4 '15 at 12:47
  • @Dean You're not distributing anything related to the GPL. What your users choose to do with GPL licensed software is not your concern from a license perspective (unless you have some EULA or something that disallows it yourself, but that would defy the point). – Martijn Nov 4 '15 at 12:52
  • 1
    @MichaelSchumacher The scenario you're thinking of is perhaps that the author took the GPL'ed module, made his software to fit that module, and then said "I didn't have anything to do with the module"? I always assume questions are asked in good faith, and the question here implies the OP made a program, and the user happens to be able to load GPL modules for it. If they want an answer to the different question, they could ask that one as well. – Martijn Nov 10 '15 at 11:08

The existing answer is perhaps not clear enough. A third party cannot force the GPL on you. This is not specific to the GPL. They couldn't force a BSD or closed-source license on you either.

Imagine if it was possible. Microsoft would need to create one closed-source program and have the Linux kernel run it, to close down Linux ! And vice versa you could open-source Windows by running a GPL program on it ! Obviously that's not how the world works. Software can co-exist and co-operate.

  • The question here is whether the application does become a derived work, due to how the library is being called. Answers should take this into account. – Michael Schumacher Nov 10 '15 at 7:03
  • 1
    @MichaelSchumacher: The way in which libraries are called is irrelevant for the ex post facto case of creating a GPL library which conforms to an existing way to call libraries. (But yes, if and when the library interface itself should be considered a work derived from a GPL'ed work, then the whole application has to be released under GPL terms. ) – MSalters Nov 10 '15 at 9:14
  • So you're saying all laws are reasonable? We're talking about US law right? – Praxeolitic Nov 17 '15 at 6:37
  • @Praxeolitic: I don't even use the word "reasonable" ?! I merely argue that the (relevant) laws are workable. – MSalters Nov 17 '15 at 8:10
  • I was just poking fun at your last paragraph. But more seriously, it got me wondering about binary closed source blobs in the Linux kernel. It looks like special exceptions are carved out for those in the license. – Praxeolitic Nov 17 '15 at 8:18

Unfortunately, this is a tricky case. ;)

Does your program interact with GPL-incompatible code? And if so, how? If your program only interacts with GPL-compatible code then obviously you're good to go but I guess you wouldn't have asked the question if that were the case.

It depends on what your software is doing but there's a risk that it's a "GPL wrapper":

I'd like to incorporate GPL-covered software in my proprietary system. Can I do this by putting a “wrapper” module, under a GPL-compatible lax permissive license (such as the X11 license) in between the GPL-covered part and the proprietary part? (#GPLWrapper)

No. The X11 license is compatible with the GPL, so you can add a module to the GPL-covered program and put it under the X11 license. But if you were to incorporate them both in a larger program, that whole would include the GPL-covered part, so it would have to be licensed as a whole under the GNU GPL.

The fact that proprietary module A communicates with GPL-covered module C only through X11-licensed module B is legally irrelevant; what matters is the fact that module C is included in the whole.

Obviously the wording here is aimed at a case where a single nefarious person is trying to circumvent the GPL but the FSF would probably feel the same way if a separate person with good intentions wrote the intervening module.

Using dynamic loading doesn't change anything. The wording used in the GPL is "combine" which intentionally avoids naming a specific technology. The FSF doesn't address dynamic loading in their FAQ but they do mention plugins and essentially say they aren't special.

Even the fact that you yourself don't distribute GPL'd code might not shield you from all liability. There's precedent for successful copyright infringement lawsuits when the infringement was only facilitated and not committed directly. The concept is called secondary liability and the GPL specifically mentions it.

Keep in mind this is all just what the FSF intends the GPL to mean. We won't know much about what courts think of the GPL for a long time because there simply aren't many GPL violations being brought to court.

All that said, the FSF clearly states that the GPL is not for punishing well meaning individuals who unintentionally violate its terms and their policy is to first notify and try to get voluntary compliance. The GPLv3 even added special accommodation for this case. If you want any certainty your best bet is probably to email the library author and see if they're ok with your usage. You could also try sending the FSF an email and getting this added to their FAQ since it's a good question for any software that does dynamic loading.

I am not a lawyer and have no training in law whatsoever. I came up with this answer mostly based on Google searches in the last ~20 minutes. This isn't legal advice and you shouldn't believe things you read on the internet.

  • From the way the question is describing it, he can't email the owner of the GPL plugin, because he doesn't know which GPL plugins his users may be using if they don't tell the OP. – Martijn Nov 17 '15 at 10:28
  • 1
    @Martijn My interpretation was that third party tools meant libraries with known function names and signatures and dynamic loading was just being used to make the libraries as optional as possible. Reading it again I'm not sure... – Praxeolitic Nov 17 '15 at 10:58

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.