What is FOSS?
Sun 24 November 2024
Note: This article was originally written last December, and was sidelined because I didn't feel it was finished. Reading through it this morning, I realized reason that I never "finished" it is because the next step would've been to write a 1280-word chapter, which is no small feat. But honestly, I think what I have here now is quite good, and I'm just going to publish it as-is.
On the off chance that someone un-nerdy should happen upon my blog and reads one of many articles where I discuss "FOSS," I thought it prudent to write an explainer on what FOSS is.
Content Warning/Disclaimer: This article discusses the contributions of a person that is known to be controversial, who has espoused controversial and even arguably immoral/unethical opinions in the past. This article does not seek to condemn or exonerate anyone, but rather discuss historical facts as they occurred.
Important note: This article will be structured in a progressive (or fractal) pattern. That means that each successive section of the article will go into more detail and elaborate on the previous, hopefully without re-treading any previously covered ground. Because of this structure, you may (if you wish) stop reading at any point where you feel satisfied with the depth of information you have read so far. I've always wanted to see this kind of structure used in an article or video, so here we go!
Level 0 (10 words) — The acronym
FOSS is an acronym/initialism for "Free and Open Source Software."
Level 1 (20 words) — The basic ethos
FOSS is software where the source code that generates the software is available for inspection, review, sharing, and even modification.
Level 2 (40 words) — The Dark Ages
Most software is distributed as only an executable (or an online service), which means that nobody can inspect the functioning of the program to see what exactly it does, and make sure that it does not include any nefarious functionality.
Level 3 (80 words) — The beginning
The name "FOSS" is an uneasy marriage of two similar, but conflicting ideologies: "Free Software," and "Open Source Software."
"Free Software" was started in the mid-80s by Richard M. Stallman (rms), who was annoyed that the manufacturer of a printer at his university (MIT) refused to distribute the source code to the printer's driver (the software that allowed the computer to interface with the printer). They stonewalled any attempts to procure the source code, to analyse it or improve it.
Level 4 (160 words) — The frustration
Without access to the source code of the printer driver, he was unable to properly diagnose and improve the way it worked. He was forever stuck with the software as it functioned at that moment, except for the scant few updates he might receive from the printer's manufacturer, without any guarantees of when those updates would come, how much the software's functionality would improve, or even if the updates would be any better than the previous version, or regress and become worse than before.
This attitude flew in the face of the "Hacker Ethic" that was nurtured at the MIT Lab. Note, "Hacker" here refers to a culture of self-driven and self-educated computer enthusiasts, and not to illegal and unethical activities relating to the forced seizure and use of private data. As the story goes, unable to secure the source for the printer driver, Stallman set out to reverse-engineer it and provide his own, better, "free" driver for the community.
Level 5 (320 words) — The answer
The printer driver issue was a clear indicator of what future dealings with software companies would be like. Even though Xerox (the manufacturer) was a hardware (not software) company, and the source was of little use to their competitors, Xerox held their software cards close to their chest, and weren't interested in the community's desire to improve it. The printer was the product, the university the consumer, and the company had no interest in the community's ability to foster the software on their own and improve it. The software would remain proprietary, and improvement impossible. This giant was not letting go of his supposed golden goose, not even for a moment.
Xerox' petulance spurred rms on to try to re-implement not only the printer driver as "Free Software," but the entire UNIX operating system itself, which at that time (the mid-1980s) was still a very proprietary product of AT&T and was licensed to only a few institutions and companies. There was no such thing as a free-to-use UNIX outside of a handful of universities.
In mentioning "Free Software" as I have several times so far in this article, I must now stop and explain something that confuses a lot of people early on. "Free Software" does not mean "Software that has a price tag of $0.00." In fact, one of rms' early Free Software "products," Emacs (a text editor *cough* operating system *cough* plan for world domination) was distributed on magnetic tapes, which he sold. The difference here being that he made no restrictions on the distribution, use, and sharing of the software (we will get into the 4 freedoms in the next section).
"Free Software" means "Software that is free," not "Software that is given away for free." Or as many people like to put it, "It's free as in speech, not free as in beer." The freedom being referred to is the software's ethical freedom, not the price.
Level 6 (640 words) — Progress
To fast-forward through a decade and a half of history, rms' Free Software projects continued, including Emacs and GNU — the project to re-write a UNIX-compatible and free operating system from scratch. (GNU is a "recursive acronym" for "GNU's Not Unix" — a built-in disclaimer that turned out to be wise, if you study the history of BSD (which is outside the scope of this article). The GNU project included many programs and utilities that reproduced the functionality and behavior of programs included in UNIX, mainly a lot of text-processing commands and system utilities.
As the GNU project grew, it slowly reproduced all of the UNIX operating system as free software, except for arguably the most critical piece: the operating system kernel. For those not familiar with operating systems, the kernel (very aptly named) is the core of the functionality of the operating system, and manages all of the low-level things an operating system needs to do, like driving hardware devices, dealing with file systems, and managing processes.
In 1991, a Finnish univeristy student named Linus Torvalds released a Unix-like operating system kernel project called "Linux" onto the internet, and the rest, as they say, is history. While it was extremely limited and "hobby grade" at first, the project grew and took on contributors because of the Free Software license it was distributed with: the GNU Public License (GPL) allowed other people to make copies of Linux, inspect how it worked (read the source code), distribute copies of both the binary (executable) and source code, and even make their own customized versions (with a different name).
As I have previously stated, "Free Software" isn't software available for free, but software that is free, or more clearly, software the preserves the freedom of the user. The Free Software definition outlines the following "Four Freedoms:"
- Freedom 0: The freedom to run the software as you see fit (without limitations or stipulations)
- Freedom 1: The freedom to read the software's source code, study/analyse how it works, and change it to suit your needs or likes.
- Freedom 2: The freedom to share copies of the software and source with others.
- Freedom 3: The freedom to distribute your own modified copies of the software (with source) to others.
It's important to note that distribution of the software in any way must include or at least provide access to the software's source. The freedoms given must extend to those you may pass the software and source on to. This is an important difference between the GPL-style of Free Software licenses and others (which will be discussed later). If I release a software called "Widget Central" under a Free Software license such as the GPL (GNU Public License), and I allow you to take the software and source, share it, modify it, and release your own modifications, you are obligated by that license to afford all those that use your software the same rights.
A common sticking point, especially in the early days of FOSS' popularity, was companies using Free Software source code, modifying it, and selling or distributing their modifications as binary-only executables, without the source. By doing this, those companies were enjoying the four freedoms of the GPL, but not allowing their users to do the same. Through advocacy, grassroots action, and yes, extensive litigation, the business world was gradually educated on the benefits and pitfalls (and etiquette/ethics) of Free Software.
Free software grew and thrived because it was free. A free (to procure) piece of software can become very popular — like WinRAR, Adobe Reader, mIRC, or Irfanview. But Free Software can grow in not just popularity but in quality and completeness because the free and open nature of the software invites participation into the process of creating the software, not just inviting participation into the use of the software.
Category: Tech Tagged: BSD Computing Content Warning Ethics FOSS (Free and Open Source Software) FreeBSD Linux Non-religious post Philosophy UNIX WritingMonth