3

Not asking for legal advice, just educated intuition.

Lets say a programmer creates a program to provide a service, for instance (hypothetically) face recognition. User logs in, uploads pictures and the program informs their friends that a picture of them was uploaded (or whatever).

Now the programmer finds another GPL software that can greatly enhance the performance of their program by preforming some initial CV analysis. Can the programmer place the GPL software on a private RPC server and have their paid software communicate with that server?

Meaning would that require making the new program GPL aslo?

AturSams
  • 149
  • 4
  • Does the GPL software act as a server "out of the box" or did we write the server code and have it link to the GPL software? I understood it as we wrote the server code and it's linking to something like a numerical library -- something we'd normally just link against. – Praxeolitic Nov 17 '15 at 19:20

2 Answers2

3

The intention of the GPL is to ensure the maximal possible freedom for the (end-)users of GPLed code. Therefore:

  • you may freely use GPLed software, even in closed source applications. The GPL does not require that you open-source your code.
  • when you re-distribute/convey GPLed software, you must use the GPL license so that your users enjoy the same freedom – you may not sublicense it to set different terms.
  • when you distribute software that depends on GPLed code, you must license your software under the GPL.

So the GPL is only “viral” when you distribute your software. When your GPL-depending software is not distributed, there is no need to issue licenses.

When the software only runs on your servers, you are not conveying the software to your end users, you are merely providing access to that software. This is a valid loophole in the GPL, and the AGPL closes it (by tying the licensing requirements to usage rather than distribution).

So to summarize: you are free to use GPL software in a SaaS context without having to make your code GPLed – as long as you merely provide access to your GPL-dependent software and do not distribute it (e.g. sell your software to clients so they can install it on their own servers, or make your software available in some public package manager). The GPL distribution rules only kick in when you give a copy of the software to another legal entity, e.g. a different company.

amon
  • 132,749
  • 27
  • 279
  • 375
  • So if a company provides a user with software A that has an option to communicate with a server that runs GPL software B for enhanced performance (improved results), then that is completely legal and does not violate the licence? – AturSams Jul 02 '15 at 12:40
  • @zehelvion That should be fine, since no GPL software is being distributed. There is an argument that a client and a server can form a single software system, but I tend to find that argument shaky. Also, from the sound of it your client software is sufficiently insulated from the GPL code, so you should be fine. But please note that IANAL, and you should really pay for a lawyer if your business might depend on these details. – amon Jul 02 '15 at 19:02
0

It's possible that the intent of the GPL could still be enforced here. The FSF does briefly mention this sort of scenario in the the GPL FAQ:

It is essential for people to have the freedom to make modifications and use them privately, without ever publishing those modifications. However, putting the program on a server machine for the public to talk to is hardly “private” use, so it would be legitimate to require release of the source code in that special case.

So of course they don't want the GPL undermined in this way but the issue is awkward. It could still be argued that the GPL code that's being hidden, the server wrapper code, and the client code are together a single work that must all be GPL compatible whenever they are propagated. It's not a huge stretch if the sole functionality of the server is to mediate between GPL code and client code that depends on the GPL code and directly interacts with its data structures. No one can know for sure but it's not unthinkable that the FSF could convince a judge that a network is not an impenetrable shield against copyright infringement liability.

Praxeolitic
  • 1,604
  • 3
  • 15
  • 24
  • So technically you're saying it could be isolated to a server and used as a service by a paid program as long as all the code relevant to that server is published to the public under GPL. Meaning: Paid closed source software running on some Server A while free open source software is running on Server B and Server A connects to Server B and reaps the benefits from what's supposed to be open source in a closed source, commercial application. – AturSams Nov 17 '15 at 18:15
  • As they say though in the link it's perfectly legal under GPL to do that. There is no gray area. It's similar to calling GPL code through command line interface. – Sirisian Nov 17 '15 at 18:17
  • @zehelvion My interpretation is that a network itself isn't a GPL shield. The FSF considers local "GPL wrapper" schemes to be violations and if you just put a network between wrapper components it's not fundamentally different. The FSF is fine with communication via standardized interfaces, fork-exec, and interpreted languages so if the network protocol resembles one of those then everything is fine but the network itself isn't the key. If the protocol was just raw binary data structures pilfered from a GPL lib and put on a pipe then it's hard to say why that's different from linking. – Praxeolitic Nov 17 '15 at 19:09
  • @Sirisian I don't think they say that. Are you just talking about the quote I pasted? Their language is very ambivalent here but I read as just vaguely suggesting that this is a violation. Communicating via a command line is different because here our evil GPL wrapping server has to link to the GPL lib. – Praxeolitic Nov 17 '15 at 19:16
  • @Sirisian So a commercial closed source service can make cli use of an open sources service for the user? – AturSams Nov 17 '15 at 19:34
  • @zehelvion http://programmers.stackexchange.com/questions/110380/call-gpl-software-from-non-gpl-software yes, you can even wrap a GPL program and use it as CLI to get around GPL. It's done all the time, just be aware that code, the wrapper, is then GPL. – Sirisian Nov 17 '15 at 19:51
  • @Praxeolitic I was referring to the line: "Therefore, the company does not have to release the modified sources." Keep reading after your quote: " Developers who wish to address this might want to use the GNU Affero GPL for programs designed for network server use." They are telling people to use a different license if they want to further restrict usage. – Sirisian Nov 17 '15 at 19:52
  • Very interesting! – AturSams Nov 17 '15 at 20:27
  • @Sirisian The sarcasm isn't helpful. Did *you* read the quote? They continue `However, putting the program on a server machine for the public to talk to is hardly “private” use, so it would be legitimate to require release of the source code in that special case.` – Praxeolitic Nov 17 '15 at 20:49
  • @Praxeolitic I'm not being sarcastic? I pasted the exact quote. It says to use their "GNU Affero GPL" license if you want that protection. – Sirisian Nov 17 '15 at 20:59
  • @Sirisian Ok, fair enough. I read that as an additional suggestion rather than them saying you get that protection if and only if you use AGPL. In an extreme case where a raw binary is passed over a network between a GPL'd lib and a proprietary program there could still be an argument that the GPL is violated. I think this is why they use the confusing phrase "legitimate to require release" -- they don't want to give approval but it's tenuous whether the GPL applies. – Praxeolitic Nov 17 '15 at 21:16
  • @Praxeolitic You do only get that protection using AGPL. In your example of "where a raw binary is passed over a network" that would be distribution under GPL. In most server/client services though the only thing being transmitted is input/output which is unlicensed. http://www.gnu.org/licenses/gpl-faq.html#GPLOutput – Sirisian Nov 17 '15 at 21:25
  • @Sirisian What I meant was passing unmodified data structures to and from functions in a GPL'd lib. The GPL FAQ gives this as a guideline for communication they consider to create a combined work. – Praxeolitic Nov 17 '15 at 21:37