GPL is a well know software license which stays behind success of Linux and GNU tools. Many well know software applications use this license: the Linux Kernel, GNU Compiler Collection and JUCE – C++ framework useful for multimedia application and especially audio plugins programming. JUCE is provided under GNU GPL as well as commercial license. Many companies use JUCE for their commercial plugins. Such as Arturia, Korg etc. Let’s have a look what is GPL, In this article I am referring to GPL v2. And IANAL!
What is GPL?
Wikipedia writes about GPL:
The GNU General Public License (GNU GPL or GPL) is the most widely used free software license, which guarantees end users (individuals, organizations, companies) the freedoms to run, study, share (copy), and modify the software… The GPL is a copyleft license, which means that derived works can only be distributed under the same license terms. This is in distinction to permissive free software licenses, of which the BSD licenses and the MIT License are the standard examples. GPL was the first copyleft license for general use.
In an article Understanding Open-Source Licensing the GPL is described in these simple points:
- anyone can use the code anywhere, in any situation;
- anyone can redistribute the code to anyone else, as long as the source code is included and the distribution license remains the GPL;
- anyone can create a derivative work of the code and redistribute it, as long as the resulting source code is also made available at redistribution time, and as long as the resulting source code is licensed under the terms of the GPL.
Below I present excerpts from license and interesting FAQs provided by GNU.
What is GPL talking about?
Lets firstly clear up what is GPL’s business. As written in paragraph 0. only “… copying, distribution and modification … ” is GPL’s concern. Nothing else. Next important point is definition of derivative work. Which is discussed in article A Consumer’s Review of the General Public License By Phil Albert:
“a. ‘work based on the Program’ means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language.”
Before the colon, a “work based on the Program” is defined as including “derivative works under copyright law.” Following the colon, a “work based on the Program” is defined as “a work containing the Program or a portion of it.” Unfortunately, those two definitions are not the same, because the legal definition of “derivative work” is a term that has been the subject of much case law, and it doesn’t happen to mean “a work containing the [original work] or a portion of it.”
Let’s leave it to lawyers.
From the distribution point of view one of strong concern of GPL is that end user “should know”. So when you distribute program under GPL – give a license!
give any other recipients of the Program a copy of this License along with the Program.
Can software installers ask people to click to agree to the GPL? If I get some software under the GPL, do I have to agree to anything? (#ClickThrough)
Some software packaging systems have a place which requires you to click through or otherwise indicate assent to the terms of the GPL. This is neither required nor forbidden. With or without a click through, the GPL’s rules remain the same.
Merely agreeing to the GPL doesn’t place any obligations on you. You are not required to agree to anything to merely use software which is licensed under the GPL. You only have obligations if you modify or distribute the software. If it really bothers you to click through the GPL, nothing stops you from hacking the GPLed software to bypass this.
I would like to bundle GPLed software with some sort of installation software. Does that installer need to have a GPL-compatible license? (#GPLCompatInstaller)
No. The installer and the files it installs are separate works. As a result, the terms of the GPL do not apply to the installation software.
Reading last sentence first give us good starting point for understanding this section:
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
From the developer point of view there is this important point:
You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change….
A) point is for developers – we can distribute modified program under this licence if we clearly stated that we modified the file and when!
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
B) point speaks again about distribution. But there is a following note from the same paragraph:
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. …
The whole work should be licensed under GPL – but we can reasonably separate the parts but we need to distribute them separately as well!
This paragraph talks about distribution of source code. If we distribute executable we need to distribute source code as well. Source code is defined as:
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable.
So we need to distribute complete source code. Really all? Well there is only one exception:
However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
There are many ways how the source code can be distributed. But now is mostly important this note:
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
Can we distribute source and executable through our website.
I’m writing a Windows application with Microsoft Visual C++ (or Visual Basic) and I will be releasing it under the GPL. Is dynamically linking my program with the Visual C++ (or Visual Basic) runtime library permitted under the GPL?(#WindowsRuntimeAndGPL)
You may link your program to these libraries, and distribute the compiled program to others. When you do this, the runtime libraries are “System Libraries” as GPLv3 defines them. That means that you don’t need to worry about including their source code with the program’s Corresponding Source. GPLv2 provides a similar exception in section 3.
You may not distribute these libraries in compiled DLL form with the program. To prevent unscrupulous distributors from trying to use the System Library exception as a loophole, the GPL says that libraries can only qualify as System Libraries as long as they’re not distributed with the program itself. If you distribute the DLLs with the program, they won’t be eligible for this exception anymore; then the only way to comply with the GPL would be to provide their source code, which you are unable to do.
Is making and using multiple copies within one organization or company “distribution”? (#InternalDistribution)
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.
However, when the organization transfers copies to other organizations or individuals, that is distribution. In particular, providing copies to contractors for use off-site is distribution.
I’d like to modify GPL-covered programs and link them with the portability libraries from Money Guzzler Inc. I cannot distribute the source code for these libraries, so any user who wanted to change these versions would have to obtain those libraries separately. Why doesn’t the GPL permit this? (#MoneyGuzzlerInc)
There are two reasons for this. First, a general one. If we permitted company A to make a proprietary file, and company B to distribute GPL-covered software linked with that file, the effect would be to make a hole in the GPL big enough to drive a truck through. This would be carte blanche for withholding the source code for all sorts of modifications and extensions to GPL-covered software.
Giving all users access to the source code is one of our main goals, so this consequence is definitely something we want to avoid.
More concretely, the versions of the programs linked with the Money Guzzler libraries would not really be free software as we understand the term—they would not come with full source code that enables users to change and recompile the program.
… it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
As I understand this section it depends on author whether it is possible to distribute using another license system.
If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this.
If you want to use a program in different circumstances contact author.
- Give any other recipients of the Program a copy of this License along with the Program.
- We can distribute modified program under this licence if we clearly stated that we modified the file and when we modified them.
- The whole work should be licensed under GPL – but we can reasonably separate the parts but we need to distribute them separately as well.
- The installer and the files it installs are separate works.
- So we need to distribute complete source code. Exception is:
the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
- Speaking about Microsoft Redistributables:
You may not distribute these libraries in compiled DLL redistributable
When the organization transfers copies to other organizations or individuals, that is distribution. In particular, providing copies to contractors for use off-site is distribution.
- If you want to use a program in different circumstances contact author.