6

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.

6
  • Is this a general plugin system or is it designed around function calls in existing libraries? Nov 17, 2015 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, 2015 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. Nov 17, 2015 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, 2015 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. Nov 17, 2015 at 16:33

3 Answers 3

8

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.
12
  • 1
    Even if I late-bind the DLL? I thought that all "dynamic linking" was covered by GPL
    – Dean
    Nov 4, 2015 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, 2015 at 12:44
  • but I do distribute the software (not the third-party GPL plugin).
    – Dean
    Nov 4, 2015 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, 2015 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, 2015 at 11:08
4

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.

7
  • 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. Nov 10, 2015 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, 2015 at 9:14
  • 1
    So you're saying all laws are reasonable? We're talking about US law right? Nov 17, 2015 at 6:37
  • @Praxeolitic: I don't even use the word "reasonable" ?! I merely argue that the (relevant) laws are workable.
    – MSalters
    Nov 17, 2015 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. Nov 17, 2015 at 8:18
1

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.

4
  • 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, 2015 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... Nov 17, 2015 at 10:58
  • If any "combining" of material is done by the final recipient, there would be no infringement because the GPL specifically allows obligation-free formation of derived works which are not distributed. The set of symbol names in an exported API is not in and of itself copyrightable, and a work which doesn't use any copyrightable aspects of another work is not a derived work thereof.
    – supercat
    May 18 at 16:21
  • If e.g. one is writing a card game program and wants to allow users to employ a GPL library to show the cards, it might be a good idea to include and release under a free public license a "functional" card drawing library even if all it did was output the names of cards, thus allowing anyone who didn't want to use the GPL library a means of writing and employing their own alternative.
    – supercat
    May 18 at 16:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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