How does GPL v3 work?
<p>I want to use the GPL v3 version of <a href="https://www.sencha.com/products/extjs/" rel="nofollow">EXT JS</a> for a project, but I'm very confused about how it should be used and whether or not I should get the paid version. I'm seeing different answers on the net so I don't know who to believe. There is a <a href="https://www.sencha.com/forum/showthread.php?68471-Is-Ext-JS-free" rel="nofollow">topic</a> about it on their forum, but even there I see contradictory answers. I tried to contact the customer support, but I'm still confused so now my question is more global and it's about GPL v3 in general. What does it do and what I am allowed or not allowed to do with my code?</p>

<p>I would like to use EXT JS to create web apps to be used internally by the company, and I also would like you use some of its elements like grids on websites. In the emails, the customer support mentioned that if I were to use the GPL version, I had to "publish" my code. I don't know what that means, since the JavaScript code is visible to anyone.</p>

<p>Thanks</p>

<p>The GPL is a copyright license that belongs to a category of license commonly called &quot;<em>copyleft</em>&quot; licenses. The defining characteristic of a copyleft license is that a work derived from a copyleft-licensed work must be licensed under that copyleft license as a whole. For the GPL, if your work includes a single piece that is licensed under the GPL, then the entire combined work must be licensed under the GPL whenever you choose to distribute it.</p>
<p>When you distribute a combined work the includes GPL components, you must license the entire work under the GPL. When you do so, your obligations for the new work include:</p>
<ol>
<li>making the human-readable source code of your application available whenever the application is available, and</li>
<li>permitting anyone who receives a copy to make derivative works based on your code and release it under the GPL.</li>
</ol>
<p>Note that I've said &quot;<em>whenever the application is available</em>&quot; and &quot;<em>anyone who receives a copy</em>.&quot; Only people who have been given a copy of your application have a right to the source code and permission to create derivatives. If the application is only available to company employees and not the general public, then no one in the general public has the right to see the source code of your application. Also, the company employees might not either, because they've only been given access to the application as agents of the company. Per the <a href="http://www.gnu.org/licenses/gpl-faq.en.html#InternalDistribution" rel="nofollow noreferrer">GPL FAQ</a>:</p>
<blockquote>
<p><strong>Is making and using multiple copies within one organization or company “distribution”?</strong></p>
<p>No, in that case the organization is just making the copies for itself. As a consequence, a company or other organization can develop a modified version and install that version through its own facilities, without giving the staff permission to release that modified version to outsiders.</p>
</blockquote>
<p>But you've said that you want to include some elements on websites, which I assume are public-facing. In that case, for those public-facing works, you will need to make the source publicly available. You ask:</p>
<blockquote>
<p>I had to &quot;publish&quot; my code. I don't know what that means, since the JavaScript code is visible to anyone.</p>
</blockquote>
<p>Very true -- Web applications are already sent to the user in source form. Some things to consider, however, are:</p>
<ul>
<li><p>You must <em>make it clear</em> that that your application is licensed under the GPL. Making the source available satisfies requirement #1 above, but the user might not know that requirement #2 (permission to prepare derivatives under the GPL) is in effect unless you prominently state (e.g., in a footer, About page, etc.) that the work is licensed under the GPLv3 and include a copy of the license.</p>
</li>
<li><p>According to the GPLv3, your source code must be in &quot;the preferred form of the work for making modifications to it.&quot; You cannot minify or obfuscate the source code when satisfying the requirement of source code availability. If you wish to minify your application's source (e.g., for performance reasons) then you must separately make the original source available to anyone who receives the minified source.</p>
</li>
<li><p>If your website work is made up of lots of discrete files, it could be a big pain to download all of the pieces. You might make the whole source available as a single zipped file. A complex website with iframed resources, scripts, styles, and image resources could be quite difficult to gather up manually. In addition to being courteous, I'd be a little concerned that forcing users to gather up all the pieces could be viewed as intentionally impeding the ability to access the source, but I don't really know to what degree that concern has legal merit.</p>
</li>
</ul>

<p>The GPL license is what's known as a copyleft license. It's an open source license, which is known for it's "viral" nature.</p>

<p>The GPL provides many freedoms with code, including: the use in private and commercial environments, as well as the freedom to modify and distribute that code. However, it comes with a catch. Anything modifications to the code also have to be made available, and even cases where you're making a link (e.g. <code>GPLLibary.foo();</code>) will force that library to be made under the GPL as well.</p>

<p>So when do you have to make available your source code? It all depends on how you distribute it.</p>

<p>If you ever make the code into an application, and distribute publicly, you must also distribute the source code. However, if you are only using it internally within your organization, then there is no distribution, and you don't have to make the source code available necessarily.</p>

licensing gpl open-source-software