The Story of the GPL

Copyleft

Article from Issue 200/2017
Author(s):

The GNU General Public License was born of the simple idea that freedom matters. Yet this simple tool for protecting freedom has another important feature that makes it even more powerful, and that is the ability to build communities.

The scene is 1983, and the high tech world is changing. Computers have been around in some form for a generation, but they are rapidly evolving from the room-sized behemoths of the past into smaller, more versatile systems. Competition is increasing and prices are dropping. And as prices drop, hardware vendors look for other sources of revenue. Corporations start to think of software as a product – independent of the hardware platform. Whole companies, like Microsoft, rise to prominence selling software alone and don't even bother with hardware.

Through this era, the companies that sold software started to become very particular about the rules for using that software, and source code started to become something like a trade secret. When you bought software, you didn't really own anything. You bought a license to use an executable binary, and you didn't even have a good way of knowing what was on that binary.

This new reality was not appealing to the community of programmers who were accustomed to tinkering with computers – in fact, the ability to shape, direct, and modify programs was the main thing they liked about computers. Many were paid handsomely for becoming part of the corporate computer industry, but a few held fast.

Richard Stallman didn't like the way a whole industry had developed around the strategy of withholding user rights. Another activist might have simply screamed this critique to a government committee or pinned it to the door of a cathedral, but Richard Stallman wasn't just any activist – he was also an accomplished programmer who worked at the MIT Artificial Intelligence Lab. Stallman had already written the famous Emacs editor, and he had "worked extensively on compilers, editors, debuggers, command interpreters, the Incompatible Timesharing System, and the Lisp Machine operating system."

For Stallman the answer was clear: He and those who wanted to join him would build a complete operating system that embodied his vision of freedom for users and programmers. People would then have a choice – they wouldn't have to sign EULAs and NDAs, or accept licenses that took away their rights, just because they didn't have any other options.

Stallman announced the founding of the GNU project though an email announcement on September 27, 1983 [1]. Of course, building a movement for free software required a definition for free software. The GNU project developed a definition [2] that centered around four essential freedoms (numbered from 0 to 3 in characteristically geeky fashion). Stallman described those freedoms as follows:

(0) The freedom to run the program as you wish, for any purpose (freedom 0).

(1) The freedom to study how the program works and change it so it does your computing as you wish. Access to the source code is a precondition for this (freedom 1).

(2) The freedom to redistribute copies, so you can help your neighbor (freedom 2).

(3) The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

Because software permissions are conveyed through a license, Stallman developed a very special software license to go with the GNU project: the GNU General Public License (GPL).

By now almost everyone in the FOSS space is aware of the GPL and its important central tenet: If you distribute a modified version of this software in binary form, you have to send the source code along with it, so others can also make improvements, and so everyone (at least theoretically) can see exactly what the code is doing.

This simple and elegant innovation was playfully christened the copyleft protection, because it was supposedly a left-wing version of the copyright. Volunteer programmers were reluctant to donate their time for writing code that would one day be the "property" of someone else, but the GPL gave them assurance that their work would always be available to other programmers – not just in the next release, but always, in whatever later form it would take.

Coding once again became a community activity – as it had been in the days before the proprietary license era, and the growing power of the Internet meant these growing communities of developers could communicate from all over the world.

Using the power of the GPL, Stallman and other free software programmers began to build the system of components that would make up the GNU system. According to the GNU website [3], "By 1990 we had either found or written all the major components except one – the kernel. Then Linux, a Unix-like kernel, was developed by Linus Torvalds in 1991 and made free software in 1992. Combining Linux with the almost-complete GNU system resulted in a complete operating system: the GNU/Linux system."

In his autobiography Just for Fun [4], Linus recalls hearing Stallman give a speech in Helsinki in 1991, remarking that "In Richard I saw, for the first time in my life, the stereotypical longhaired, bearded hacker type. We don't have them in Finland." Torvalds goes on to state, "I guess something from his speech must have sunk in, because a year later, Linux was licensed under the GPL."

