In October, the GNU project and the larger category of Free Software turned 40 years old. This blog explores the impetus and nature of Free Software, the philosophy, projects and licenses involved, how Free Software compares to Open Source Software, and the impact of Free Software and Test Automation.
The Birth of a Movement
The birth pangs of Free Software as recounted in a recent article by Steven J. Vaughn-Nichols:
In the early 1980s, an MIT Artificial Intelligence Laboratory programmer named Richard M. Stallman (RMS) was having trouble with a notoriously unreliable printer, a Xerox 9700. He wanted to modify its software to notify users of its frequent jams. Great idea, but he couldn't get to the source code to make these changes. This ran counter to the Lab's open ethos. So, he decided that software code should be free. Not free in the sense of free beer but free as in free speech.
Angered, RMS wanted users to be free to use, modify, and distribute software. By 1983, this vision had crystallized into a mission: to create a free Unix-like operating system. Thus, GNU, which stands for "GNU's Not Unix," was born.
Stallman, while brilliant, is a challenging personality (to say the least). In 2021, he was expelled from the Free Software Foundation board for misconduct (and later reinstated). However, there's no denying the importance of his achievements, in particular, the concept of Free Software and the family of GNU Public Licenses that enable the Free Software ecosystem, plus a large body of Free Software code authored by him, most significantly the GNU Compiler (gcc) and the GNU EMACs editor.
GNU, by the way, is a recursive acronym for "GNU's Not Unix".
Defining Free Software
GNU.org defines Free Software as
“Software that respects users' freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software. Thus, “free software” is a matter of liberty, not price. To understand the concept, you should think of “free” as in “free speech,” not as in “free beer.”
To qualify as Free Software, code licensing and distribution must observe the Four Freedoms (numbered 0 to 3):
The freedom to run the program as you wish, for any purpose (freedom 0).
The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
The freedom to redistribute copies so you can help others (freedom 2).
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.
These freedoms are embodied in the GNU Public License family (see below). Indeed most (all?) free software is distributed under one of the GNU Public Licenses.
The GNU Project
The GNU project comprises essential code and tools - the "glue" of the larger open source movement, the web, and cloud and beyond:
Multimedia tools and frameworks, e.g., GIMP (which the author uses to create the graphics
in these blogs)
and myriad others, curated together as GNU Packages.
GNU-related / GPL-Licensed Projects
There exist myriad projects distributed under a GPL family license and closely aligned with the GNU project. Visible and important examples include:
Linux: the GNU project originally planned to implement a full operating system or at least a kernel (GNU Herd) but Linux emerged first, stealing Stallman's fire. Given the functionality that Linux platforms inherit from the gamut of GNU projects, Stallman insists that it should be called "GNU Linux".
Git: a distributed version control system that tracks changes across sets of computer files, usually for coordinating work among programmers collaboratively developing source code during software development. Its goals include speed, data integrity, and support for distributed, non-linear workflows (thousands of parallel branches running on different computers)
GNOME Desktop and GTK+: originally part of the GNU project, GNOME is a free and open-source desktop environment for Linux and other Unix-like operating systems. GNOME is built on GNU-family graphical framework called GTK+ (the GNOME Tool Kit), a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs).
Wordpress: a web content management system. It was originally created to publish blogs, Wordpress has evolved to support hosting other web content, including traditional websites, mailing lists and Internet forums, media galleries, membership sites, learning management systems and online stores. In fact, OpenTAP.io is built using a version of Wordpress.
The GNU License Family
Many attribute the success of Linux and other GPL-licensed software packages to their release under GNU family licenses. Choosing a GPL license for a project shows the authors' commitment to freedom and openness.
It is important to understand that GNU licensing is not monolithic: there are multiple individual licenses and historical and special versions of each. This blog is not the proper context for a deep analysis of the GNU General Public License family. Follow the supplied links to learn more about each one.
The GNU General Public License (GPL)
By far the most popular and widely employed GNU license, and the most restrictive. GNU GPL generally requires supply of source for both code explicitly published under it as well as code that references/links to it. Now in its third major revision (GPLv3), its earlier version (GPLv2) still enjoy wide use, most notably in the Linux kernel.
GNU Lesser General Public License
The "Lesser" GPL is sometimes referenced as the "Library GPL" since its treatment of runtime libraries (e.g., glibc) is perhaps its most important application, although there are ample examples of the LGPL applying to stand-alone programs. Unlike its GPL sisters, LGPL licenses enable programs with other licenses, including proprietary code, to reference/link to code distributed under it with minimal disclosure requirements.
The Affero GPL (AGPL) exists to close a perceived loophole in the regular GPL: by using but not (re)distributing the GPL software, deployers are not subject to the underlying copyleft requirement to supply source code.
The AGPL differs from GNU GPL in having an added provision addressing use of software over a computer network. This provision requires that the full source code be made available to any network user of the AGPL-licensed work, that is, the entirely of a web application or cloud code is potentially regarded as a derivative work. This vague and consuming scope of derivation has caused many organizations to simply eschew AGPL-licensed software.
Learn more about GNU GPL licenses here.
All free and open source software depends upon copyright law to enforce compliance. When an author publishes under such a license, they are exercising rights implicit in their copyright - rights to copy, distribute and/or modify, even if a license ends up restricting those rights.
A key innovation in Free Software is the notion of "Copyleft". The GNU project defines Copyleft as
a general method for making a program (or other work) free (in the sense of freedom, not “zero price”), and requiring all modified and extended versions of the program to be free as well.
The Free Software Foundation
The Free Software Foundation (FSF) is a nonprofit with a mission to promote computer user freedom and defend the rights of all software users. The FSF sponsors the GNU Project and also funds and promotes free software development and supports individual free software developers. The FSF holds copyright on a large proportion of GNU projects and other free software holding these assets to defend them from efforts to turn free software proprietary. In support of this defense, the FSF collects thousands of copyright assignments from individual software developers and corporations working on free software, and registers these copyrights with the US copyright office. This assignment and registration ensures that free software distributors respect obligations to pass on the freedom to all users, to share, study and modify the code.
Free Software and Open Source Software
Open source software is software with source code that anyone can inspect, modify, and enhance. At least that is the short definition supplied by Red Hat at opensource.com. A more exhaustive definition lies in the The Open Source Definition as used by the Open Source Initiative (OSI). This ten-part definition is also used by OSI to determine whether a software license qualifies as an open source license.
Stallman takes exception to the definition and approach underlying Open Source, as compared to Free Software:
The terms “free software” and “open source” stand for almost the same range of programs. However, they say deeply different things about those programs, based on different values. The free software movement campaigns for freedom for the users of computing; it is a movement for freedom and justice. By contrast, the open source idea values mainly practical advantage and does not campaign for principles. This is why we do not agree with open source, and do not use that term.
Given the practical overlap of Free Software and Open Source Software, it is useful to compare key aspects of both terms and the movements around them.
|Free Software||Open Source Software|
|Licenses||GPL Family||OSI Licenses, including GPL|
|Emphasis||Ensuring Freedom||Promoting Adoption|
|Nexus||gnu.org, fsf.org||opensource.org and beyond|
FOSS and FLOSS
The super-category covering both Free and Open Source Software is usually termed FOSS, or in some regions FLOSS (Free/Libre Open Source Software).
Free Software and Test Automation
The intersection between Free Software and test automation is relatively narrow with key caveats. Due to the reciprocal requirements of the GNU General Public License, requiring disclosure of GNU source code and code derived from it (and/or linked to it), manufacturers of test instruments, test automation software and of devices under test avoid embedded GNU software in their wares. Instead, they prefer "OEM-friendly" licensed code published under the Mozilla Public License (MPLv2), the MIT License (MIT), the Apache License (APLv2) and other liberal licenses.
Most commonly, GNU-licensed software participates in test automation as follows:
use of GPL-licensed tools to build test code, firmware and applications under test
deployment of embedded Linux and other platforms with explicit rules for safely creating derived works, linking to and running code on the platform
dependencies on libraries published under the Lesser GPL (LGPL) and other LGPL code
code used to implement a service, e.g., on the web and in the cloud (although the Affero GPL license applies to this use case)
other code used in the lab but not redistributed and so not subject most GNU compliance requirements
There exists a small body of testing-oriented code distributed under a GNU license. The most visible is DejaGnu. DejaGnu is a framework for testing other programs, providing a single front-end for all tests. DejaGnu is best described as a library of Tcl procedures for writing test harnesses and other test infrastructure created to test a specific program or tool.
Free Software was once considered radical, even anathema to organizations wishing to preserver rights around intellectual property. When introduced in the 1980s, it was not expected to be particularly significant or even to survive.
Well, survive it has, and has flourished.
The software components and development tools that underly the Internet, the Cloud, mobile phones, automotive technology, IoT and myriad other areas are built on and with Free Software. Organizations of all types - enterprise, device OEMs, service providers and governments - use, integrate and deploy Free Software, mitigating risks to IP (actual and perceived) by managing use cases in context.