Everyone can use your contributed source code to make money out of it!
Possibly you are surprised now, maybe a little bit shocked. You doubt that this is a fair play - a violation of the Open Source Spirit.
Restart you thinking about terms and expressions like "Open Source", "free", "copyright", etc.!
Take 20 min. to read this article - this time will save you possibly from further surprises - and open your eyes for the possibilities an open source project can give you.
Scenario 1 - Contribution
You work actively on an project and contribute source codes directly, e.g. to the SourceForge CVS.
The project uses the GPL and thus you use this licence, too.
You apply the copyright notice to the files, thus you are clearly the copyright holder.
Scenario 2 - Donation
You have some sourcecodes on your machine, written entirely by yourself. You are the copyright holder of those source codes.
Now you decide to donate those sourcecodes to an Open Source Project.
You publish those sourcecodes to an public location, e.g. a SourceForge CVS. Before doing this, you apply a copyright information and a license to your source codes.
You publish the sources under a licence. A possible license is the GNU General Public License (GPL).
A commercial distribution of software has the main goal of making profit. Furthermore it is implied, that the commercial vendor does not hand out source codes, at least not with strong contracts like NDA's (non disclosure agreement).
The above can be different is several cases. But the general understanding and the general practice is like described.
The general understanding of the word "free" in "Free Software" is as the word "free" in "Free Ticket".
"free" in context of a product is generally understood as "free of charge". This is the same for software.
What is this? - This is something that most people do not understand immediately. It is something new, something different from a commonly known "Free Ticket".
Explanations could clarify what this new "Liberal Ticket" is, what its main differences to "Free Ticket" are.
Liberal Software is something different from "Free Software". Free Software is generally understood as "Free of charge Software".
The GNU Redefinition of "Free"
When GNU talks about "Free Software", it means basicly something like "Liberal Software". Instead of introducing a new terminology, GNU goes the way to redefine "free" in context of "Free Sofware" - creating this way the foundation for many missunderstandings.
New ideas and new ways of thinking require sometimes the use of new terminology. Redefining terminology which is generally understood in a different way is not the most effective and precise solution.
GPL - GNU General Public Licence
Source Codes must be included in any distribution of GPL distributed software. If the source code is not included, the user must be informed about his right and the way to obtain the full source code.
Anyone can distribute a GPL programm and charge an amount for this, as long as the distribution follows the rules of the GPL (most important: providing the full source codes and the full copyright information).
Only the copyright holder of a GPL programm is allowed to licence it under terms and conditions other than the GPL. He can licence it to several vendors under several different licenses.
- License to Vendor A: can publish an similar product under his brand, without the need to provide the source code and to refere the original copyright holder.
- License to Vendor B: has the same conditions as Vendor A, but must refere to the original copyright holder.
This means: the copyright holder of the source codes can set up a commercial distribution under any licence he likes.
If ther are multiple copyright holders, all copyright holders have to agree to set up a commercial distribution under any other licence than GPL.
Modified versions of a GPL programm (Derivative Work) fall under the GPL and must contain the full source code, too.
Anyone can distribute the Dervative Work under the GPL conditions.
No single person can distribute the Derivative Work under an other licence than the GPL.
In agreement, the author of the Derivative Work and the author of the Original Work, can licence the Derivative Work to serveral vendors under several different licenses.
The author of the derivative work can licence his changes to the original author.
The author of the original work can licence his changes to the derivative author.
Necessary Exceptions to the GPL
If e.g. a compiler is publish under the GPL, some practical problems ocour. The users of the GPL licenced compiler will produce applications. For this they will use most possible the libraries delivered with the compiler.
If those libraries are published under the GPL, every programm created with this compiler falls under the GPL - the sourcecode must be opened.
This sounds like a common problem, and GNU has a common solution. The LGPL (the Lesser General Public License).
But the LGPL is only valid for so called shared libraries (e.g. DLL's), which are not directly linked to the main application code.
So, is there any other solution, for libraries which can be linked to the application? Not from GNU directly (for whatever reasons). Open Source projects define some own "exceptions" to the original GNU licenses.
There is a need for a CGPL (Compiler GPL or Creator GPL), which is especially for Software which creates new Software (complier, code generators etc.).