Linus had never wanted to make money on Linux. The first license he put on Linux stated that Linux could circulate freely but could not be sold. The license also had its own version of the copyleft, mandating that changes to the code should circulate with source code form. But Linus soon ran into trouble, "By February 1992, in was not uncommon for folks to attend Unix users meetings armed with floppies containing Linux. People started asking if they could charge, say, $5 dollars just to cover the cost of the disk and their time. The trouble was, that was a violation of my copyright."

The GPL offered a much more subtle solution. According to the terms of the GPL, "You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee." The nature of that fee is not explained, however, because the source code is always available, the fee tends to reflect the actual cost of providing the service (with some reasonable markup for convenience). No one can corner the market or charge a monopoly price, because if anyone tries to charge too much, someone else could just take the code and offer the same service.

Linux adopted the GPL in 1992. Linus adds that part of his reason for adopting the GPL was that he had "…stood on the shoulders of giants," in using free tools from the GNU project while building Linux. In particular, he highlights the importance of the GCC compiler in his description of why he went with the GPL.

With a complete operating environment, a kernel, and a license that preserved innovation for the whole community, the GNU system took off. Soon startup companies, and even large corporations, were investing in it. And somewhere in the explosion, the buzz around the Linux kernel started to overwhelm the careful framework that had been put in place by the GNU project, and the whole system came to be known as Linux. To this day, the Free Software Foundation (FSF) formally objects to the name "Linux" for the whole system, preferring the name GNU/Linux to indicate the Linux kernel with GNU userland, libraries, and compiler. The popular belief is that the FSF wants to keep "GNU" in the name to receive credit for their work, which is no doubt part of it (and a legitimate concern), but they also believe strongly that the emphasis should remain on the freedoms that the GNU project represents [5]. Linux is just software; GNU is a vision.

Versions

The first version of the GPL was released on February 25, 1989. The "General" in "General Public License" reveals the original intent of the license, which was to provide a general solution for previous copyleft licenses associated with other GNU software, such as the GNU C compiler, glibc, and the Emacs editor. GPLv2 [6] appeared a couple years later in 1991. The most important change with version 2 was Section 7, which is also sometimes called the "Liberty or Death" clause. The clause states:

"If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all…"

One of the issues with version 1 was that, in the case where the license conflicted with other licenses, patents, or contractual obligations, users would choose to simply ignore the conflicting clause but still continue to use the software. Section 7 stated unambiguously that the user is forced to obey all parts of the license, and if other obligations conflict with the terms of the GPL, then the user should not distribute the code at all.

GPL 2 was the GNU project's go-to license for many years, and it is still the official license for many free software projects, including the Linux kernel. But the computer industry was changing, and the FSF could see a need to change with it. In 2005, the foundation announced that work would begin on a new version of the GPL. GPLv3 appeared in 2007 after extensive committee deliberations and input from the free software community, as well as companies that used and supported free software.

The FSF describes GPLv3 as follows, "The most recent version protects users from three recent threats:

Tivoization: Some companies have created various different kinds of devices that run GPLed software, and then rigged the hardware so that they can change the software that's running, but you cannot. If a device can run arbitrary software, it's a general-purpose computer, and its owner should control what it does. When a device thwarts you from doing that, we call that tivoization. Laws prohibiting free software: Legislation like the Digital Millennium Copyright Act and the European Union Copyright Directive make it a crime to write or share software that can break DRM (Digital Restrictions Management). These laws should not interfere with the rights the GPL grants you.

Discriminatory patent deals: Microsoft [was, at the time] telling people that they will not sue free software users for patent infringement – as long as you get the software from a vendor that's paying Microsoft for the privilege. Ultimately, Microsoft is trying to collect royalties for the use of free software, which interferes with users' freedom. No company should be able to do this." [7] GPLv3 also addressed some license compatibility issues with the Apache license, the Affero license, and others.

