0

As I understand, GPL allows use of a GPL program along with a proprietary program as long as they are separate programs and communicate at arms length.

In order to do this, if I spawn a process from my commercial android app which would only contain the gpl code and communicate with the main process via sockets,
would this violate the GPL? If so, is there any other way to use a gpl program (or code) in a commercial android app?

Relevant portions of gpl-faq:
http://www.gnu.org/licenses/gpl-faq.html#GPLInProprietarySystem
http://www.gnu.org/licenses/gpl-faq.html#MereAggregation

thank you,

  • 1
    What particular GPL program are you considering to use in your software? Please edit the question to improve it by naming the software! – Basile Starynkevitch May 25 '15 at 08:09
  • 1
    Did you read the last sentence of the paragraph of your second FAQ link? It says, even with socket communication, "... if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program." That is at least what the FSF thinks about it. – Doc Brown May 25 '15 at 08:14
  • It's GPLv3. I did read about communication semantics. In this case, I don't really need internal data structures, but rather, the output of the program which would have been the typical output had the code been in the form of a library. – user3099352 May 25 '15 at 09:19

1 Answers1

1

You probably understand wrongly (you should not wrap a GPL program with some protocol to communicate with a proprietary software without great cautions), and you should contact your lawyer, or the FSF.

I am not a lawyer, but my understanding is that if you design a specific protocol to communicate (from some GPL program) with only a proprietary process it is legally a linking or a derived work (license-wise, linking is not restricted to use ld). Things could be different if you have a public and documented protocol communicating with several programs, one of them being GPL.

In some legal systems, the court will evaluate if your intent was to hijack the spirit of GPL. You really need a lawyer and or the advice of FSF.

Did you consider publishing your application as free software under a GPL compatible license (You can commercialize GPL software, provided you give access to the source code under GPL license)?

And please, read more about free software. The goal of free software is not to assist proprietary developers (but to give freedom to users). Please visit the https://www.fsf.org/ site

You are probably considering making a huge mistake; are you sure to want to violate (or even to risk violating) the GPL license or its spirit? your career, your reputation, your employer & clients could suffer (e.g. financial loss, or even go to jail in some countries); at your place I would not risk doing what you want to do (unless covered by a lawyer, who will defend you in court)!

BTW, the whole point is understanding what "communicate at arms length" means, and you probably need a lawyer for that.

Basile Starynkevitch
  • 32,434
  • 6
  • 84
  • 125
  • If a specific protocol is created for the gpl code (such as a wrapper), and that wrapper is licensed under gpl, then that should be okay, right? See: [link](http://programmers.stackexchange.com/questions/50118/avoid-gpl-violation-by-moving-library-out-of-process) thank you, – user3099352 May 25 '15 at 07:42
  • Not sure, unless that protocol is not unique to your case. Contact your lawyer, or design and implement a *public* & *documented* protocol with a GPL implementation (on both sides). AFAIK there have been precedents, but I don't know if they got to court – Basile Starynkevitch May 25 '15 at 07:44
  • Notice that you are playing with fire. Are you sure to want to violate (or even to risk violating) the GPL license? Your career, your reputation, your employer & clients could suffer (e.g. financial loss, or even go to jail in some countries). I would not risk doing what you want to do! – Basile Starynkevitch May 25 '15 at 07:51