views:

287

answers:

6

If you use Ext JS you are required to either open source your app or pay for a commercial license. So I was wondering, if I open source my app, can I claim it's open source even if I'm not hosting the code on a public open source repository? I want to meet the requirements of Ext's Dual Licensing because I can't afford to pay for a commercial license. But I also don't want my source code to be completely out in the open.

What I would like to do is call my app open source but only release the source if someone contacts me personally and asks for it. Is this possible without violating the terms of the GPL?

+3  A: 

That is permitted according to the GPL FAQ. However, you may not prohibit anyone who receives a copy of the source or binary from you from posting it publicly or otherwise redistributing it, and you must honor requests for source code from non-customer third parties that have received copies of the binaries, directly or indirectly, from your customers.

Jeffrey Hantin
+2  A: 

AFAIK, that is exactly all the GPL requires. You have to release your application under the GPL once it's a 'derived work', which means that anybody you distribute it to can contact you and ask for the source code.

Alternatively, if you make the source code publically available, you can point them at that. That's not a requirement though.

Note that you cannot prevent anyone who you give the source to from redistributing it further; it will be "completely out in the open" with the only proviso that it has to remain under the GPL.

Peter
This depends on whether it is used privately or publicly, on whether it's distributed, etc.
Eddie
It's a public web app. I'm paying for hosting.
Yen
+13  A: 

I think this is the most relevant FAQ question:

Does the GPL require that source code of modified versions be posted to the public?

The GPL does not require you to release your modified version, or any part of it. You are free to make modifications and use them privately, without ever releasing them. This applies to organizations (including companies), too; an organization can make a modified version and use it internally without ever releasing it outside the organization.

But if you release the modified version to the public in some way, the GPL requires you to make the modified source code available to the program's users, under the GPL.

Thus, the GPL gives permission to release the modified program in certain ways, and not in other ways; but the decision of whether to release it is up to you.

http://www.gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic

Daniel Straight
I don't think this FAQ question is relevant in this case: Javascript libraries like ExtJS are released to the public when embedded in web pages. The web server distributes the Javascript code to the users' browsers, where it is run. At this point, the GPL comes into play again, requiring you to fulfill its terms.
flight
++, nice quote - helpful!
Eli Bendersky
+2  A: 

Your best bet may be to consult a lawyer. This would probably be an easy consult, I would guess. The GPL has not been subject to many binding legal tests, as many (most?) of the court cases over the GPL have resulted in settlement rather than a legal decision about the license.

I assume you mean that no-one will know about your app because it is privately used, e.g., within your organization, and is not provided as a product or as a service to the public or outside your organization. In this case, you are most likely fine. But if you want to be certain, then always consult a lawyer familiar with the law in your area.

The answer selected as correct is a very good answer, and I have upvoted it. But if you want to be sure, then consult a lawyer, not a bunch of programmers!

Eddie
It's actually a public facing web app, not an intranet app.
Yen
Ah, if it's a public facing web app, then it's probably different and you probably need to be willing to make your source available on request. But still, your best bet is to consult a lawyer to get a definitive answer.
Eddie
+1  A: 

IANAL. If you use the GPL and distribute your binaries, you have to be willing to give out the source code. You don't have to post the source code online. You could even send it out on CD and (I think) charge a distribution fee for it. However, you have to make it available. More importantly, anyone who you give the binaries and/or source code to has the right to modify it and to distribute it any way they like as long as it is also in compliance with the GPL.

I think that if you use your GPL'd software to run a web service and never distribute the binaries, you don't need to give up your source code. Someone please correct me if I'm wrong here.

Steve Rowe
"I think that if you use your GPL'd software to run a web service and never distribute the binaries, you don't need to give up your source code." - Yes, I wasn't sure about that either.
Yen
+1  A: 

I would split this question into three parts:

Q1. Provided I use the open source license (GPLv3) version of ExtJS in a public facing web application, does this imply any consequenses on my application?

Q2. Which parts of my web application are affected by the GPLv3?

Q3. For the parts of my web application that are affected by the GPLv3, what does that mean?

A1. Depends on your definition of "use". You can use and modify GPL software without any restrictions, as long as you don't distribute it. In the case of a Javascript library like ExtJS, your kind of usage certainly implies distribution in the terms of the GPL. The borderline is whether the code of the GPL software is run internally on the web server, or whether it's distributed to web clients.

A3. You have to release the affected parts under a license compatible with the GPLv3. Besides other requirements, you have to make clear that the code is licensed under the terms of the GPLv3 (or compatible license), and you have to make the source available to anyone who asks. The exact requirements are written down in the text of the GPL.

A2. This is the messy part of the question, since appearently different people have very different opinions about this. The ExtJS people appearently believe that every part of the web application has to be put under a license compatible with the GPLv3. Many other people have quite contrary opinions where to draw the borderline.

For C code, the classical example was linking against a GPL library (GPL is invoked) against calling a GPL program (GPL is not invoked). Make up your mind how this applies in the case of ExtJS.

The official FAQ about the GPL has an example about client-side JavaScript.

My personal conlusion: Respect the intent of the authors of ExtJS. If you're building on their work, then play with their rules and don't try to play tricks. If their ideas about licensing are not acceptable for you, then look for another library with a more acceptable license.

flight