GPLv3 embodied the FSF's vision for the new millennium, however, some developers believed it went a step too far. The Linux kernel community, and some other development efforts, opted to remain with GPLv2, thus creating the world of two GPLs we know today. Linus Torvalds would later remark, "In some ways, Linux was the project that really made the split clear between what the FSF is pushing, which is very different from what open source and Linux has always been about, which is more of a technical superiority instead of a religious belief in freedom…So, the GPL Version 3 reflects the FSF's goals and the GPL Version 2 pretty closely matches what I think a license should do and so right now; Version 2 is where the kernel is." [8]

Today, both GPLv2 and GPLv3 are supported and defended by the FSF, and they both have the same secret ingredient that keeps the code free: the copyleft.

The GPL also supports other licenses that form parts of the complete the GPL ecosystem, including:

  • Lesser GPL (LGPL): A license intended for use with software libraries, the LGPL still offers a strong copyleft for modification and distribution, but it is more relaxed than the standard GPL for allowing linking with software with a wider range of license types.
  • GNU Documentation License: A license intended for documentation projects, to ensure that the license for the instructions is never more restrictive than the license for the software. Richard Stallman's biography Free as in Freedom is covered by the GNU Documentation license. See the excerpt on page 20. The license is reprinted on page 25.
  • GNU Affero Public License: A GPL-like license that adds an additional term requiring that users who interact with a program over a network have access to the source code. The Affero license was developed because the modern concept of a web service does not depend upon the "distribution" of the program, which is the trigger for requiring the availability of source code in the original GPL.

See the extensive information and commentary at the GNU website [9] for more on licenses supported and endorsed by the FSF.

Other Free Licenses

The GPL was hugely important in the evolution of Free Software Licenses, but it isn't the only approach. Although the FSF has long championed the copyleft protection, which ensures that future versions of the software will be distributed under the same free license, the copyleft isn't mentioned in the FSF's four essential freedoms (described previously in this article). It is possible to create a license that embodies all the four essential freedoms without placing restrictions on how the code will be used later. Non-copyleft free licenses, which the FSF (and others) call permissive licenses, are another important feature of the free software landscape.

Black Duck Software, which tracks open source license usage, ranks the frequency of licenses used in open source projects [10]. The top six licenses in the widely quoted Black Duck study are shown in Table 1. According to Black Duck, the information in Table 2 comes from the analysis of "over 2,000,000 open source projects from over 9,000 forges and repositories."

Table 1

Top 6 Open Source Licenses per Black Duck

License

Share

Copyleft/Permissive?

MIT License

32.2%

permissive

GPLv2

17.75%

copyleft

Apache 2.0

14.26%

permissive

GPLv3

7.47

copyleft

BSD 2.0 (3-clause, new or revised)

5.5

permissive

ISC

5.5

permissive

Table 2

GNU/Linux Distros Endorsed by GNU

Name

Description

URL

Blag

Fedora-based free distro

http://www.blagblagblag.org/

Dragora

Independent GNU/Linux distribution based on concepts of simplicity

http://dragora.org/repo.fsl/doc/trunk/www/index.md

Dynebolic

GNU/Linux distro with special emphasis on audio and video editing

https://www.dyne.org/software/dynebolic/

gNewSense

Debian-based distro with sponsorship from the FSF

http://www.gnewsense.org/

GuixSD

All-free distro built around the Guix package manager

https://www.gnu.org/software/guix/

Musix

Knoppix-based system with the emphasis on audio production

https://musixdistro.wordpress.com/

Parabola

Arch-based system that prioritizes simple package and system management

https://www.parabola.nu/

Trisquel

Ubuntu-based distro oriented toward "small enterprises, domestic users, and educational centers"

https://trisquel.info/

Ututo XS

Gentoo-based distro that was the first fully free GNU/Linux recognized by the GNU project

https://trisquel.info/

Overall, the GPL-based licenses hold approximately 33% of the market, which is down from over 50% a few years ago. (It should be noted that the Black Duck figures are not universally accepted – some observers have challenged the Black Duck methodology.) As a means of studying the trend, however, it appears that the total number of GPL-licensed projects is up, but the percentage of projects opting for a GPL-style license is down over the last few years.

