«Copyleft and the GNU General Public License: A Comprehensive Tutorial and Guide c Copyright 2003–2005, 2008, 2014–2015 Bradley M. Kuhn. c ...»
Copyleft and the
GNU General Public License:
A Comprehensive Tutorial
Copyright 2003–2005, 2008, 2014–2015 Bradley M. Kuhn.
Copyright 2014–2015 Anthony K. Sebro, Jr.
Copyright 2014 Denver Gingerich.
Copyright 2003–2007, 2014 Free Software Foundation, Inc.
Copyright 2008, 2014 Software Freedom Law Center.
The copyright holders grant the freedom to copy, modify, convey, adapt, and/or redistribute this work (except Appendices B–E) under the terms of the Creative Commons Attribution Share Alike 4.0 International License. A copy of that license is available at https://creativecommons.org/licenses/by-sa/4.0/legalcode.
Appendices B–E include copies of the texts of various licenses published by the FSF, and they are all licensed under the license, “Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.”. However, those who seek to make modiﬁed versions of those licenses should note the explanation given in the GPL FAQ.
As a public, collaborative project, this Guide is primarily composed of the many contributions received via its public contribution process. Please review its Git logs for full documentation of all contributions, and Appendix A contains a list of third-party works from which some material herein was adapted.
The most recent version is available online at https://copyleft.org/guide/. Patches are indeed welcome to this material. Sources can be found in the Git repository at https://k.copyleft.org/guide/.
CONTENTSPreface vii I Detailed Analysis of the GNU GPL and Related Licenses 1 1 What Is Software Freedom? 3
1.1 The Free Software Deﬁnition.................................... 3 1.1.1 The Freedom to Run..................................... 4 1.1.2 The Freedom to Change and Modify............................ 4 1.1.3 The Freedom to Copy and Share........................
This tutorial is the culmination of nearly a decade of studying and writing about software freedom licensing and the GPL. Each part of this tutorial is a course unto itself, educating the reader on a myriad of topics from the deep details of the GPLv2 and GPLv3, common business models in the copyleft licensing area (both the friendly and unfriendly kind), best practices for compliance with the GPL, for engineers, managers, and lawyers, as well as real-world case studies of GPL enforcement matters.
It is unlikely that all the information herein is necessary to learn all at once, and therefore this tutorial likely serves best as a reference book. The material herein has been used as the basis for numerous live tutorials and discussion groups since 2002, and the materials have been periodically updated. They likely stand on their own as excellent reference material.
However, if you are reading these course materials without attending a live tutorial session, please note that this material is merely a summary of the highlights of the various CLE and other tutorial courses based on this material. Please be aware that during the actual courses, class discussion and presentation supplements this printed curriculum. Simply reading this material is not equivalent to attending a course.
Detailed Analysis of the GNU GPL and Related Licenses 1 This part of the tutorial gives a comprehensive explanation of the most popular Free Software copyright license, the GNU General Public License (“GNU GPL”, or sometimes just “GPL”) – both version 2 (“GPLv2”) and version 3 (“GPLv3”) – and teaches lawyers, software developers, managers and businesspeople how to use the GPL (and GPL’d software) successfully both as a community-building “Constitution” for a software project, and to incorporate copylefted software into a new Free Software business and in existing, successful enterprises.
To beneﬁt from this part of the tutorial, readers should have a general familiarity with software development processes. A basic understanding of how copyright law applies to software is also helpful. The tutorial is of most interest to lawyers, software developers and managers who run or advise software businesses that modify and/or redistribute software under the terms of the GNU GPL (or who wish to do so in the future), and those who wish to make use of existing GPL’d software in their enterprise.
Upon completion of this part of the tutorial, readers can expect to have learned the following:
• The freedom-defending purpose of various terms in the GNU GPLv2 and GPLv3.
• The diﬀerences between GPLv2 and GPLv3.
• The redistribution options under the GPLv2 and GPLv3.
• The obligations when modifying GPLv2’d or GPLv3’d software.
• How to build a plan for proper and successful compliance with the GPL.
• The business advantages that the GPL provides.
• The most common business models used in conjunction with the GPL.
• How existing GPL’d software can be used in existing enterprises.
• The basics of LGPLv2.1 and LGPLv3, and how they diﬀer from the GPLv2 and GPLv3, respectively.
• The basics to begin understanding the complexities regarding derivative and combined works of software.
Study of the GNU General Public License (herein, abbreviated as GNU GPL or just GPL) must begin by ﬁrst considering the broader world of software freedom. The GPL was not created in a vacuum. Rather, it was created to embody and defend a set of principles that were set forth at the founding of the GNU Project and the Free Software Foundation (FSF) – the preeminent organization that upholds, defends and promotes the philosophy of software freedom. A prerequisite for understanding both of the popular versions of the GPL (GPLv2 and GPLv3) and their terms and conditions is a basic understanding of the principles behind them. The GPL family of licenses are unlike nearly all other software licenses in that they are designed to defend and uphold these principles.
1.1 The Free Software Deﬁnition The Free Software Deﬁnition is set forth in full on FSF’s website at http://fsf.org/ philosophy/free-sw.html.
This section presents an abbreviated version that will focus on the parts that are most pertinent to the GPL.
A particular user has software freedom with respect to a particular program if that user has the following
• The freedom to run the program, for any purpose.
• The freedom to study how the program works, and modify it
• The freedom to redistribute copies.
• The freedom to distribute copies of modiﬁed versions to others.
The focus on “a particular user” is particularly pertinent here. It is not uncommon for a subset of a speciﬁc program’s user base to have these freedoms, while other users of the same version the program have none or only some of these freedoms. Section 12.2 talks in detail about how this can unfortunately happen even if a program is released under the GPL.
Many people refer to software with these freedoms as “Open Source.” Besides having a diﬀerent political focus from those who call such software by the name “Free Software”,1, those who call the software “Open Source” are often focused on a side issue. Speciﬁcally, user access to the source code of a program is a prerequisite to make use of the freedom to modify. However, the important issue is what freedoms are granted in the license that applies to that source code.
Software freedom is only complete when no restrictions are imposed on how these freedoms are exercised.
Speciﬁcally, users and programmers can exercise these freedoms noncommercially or commercially. Licenses 1 The political diﬀerences between the Free Software Movement and the Open Source Movement are documented on FSF’s
Web site at http://www.fsf.org/licensing/essays/free-software-for-freedom.html.
3 that grant these freedoms for noncommercial activities but prohibit them for commercial activities are considered non-free. The Open Source Initiative (OSI ) (the arbiter of what is considered “Open Source”) also regards such licenses as inconsistent with its “Open Source Deﬁnition”.
In general, software for which any of these freedoms are restricted in any way is called “nonfree” software.
Some use the term “proprietary software” more or less interchangeably with “nonfree software”. The FSF published a useful explanation of various types of software and how they relate to one another.
Keep in mind that none of the terms “software freedom”, “open source” and “free software” are known to be trademarked or otherwise legally restricted by any organization in any jurisdiction. As such, it’s quite common that these terms are abused and misused by parties who wish to bank on the popularity of software freedom. When one considers using, modifying or redistributing a software package that purports to be Open Source or Free Software, one must verify that the license grants software freedom.
Furthermore, throughout this text, we generally prefer the term “software freedom”, as this is the least ambiguous term available to describe software that meets the Free Software Deﬁnition. For example, it is well known and often discussed that the adjective “free” has two unrelated meanings in English: “free as in freedom” and “free as in price”. Meanwhile, the term “open source” is even more confusing, because it appears to refer only to the “freedom to study”, which is merely a subset of one of the four freedoms.
The remainder of this section considers each of each component of software freedom in detail.
1.1.1 The Freedom to Run The ﬁrst tenet of software freedom is the user’s fully unfettered right to run the program. The software’s license must permit any conceivable use of the software. Perhaps, for example, the user has discovered an innovative use for a particular program, one that the programmer never could have predicted. Such a use must not be restricted.
It was once rare that this freedom was restricted by even proprietary software; but such is quite common today. Most End User License Agreements (EULAs) that cover most proprietary software typically restrict some types of uses. Such restrictions of any kind are an unacceptable restriction on software freedom.
1.1.2 The Freedom to Change and Modify Perhaps the most useful right of software freedom is the users’ right to change, modify and adapt the software to suit their needs. Access to the source code and related build and installation scripts are an essential part of this freedom. Without the source code, and the ability to build and install the binary applications from that source, users cannot eﬀectively exercise this freedom.
Programmers directly beneﬁt from this freedom. However, this freedom remains important to users who are not programmers. While it may seem counterintuitive at ﬁrst, non-programmer users often exercise this freedom indirectly in both commercial and noncommercial settings. For example, users often seek noncommercial help with the software on email lists and in user groups. To make use of such help they must either have the freedom to recruit programmers who might altruistically assist them to modify their software, or to at least follow rote instructions to make basic modiﬁcations themselves.
More commonly, users also exercise this freedom commercially. Each user, or group of users, may hire anyone they wish in a competitive free market to modify and change the software. This means that companies have a right to hire anyone they wish to modify their Free Software. Additionally, such companies may contract with other companies to commission software modiﬁcations.
1.1.3 The Freedom to Copy and Share Users share Free Software in a variety of ways. Software freedom advocates work to eliminate a fundamental ethical dilemma of the software age: choosing between obeying a software license and friendship (by giving away a copy of a program to your friend who likes the software you are using). Licenses that respect software freedom, therefore, permit altruistic sharing of software among friends.
The commercial environment also beneﬁts from this freedom. Commercial sharing includes selling copies of Free Software: that is, Free Software can be distributed for any monetary price to anyone. Those who 4 redistribute Free Software commercially also have the freedom to selectively distribute (i.e., you can pick your customers) and to set prices at any level that redistributor sees ﬁt.
Of course, most people get copies of Free Software very cheaply (and sometimes without charge). The competitive free market of Free Software tends to keep prices low and reasonable. However, if someone is willing to pay billions of dollars for one copy of the GNU Compiler Collection, such a sale is completely permitted.
Another common instance of commercial sharing is service-oriented distribution. For example, some distribution vendors provide immediate security and upgrade distribution via a special network service.
Such distribution is not necessarily contradictory with software freedom.
(Section 12.2 of this tutorial talks in detail about some common Free Software business models that take advantage of the freedom to share commercially.) 1.1.4 The Freedom to Share Improvements The freedom to modify and improve is somewhat empty without the freedom to share those improvements.
The software freedom community is built on the pillar of altruistic sharing of improved Free Software.
Historically it was typical for a Free Software project to sprout a mailing list where improvements would be shared freely among members of the development community.2 Such noncommercial sharing is the primary reason that Free Software thrives.