A friend today asked me whether I thought that the license for his software project (GPLv3) was potentially keeping people from adopting it. The short answer is is yes, but I figured I could expand on that a bit. And before I get too far: I am not a lawyer, I am not your lawyer, this is not legal advice, please seek competent counsel in your jurisdiction for advice. Instead, I want to talk a bit about why different licenses exist and what they mean.

To begin, why do we have licenses? In the United States (where I live), the law establishes a few different kinds of intellectual property (IP): copyright, trademark, and patents. In each of these areas of law, society is recognizing that there is value people’s creativity. In general, the owner of some IP can decide the rules around anyone else using the IP that they created, subject to some general exclusions that have been carved out by law (fair use for copyright and trademark, and expiration for patents). For anything that isn’t in one of those carved-out exclusions, the term we use to describe permissions the owner grants to another is a license.

Licenses define the terms under which an owner (licensor) grants permissions to someone else (licensee). Licenses can be from one party (individual or company) to another, or to anyone. And the licenser can describe conditions under which the licensee has those permissions and conditions where the permissions go away.

This post is about software projects, so let’s talk more specifically about software licenses. Software licenses typicall cover things like using the software, making modifications, and distributing those modifications. In really broad strokes, we can categorize software licenses as either proprietary (traditional commercial software) or free and open-source. Proprietary licenses are typically granted in exchange for money (for example, purchasing a license to Microsoft Office) though other models exist as well (ad-supported software, shareware, trialware, and freeware). Proprietary licenses typically do not grant permission to make modifications or distribute those modifications. Free and open-source licenses are different; the licensor wants to share their software with others and allow others to make modifications to that software. This can encourage a community-driven project, though not all free or open-source software projects are collaborative.

There are two different terms here for the non-proprietary choices: free and open-source; they represent different approaches to both the philosophy and mechanics of sharing software. Free software (also called libre or copyleft) is generally concerned with enforcing that modifications that others make continue to be distributed under the same terms, while open-source software generally takes the stance that the software can be used or modified for any purpose, and that modifications are not required to be licensed under the same (or similar) terms. Open-source licenses generally impose fewer restrictions and obligations than free software licenses do, and some folks may choose to skip software projects as they don’t want to take on those obligations.

My friend’s project is licensed under version 3 of the GNU General Public License. This is a free software license designed to ensure that modifications remain licensed under the same terms. This license is also sometimes described as a viral license, as there’s a perception that use of a software library or component under those terms can require that the using project also is also licensed under those terms. Warranted or not, some individuals and companies will avoid using a project licensed under those terms.

Picking a software license for a project is ultimately a personal decision: what are your goals for the project? Do you want to share your software without restriction? Do you want to ensure that anyone who modifies your software shares their modifications too? Here are a few good resources to learn more about license choices: