Restrictions of GPL on javascript libraries

Javascript

Javascript Problem Overview


If I use GPL-licensed JavaScript components on my website, would it be considered as a release to the public (as client-side code of the components is loaded to users' browsers via http) and I have to "open-source" the whole website?

So, can we say that the usage of JavaScript components on a website is distribution of the code and it involves the distribution of the whole website code?

Hope, the question is clear and you can help me to understand this aspect of GPL.

Javascript Solutions


Solution 1 - Javascript

I am not a lawyer. I have talked to lawyers about using the GPL and LGPL for code to be interpreted / dynamically linked into non-free software. We all got big headaches. The question isn't just whether you have to release the rest of your site under GPL. It's whether a non-free browser can legally run GPL code.

My best non-legal advice is to never try to use the GPL on Javascript code. I'd never release a Javascript library under GPL, and if I found some code I wanted to use I'd try to get the author to give me an exception. The LGPL http://www.gnu.org/licenses/lgpl-java.html">may be a better choice, but that license is so complex I suggest avoiding it as well.

The FSF themselves have an answer for you in their FAQ http://www.gnu.org/licenses/gpl-faq.html#InterpreterIncompat">If a programming language interpreter has a license that is incompatible with the GPL, can I run GPL-covered programs on it?. That answer itself is frustratingly ambiguous, but it suggests paths where you could run GPL code in a non-GPL browser. You may also find the FSF essay http://www.gnu.org/philosophy/javascript-trap.html">The Javascript Trap interesting, although again it doesn't really give a clear answer to your question.

For context, it helps to remember that the GPL and LPGL were written in the Unix era when most everything was statically linked. No dynamic linking, no interpreted languages where the scripts themselves were considered valuable intellectual property, etc.

Solution 2 - Javascript

You have distributed the JavaScript library to the user; you are required to comply with the GPL's requirements on distribution then. Whether this requires you to distribute the rest of the website is where things get complicated - I'd advise you to talk with a competent lawyer about your exact situation if you're even thinking about going that route, and keep in mind that this is at least violating the spirit of the licence, whether or not it violates the letter of the license as well.

Solution 3 - Javascript

This does definitely get complicated. I'll give you an example. What if you're using jQuery's GPL license (I know it's dual licensed, but let's ignore that for just a sec).

Google has a public distribution of jQuery (among other javascript frameworks) that they distribute on their CDN, for example:
http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js

So in this case, you're not the one that is distributing the javascript library to the user, google is ;-)

please note: as @bdonlan describes, only an experienced lawyer should be the one to really weigh in on this. I only contributed this answer to provide context for things you can speak to the lawyer about.

Solution 4 - Javascript

And just to add more fuel to the fire...

Reading the gpl v3 it is clear that if you include a gpl'd work, you need to provide the source with the license text at the top of the file and the copyright statement.

So if I strip comments and whitespace from the file and shorten variable names, then 'distribute' it to someone's browser (in source form of course) I would probably be in violation of the license. BTW, a solution might be a binary uuid that stands for the appropriate licenses for the mangled files. Thoughts?

If I provide the source of the library and my own 'source' using the library with a gpl stmt on it, does delivering it to the browser constitute providing the source freely?

I think there are enough loopholes in this to make the license unenforceable.

my 2cents/ not a lawyer.

Solution 5 - Javascript

Your app + GPL'd library + release -> open source GPL'd app.

This is the intention of the FSF and the GPL, and it applies regardless of what programming language you are using.

A GPL'd JavaScript lib will infect all your JavaScript code. Probably won't infect your HTML, page content, or server-side code.

So, please don't release JavaScript libs under the GPL, if you intend them for general use.

Solution 6 - Javascript

This guy wrote an article about it: http://stuck-in-windows.blogspot.com/2009/02/fud-over-javascript-and-gpl.html

In his article, he cites the gnu website FAQ, which has Q&A:

> (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? > > (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.

The FAQ then references the GNU Affero GPL which does require the release of all website source code.

Solution 7 - Javascript

For e.g. Magento uses ExtJS which is under GPL v3. Now, when Magento is downloaded and installed by shopping-store-owners, you mean store-owners have to give a link to their 'whole-website-source' along with their Products ? Funny Lol

So In my opinion, a Javascript library licensed under GPL v3 is good for any project unless you are trying to modify the Javascript library and selling it commercially or related commercial-services.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAquaticView Question on Stackoverflow
Solution 1 - JavascriptNelsonView Answer on Stackoverflow
Solution 2 - JavascriptbdonlanView Answer on Stackoverflow
Solution 3 - JavascriptJoel MartinezView Answer on Stackoverflow
Solution 4 - JavascriptRob MitchellView Answer on Stackoverflow
Solution 5 - JavascriptSam WatkinsView Answer on Stackoverflow
Solution 6 - JavascriptvelcrowView Answer on Stackoverflow
Solution 7 - JavascriptRohit KingView Answer on Stackoverflow