1. Overview
Unix, Linux, BSD, and GNU are four terms that refer to operating systems that share a common ancestry or philosophy.
In this tutorial, we’ll explore the differences between these terms, focusing on their history, diversity, practicality, and terminology.
2. History
In the realm of operating systems, Linux, Unix, BSD, and GNU are the mainstays, each with a unique and rich history. Their historical relationships are shown in this image from Wikimedia:
The evolution of operating systems is even more complex than the above, but let’s break it down into its basic stages:
- Unix was born in the late 1960s
- BSD was born in the late 1970s, building on Unix with enhancements and innovations
- At the same time, the GNU Project, founded by Richard Stallman in 1983, was working on a free Unix-like operating system but lacked a kernel
- In 1991, Linus Torvalds‘ Linux kernel completed the GNU system, creating GNU/Linux
Let’s take a closer look.
2.1. Origins of Unix
Unix is a family of operating systems that began as a project at Bell Labs in 1969, led by Ken Thompson. He was a programmer who had worked on an earlier operating system called Multics but was unhappy with its complexity and limitations. Dennis Ritchie, who created the C programming language for Unix, and other colleagues joined the project and contributed to various aspects of the system.
Initially developed in assembly language, Unix was later rewritten in C, making it easier to port to different hardware platforms.
Its design had a modular and minimalist approach, summarised by Doug McIlroy in Peter H. Salus’ book A Quarter Century of Unix (1994):
- Write programs that do one thing and do it well
- Write programs to work together
- Write programs to handle text streams because that is a universal interface
Unix became widely influential in the fields of computer science, software engineering, and network communications, spawning many variants and derivatives over the years.
2.2. Evolution of BSD
BSD, or Berkeley Software Distribution, was a series of modifications and extensions to the original Unix source code. It was developed and distributed by the University of California, Berkeley, from 1977 to 1995.
BSD has been widely used by academic institutions, research laboratories, and commercial companies for various purposes, including networking, graphics, email, and domain name services.
Influential software projects have grown out of BSD:
- TCP/IP networking, for sending and receiving data packets over a network
- sendmail, a mail transport agent (MTA) that handles email delivery
- Berkeley Internet Name Domain (BIND), a domain name system server that resolves host names to IP addresses
These BSD software projects have had a profound impact on the development of the Internet and the World Wide Web.
BSD also introduced many features that are common in Unix-like systems today, such as virtual memory, job control, the vi editor, and the C shell (csh or tcsh).
2.3. Emergence of Free Software Movement and GNU
The Free Software Movement is a social and ethical movement that promotes the use of free software over non-free software that often harms, spies on, and manipulates its users. Led by Richard Matthew Stallman since 1983, this movement understands free software as a matter of freedom, not price.
One of the movement’s main initiatives was the GNU project, which Stallman started in 1983 to create a completely free operating system. The name GNU is a recursive acronym for GNU’s Not Unix. Stallman quit his job at MIT in January 1984 to work full time on GNU and founded the Free Software Foundation in October 1985.
Stallman also invented the idea of copyleft and created the GNU General Public License, which grants four essential freedoms to every user, as explained in The Foundations of the GPL:
- Use the software for any purpose
- Modify the software to suit the user’s own needs
- Share the software with their friends and neighbors
- Share the changes they make
The GNU Project has developed many tools and programs that are now widely used on all Unix-like systems, such as the GNU Compiler Collection (GCC), the GNU Debugger (GDB), the GNU Emacs editor, and the GNU Core Utilities.
However, the biggest challenge the GNU Project faced in its early years was the lack of a kernel, the core component of an operating system that manages the communication between hardware and software.
2.4. Development of Linux
A hobby project by Linus Torvalds, a student at the University of Helsinki, gave birth to the kernel called Linux in 1991. Torvalds drew inspiration from Minix, a simplified version of Unix created by Andrew Tanenbaum for educational purposes. Linux initially had a restrictive license, but Torvalds later switched to the GNU General Public License (GPL).
The integration of Linux and GNU occurred in 1992 when Torvalds adopted the GPL license for his kernel. This allowed users to combine Linux with the GNU components to create a fully functional and free operating system known as GNU/Linux. This combination of Linux and GNU offered several advantages:
- The flexibility and portability of Linux, which could run on various hardware platforms and devices
- The compatibility and functionality of GNU, which provided a rich set of utilities and libraries for the system
- The freedom and openness of both projects which encouraged collaboration and innovation among developers and users
Since then, GNU/Linux has grown rapidly, gaining popularity and support from programmers around the world. It has also spawned many distributions, which are customized versions of the operating system that cater to different user needs and preferences.
Today, GNU/Linux is one of the most widely used operating systems in the world, running on millions of servers, desktops, laptops, smartphones, tablets, embedded devices, supercomputers, and more. It has had a significant impact on software development, education, science, business, and entertainment.
3. Practicality
In the ever-evolving landscape of operating systems, Unix, Linux, BSD, and GNU are prominent players, each characterized not only by its technical attributes but also by its distinctive philosophical approaches and software licensing models. These core aspects strongly influence how these systems are developed, distributed, and used.
3.1. Software Licensing
Unix licenses are vendor and version-specific, such as the historic AT&T System V or the current IBM AIX and Oracle Solaris. They are often proprietary and restrictive, limiting what users can do or charging fees.
The Linux kernel follows the GPL v.2, the aforementioned copyleft license that requires derivatives to use the GPL v.2 as well. The current version of the GPL license is 3, which is used by the GNU project and most other software, but Linus Torvalds has refused to use it. Fortunately, it’s legal and acceptable to run GPL v.3 and GPL v.2 programs side by side in the same operating system.
About the GNU licenses, there are variations or extensions. For instance, the LGPL allows linking GPL-licensed software with non-GPL-licensed software without changing its license. Another example is the AGPL, which requires sharing the source code of GPL-licensed software on a network server.
BSD licenses derive from the original BSD license, a permissive non-copyleft license that allows developers to include BSD-licensed software in proprietary and closed-source software.
3.2. Differences Today
A common heritage and a set of standards, such as POSIX, unite Unix, BSD, and GNU/Linux in their functionality and interoperability. These systems also share many tools and programs. However, they aren’t identical, as each has its own distinctive features and nuances. A curious and skilled person can explore and master these differences with relative ease.
For most people, however, the operating system isn’t the focus of their attention. They interact with applications, often graphical, that run on top of the operating system. So, the availability of a specific application on a particular operating system can be a decisive factor in choosing or switching to that system. However, in many cases, there are comparable applications on different Unix-like systems that can meet similar needs.
All of these systems are versatile and modern operating systems that can handle different tasks and scenarios. Moving from one Unix-like system to another isn’t overly complicated. Usually, the preference for one system over another is based on personal taste, habit, or organizational policy. On the other hand, users unfamiliar with Unix may need to invest more time and effort to learn its logic and conventions.
3.3. Terminology Ambiguity
In this article, we have used the terms Unix, Linux, BSD, GNU, and GNU/Linux appropriately and accurately. However, these terms are often used with other meanings, causing some ambiguity and confusion.
Let’s review the possible meanings:
- Unix
- The original Bell Labs system
- A system derived from Unix
- A system that conforms to the POSIX standard
- Linux
- The kernel by Linus Torvalds
- A system that uses the Linux kernel and not GNU, as in the case of Android
- A system that uses the Linux kernel and GNU, as in the case of the various GNU/Linux distributions
- BSD
- The original system from the University of California, Berkeley
- A system derived from BSD, such as macOS
- A system that uses the BSD license
- GNU
- The project of Richard Stallman
- A system based on GNU
We should be careful not to use these terms incorrectly or vaguely. In addition, some free software authors and advocates prefer to use the term GNU/Linux rather than just Linux when referring to the operating system. This is to emphasize the essential role of the GNU Project in creating a complete operating system.
4. Conclusion
In this article, we’ve seen what the terms Unix, Linux, BSD, and GNU refer to. We’ve followed the history that led to the current development of operating systems, starting in the 1960s. We’ve considered the crucial role of university communities and brilliant men like Ken Thompson, Dennis Ritchie, Richard Stallman, Linus Torvalds, and many others.
Any historical narrative is necessarily incomplete. What we’d like to emphasize is that the desire of many people to share their work and collaborate has been critical to the development of operating systems.
We’ve also seen the importance of the term GNU/Linux when we refer to a complete operating system rather than just a kernel.