Suppose there's a GPLv3 app that has a GUI and a CLI. Can I legally expand its CLI (to give me access to functionality hitherto only available via the app's API), release the result under GPL and then create a non-GPL (perhaps proprietary) app that depends on this modified GPL app (via the expanded CLI)?
2 Answers
Short answer:
Maybe.
Long answer:
There are a couple of exception paths that might enable you to do what you're suggesting.
The first approach is to have the GPL'd app only provide data to the second non-GPL app. See here for additional details.
Another approach relies upon creating a plugin structure, but this is a tricky approach. See here for FSF's comments on this approach.
Depending upon the original GPL program, you might be able to write a module with additional permissions, but this is likely going to be tricky to do as well. See this related FSF FAQ
Finally, if you never distribute your second application then you are not required to distribute the source as per the terms of the GPL.
-
Thanks for answering. I'm asking mostly based on the site you link to, and according to it, my above scenario seems OK. I'm just finding it a little bit weird that there seems to be such a fine line (linking vs. CLI/IPC) between what they consider OK and what they don't. Feb 11, 2014 at 18:49
-
It is a fine line. And you can always write the FSF and ask for their opinion. It will take a bit for them to get back to you, but they do respond to well researched questions from the public.– user53019Feb 11, 2014 at 18:51
-
2IANAL, but to my understanding, a GPLed command line program called by a non-free program is nothing but "a plugin which is called by simple fork and exec", so the link you gave states pretty clearly that this is allowed without the viral effect of the GPL license. So my answer here would be "Maybe, probably yes". Feb 11, 2014 at 20:27
-
@DocBrown - I have shortened my already short answer.– user53019Feb 11, 2014 at 20:51
-
@GlenH7: that looks better, but why do you think the CLI approach to be "tricky"? IMHO it's pretty straightforward. Feb 11, 2014 at 21:19
As a simple test answer this question: Is my proprietary program useful without the GPL component? Ignore how the components communicate for now.
If the answer to this question is no, then you probably should consider your program a derivative work and thus must be covered by the GPL.
If the answer is yes, then you can probably distribute your proprietary program with the GPL program. But according to the FSF GPL FAQ:
To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.