I never expected to be a programmer. However, due to the demands of doing data analysis on the computer and my general interest in computer software and Linux, I write code on a daily basis, whether they be in R, bash, python, or even C/C++. I would have to say I learn, use, and build software from what’s already out there, in particular, open source software. Since others are generous to share their code, I of course am willing to share my code. Most of the code I run by are licensed under the GNU General Public License, so it’s important for me to understand my rights when using GPL licensed software and when I release software under GPL.
Wikipedia is a first-stop reference that explains GPL and it’s history. First, the user can use the software freely for any purpose; however, there is no WARRANTY from the copyright holder. The user can even modify the software for their own use. If the user distributes the modified, it must be licensed under GPL or a GPL-compliant license. Copyleft is an important concept. That is, GPL uses copyright law to enforce the fact that the user must distribute (or offer in writing the ability to obtain) the derived or modified source code if the user chooses to distribute the software (e.g., in binary form). This is beneficial to the software community and society in general. It is this requirement that many proprietary software maker refrain from building off GPL software (Apple’s Mac OS X is derived from FreeBSD as the BSD license allows for distribution of derived, closed source software). If the software is for private use (i.e., no distribution), then the user is not obligated to release the source code. This article further explains what it means to use and modify the software. Note that GPL does not restrict the commercialization of the software; i.e., you can charge a fee for the software.
- the freedom to use the software for any purpose,
- the freedom to change the software to suit your needs,
- the freedom to share the software with your friends and neighbors, and
- the freedom to share the changes you make.
UPDATE 8/29/2011 This page describes how one can combine software with different open source licenses of differing permissive restrictions.