The closed source commercial software (CSCS), will just make system(3) calls to GPL applications.
The user machine will run CSCS and it will call these GPL applications, in realtime, in the very same way a user could use the command line and call the very same applications. Even a log of such actions could be provided, and user could replicate these actions manually.
In Java it would be like: Runtime.getRuntime().exec("echo Hello");
In C it would be like: system("echo Hello");
The point is, the CSCS is calling a GPL application to just generate realtime output, and in a predetermined way and hard coded on it, so CSCS depends on GPL app to work.
The GPL application is NOT a library. Is a regular command line application.
And, I am NOT going to distribute any GPL application (neither its sources) packaged together with CSCS. It will just depend that the OS have such GPL apps already installed. Also, CSCS can run with at least the version of the GPL application that was used in the development time (or newer), so it will NOT depend on a specific GPL app version to run.
1) Can the CSCS remain closed source on this sole specific situation?
2) Or should CSCS only use statically generated output from GPL applications, being prevented to use them in realtime, if it wants to remain closed source?
3) Alternatively could be created a LGPL software composed by scripts like ls -l $1
whose parameters would be dynamic data provided by any application including this CSCS. In this case, all the logic of these scripts would be exposed and reusable by anyone, therefore not proprietary. So, such "protocols" would all be LGPL. Can that be done? Or this would simply fall under something like indirect use of GPL sofware, and so GPL would infect every application using it (including this very LGPL software, forcing it to become GPL)?
I would appreciate also excerpts confirming the answer, thanks!
PS.: I have read this Can I use GPL software in a commercial application, and it doesnt seem to answer my specific question.
And, I need to know this before I can consider any kind of realtime GPL application usage on my software.
Linking: https://softwareengineering.stackexchange.com/a/161938/112610
I was unable to avoid linking this: https://meta.stackexchange.com/a/91116/222324
Another Link: https://softwareengineering.stackexchange.com/a/211357/112610
Obs.: (2 days after, considering all commented tips and answers) These may contain the answer:
A) I think this very question could actually be "What is a GPL derived work?" considering the "Networked Systems" section.
B) See "Mere Aggregation" in the GPL FAQ "pipes, sockets and command-line arguments are communication mechanisms".
PS.2: just as a final disclaimer, we all here seem to not be lawyers, and even if you do it all correct in this line, and even if you are sure of your license interpretations, something you do not expect may happen, https://softwareengineering.stackexchange.com/a/158925/112610
system(3)
and what is your program doing. Is the "protocol" between them specific to your application or not? – Basile Starynkevitch Dec 14 '14 at 19:24ls
that is from coreutils, and is GPL. It doesnt matter alternatives to it, it just matter if I can use it or not, becase, based on that I will know if I can use other GPL applications too. But for this example, I could use the output generated byls -l
to gather the filenames and create a list on the screen in columns, the same wayls -l
shows, but actually editable. Should I put this example there? – Aquarius Power Dec 14 '14 at 19:29ls
, just usestat
&readdir
syscalls instead. Or consider making all your application as GPLv3 free software – Basile Starynkevitch Dec 14 '14 at 19:34ls -l
– Aquarius Power Dec 14 '14 at 19:35ls -l $1
whose parameters would be dynamic data provided by any aplication including this CSCS. In this case, all the logic of these scripts would be exposed and reusable by anyone, therefore not proprietary. So, such "protocols" would all be LGPL. Can that be done? Or this would simply fall under something like indirect use of GPL sofware, and so GPL would infect every application using it? – Aquarius Power Dec 14 '14 at 20:05ls -l 123 $1
, I am distributing the code I created, not thels
application. My concern is, by calling from within my code, a GPL application to it dynamically generate an output in realtime on user's machine, am I forced to release my software source code freely? what would actually prevent me from making income as soon someone sells it too.. :(. Dang... if I won lottery I would just make my project for free, GPL, til then I dont want to have a boss so it must be CSCS... – Aquarius Power Dec 14 '14 at 22:22ls
, your application can depend on it. If you distributels
, then things become muddy and I'd strongly suggest lawyer advice. – AProgrammer Dec 15 '14 at 12:07ls
, and dont even touch its code; I just updated my question, thx. – Aquarius Power Dec 15 '14 at 16:08