Many factors undoubtedly contribute to the decline in the percentage of GPL-based licenses, and any definitive diagnosis would be purely speculation, but a couple potential influences are worth mentioning. First is that, although GPL programs have been inhabiting free software repositories for years, GPL-licensed programs do not fit easily into the contemporary concept of an iTunes-style for-profit App Store. Also, the complexity of understanding the interaction of the GPL with other license types could be intimidating for many smaller projects. (See the box entitled "Permissive Licenses: A Closer Look.")

Permissive Licenses: A Closer Look

If GPL is so powerful, why don't all free software projects use it? It turns out that many FOSS developers, many of whom would claim as much commitment to the principles of free software as their GPL counterparts, prefer a permissive license such as the Apache, MIT, or BSD license to the copyleft protections offered by the GPL. These permissive licenses all qualify as free software under the guidelines of the GNU project and the FSF, but they represent a wholly different philosophy.

The BSD Advantages page of the FreeBSD website [11] cites an Apache project document to describe the benefits of a permissive license. "This type of license is ideal for promoting the use of a reference body of code that implements a protocol for common service…many of us wanted to see HTTP survive and become a true multiparty standard, and we would not have minded in the slightest if Microsoft or Netscape chose to incorporate our HTTP engine or any other component of our code into their products, if it helped further the goal of keeping HTTP common…All this means that, strategically speaking, the project needs to maintain sufficient momentum, and that participants realize greater value by contributing their code to the project, even code that would have had value if kept proprietary."

The GPL adds some legal complications that make it more complicated to integrate with other software. According to the FreeBSD project, "Developers tend to find the BSD license attractive as it keeps legal issues out of the way and lets them do whatever they want with the code. In contrast, those who expect others to evolve the code, or who do not expect to make a living from their work associated with the system (such as government employees), find the GPL attractive, because it forces code developed by others to be given to them and keeps their employer from retaining copyright and thus potentially 'burying' or orphaning the software. If you want to force your competitors to help you, the GPL is attractive."

Through the years, code from the permissive BSD projects has made its way into many proprietary systems. Mac OS and Solaris are both originally based on BSD code. Microsoft reportedly integrated BSD's TCP/IP implementation into Windows. The copyleft viewpoint would regard these code appropriations as a loss for the community. Permissive proponents see it differently: by making it easy to adapt and integrate these components with other systems, they are spreading the benefits of free-software-based community development to a wider audience. Apple thus became invested in Unix, and Microsoft became a proponent of standards-based TCP/IP networking, rather than having to force the world to use its outdated proprietary protocols such as NetBEUI and its in-house, reverse-engineered version of the Novell NetWare protocols.

According to the FreeBSD community, "The question why should we help our competitors or let them steal our work?" comes up often in relation to a BSD license. Under a BSD license, if one company came to dominate a product niche that others considered strategic, the other companies can, with minimal effort, form a mini-consortium aimed at reestablishing parity by contributing to a competitive BSD variant that increases market competition and fairness. This permits each company to believe that it will be able to profit from some advantage it can provide, while also contributing to economic flexibility and efficiency."

The GPL lends itself to large projects that keep the community working together on a single code base. Permissive licenses are better suited for smaller, collaborative projects that serve as a core or incubator for a larger ecosystem that might include proprietary implementations.

The copyleft protection of the GPL allowed Linux to become bigger and more popular than any of the permissively licensed BSD variants. However, BSD, with its permissive license and easy integration, played a role in spreading the gospel of Unix and standards-based programming to build the world in which Linux could flourish.

Another factor that has entered into the conversation over the past few years is the privacy and security concerns associated with code you can't read or see. As Eben Moglen of the Software Freedom Law Center says (see the interview elsewhere in this issue), if you can't see the code, you don't really know if your phone is spying on you or not. Although the BSDs are known as extremely secure systems (and verifiably so, since they are distributed under a free software license), the fact that the code can be removed from open source distribution means you can never really be sure where the code will end up and whether proprietary derivatives will be used in a way that respects user privacy.

