I've gone through a couple of Question on GPL here, but all of them are related to the compiled languages, libraries and distribution.

My web project has a backend that is BSD licensed. The front end is a GPLv3 licensed JavaScript framework which renders a background image that doesn't link to anything from the backend and only renders in the web browser.

Am I required to make available the backend code to the public if I use the GPLv3 licensed library? We are not modifying the GPLv3 licensed library, just using it as is.


I've contacted the library author here is his reply:

I am not a lawyer, so all I can say is that The Library is made available under the GPLv3. Including it as a dependency in a commercial program does not, to my understanding, violate GPLv3. Including a modified version of it without releasing the source to the modified version would.

2 Answers 2


The GPL is not capable of "infecting" software it talks to over a network, so no, you do not have to disclose your server-side code.

In fact, this is closely related to why the Affero GPL exists:

The GNU Affero General Public License is a modified version of the ordinary GNU GPL version 3. It has one added requirement: if you run a modified program on a server and let other users communicate with it there, your server must also allow them to download the source code corresponding to the modified version running there.

The AGPL does not "infect across networks" either; even this extra condition is only meant to close the "but the user never runs it" loophole for server-side AGPL'd code. So your client-side Javascript library being GPL or LGPL or AGPL or whatever does not create a disclosure requirement for any server-side code. Only if your server-side code was linked to an AGPL library would you have to make it available.

Edit: I just noticed this section in the FSF's GPL FAQ is highly relevant:

Q: A company is running a modified version of a GPL'ed program on a web site. Does the GPL say they must release their modified sources? (#UnreleasedMods)

A: The GPL permits anyone to make a modified version and use it without ever distributing it to others. What this company is doing is a special case of that. Therefore, the company does not have to release the modified sources.

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. Developers who wish to address this might want to use the GNU Affero GPL for programs designed for network server use.

  • 1
    What's more, writing a GPL (or AGPL) front end to say... a weather API doesn't force the weather API to become GPL. Licensing the front end as GPL is a rather common strategy for commercial systems where the backend is where the value exists and making the front end open to all allows the community to use it without allowing competitors to monetize a copy of the client without disclosing the source to it.
    – user40980
    Commented Jun 4, 2015 at 20:07
  • I've updated the question, Have a look at it? Commented Jun 7, 2015 at 16:43
  • I don't think that update changes anything. If you distribute a program that includes GPL'd code--modified or not--then you have to provide the source for it. The part that matters is whether the GPL'd code actually is "included" in a program that you're "distributing" to users. As I explained in my answer, I do not think your server-side code would be considered "included" in your GPL'd frontend code.
    – Ixrec
    Commented Jun 7, 2015 at 16:50

This could be argued either way. Sencha, makers of ExtJS, claim that if you use the GPLv3 version of Extjs in the frontend, the combined work (both frontend and backend) are covered by the GPL:

For example: let’s take a mortgage processing software program. Let’s say that the application has a front-end (that generates web pages linked to Ext JS JavaScript) that communicates over JSON/HTTP with a backend service. This backend service contains approval and validation logic for this application alone. Even if only the front-end uses Ext JS code, you should consider that the combination of front and back ends constitutes the application, and the source code for both back and front end would need to be provided to the application’s end users under GPLv3 if the application is used by an end-user who is not part of the same legal entity that holds the GPLv3 license to the Ext JS code.

However they also say that ancillary functions provided by a separate backend may not be considered part of the combined work.


No clear answer is possible without many more details. I'd start by asking the owner of the GPL code to see how they interpret it.

  • 2
    Regarding Sencha's claim that "the combination of front end and back end constitutes the application", it's worth pointing out that the FSF (makers of the GPL) does not believe there is a definitive answer on this issue yet.
    – Ixrec
    Commented Jun 6, 2015 at 11:00
  • I agree, but the opinion that matters is the copyright holder, they are the only entity that can take legal action. Of course, after they take legal action the court's opinion is the one that matters.
    – Craig
    Commented Jun 8, 2015 at 16:52
  • 1
    I'd say the key point is this: can the backend be used without the GPLv3 frontend? If it can, then it can't be "infected" with GPLv3 from the frontend. Otherwise one could go nuts and argue that the backend's underlying stuff (e.g. whatever frameworks, scripting language interpreters and operating system used) should also be provided to the frontend users under GPLv3 on the basis that the frontend won't be useful without them :).
    – Greendrake
    Commented Jun 26, 2015 at 7:09

Your Answer

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

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