Another factor could be that proprietary software vendors have found ways to encourage the "free" (as in beer) circulation of their programs without fully granting the rights embodied in the FSF's four essential freedoms. (See the box entitled "What is Free?")

What is Free?

A GNU/Linux distribution might contain hundreds (or even thousands) of different programs or software components. Most distros are designed to start up easily on a wide range of hardware systems and open a wide range of files without complication. For easier "out-of-the-box" functionality, these distros might contain firmware or drivers that are not free software. Some distributions also contain non-free multimedia codecs that allow the system to play music and video encoded in proprietary formats.

Other Linux systems make an effort to keep their contents free of binary blobs and other non-free software. If you really want these non-free components, you could always install them yourself later, but by creating an environment where proprietary software is excluded by default, the users of these all-free systems live out their values, projecting a vision of a world in which proprietary licenses are unnecessary and out of place. They also provide an incentive for hardware vendors step up to the challenges of providing free drivers. If everyone used an all-free system, vendors would not be able to continue to circulate non-free drivers in binary-only form.

Still, freedom can be in the eye of the beholder. Even the quintessential all-free GNU/Linux distro Debian is not endorsed by the GNU project because it maintains a separate repository of non-free components and thus, according to the GNU project, blurs the line between what is and isn't included with the distribution.

The list of distributions fully endorsed by the GNU project for PC-grade computers [12] is actually quite small and doesn't really contain any of the popular distros currently considered "mainstream" (see Table 2).

Ultimately, however, the number of projects is not necessarily the best indicator of a license's importance. The list of iconic free software projects licensed under the GPL is quite impressive by any standards. In addition to the Linux kernel, glibc, and the GCC, other projects include Samba, Drupal, Gimp, Bash, Gnome, and countless other inhabitants of a standard GNU/Linux system.

Conclusion

It is clear that the Linux kernel has gone places that Linus Torvalds never expected when he started to work on it. On the other hand, the free software movement is exactly what Richard Stallman would have expected. From the beginning, his goal was to change the world, and it is easy to argue that he has succeeded in creating a new vision of freedom that stands in opposition to the corporatization of the software industry.

However, no one at the FSF believes the task is complete. Too many systems still use proprietary software, and new threats to privacy and security make it more important than ever to keep the source code for systems running on phones, computers, electronic gadgets, and voting machines free and available for study. As the FOSS community rallies to meet a new generation of challenges, they will bring along an important tool: the GNU GPL and the powerful copyleft protection.

Infos

  1. GNU project announcement: https://www.gnu.org/gnu/initial-announcement.html
  2. Free Software Definition: https://www.gnu.org/philosophy/free-sw.html
  3. Overview of the GNU system: https://www.gnu.org/gnu/gnu-history.html
  4. Torvalds, Linus, and David Diamond. Just for Fun: The Story of an Accidental Revolutionary. HarperBusiness, 2001
  5. "What's in a Name?" by Richard Stallman: https://www.gnu.org/gnu/why-gnu-linux.html
  6. GPLv2: https://www.gnu.org/licenses/gpl-2.0.html
  7. A Quick Guide to GPLv3: https://www.gnu.org/licenses/quick-guide-gplv3.html
  8. "Torvalds Still Keen on GPLv2": http://www.internetnews.com/dev-news/article.php/3720371/Torvalds+Still+Keen+On+GPLv2.htm
  9. Various licenses and comments about them: https://www.gnu.org/licenses/license-list.html#SoftwareLicenses
  10. Black Duck's top open source licenses: https://www.blackducksoftware.com/top-open-source-licenses
  11. BSD advantages: https://www.freebsd.org/doc/en/articles/bsdl-gpl/bsd-advantages.html
  12. GNU project's list of free GNU/Linux distributions: https://www.gnu.org/distros/free-distros.html

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy Linux Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters

Support Our Work

Linux Magazine content is made possible with support from readers like you. Please consider contributing when you’ve found an article to be beneficial.

Learn More

News