In popular usage, “Linux” often refers to a group of operating system distributions built around the Linux kernel. In the strictest sense, though, Linux refers only to the presence of the kernel itself. To build out a full operating system, Linux distributions often include tooling and libraries from the GNU project and other sources. More developers have been using Linux recently to build and run mobile applications; it has also played a key role in the development of affordable devices such as Chromebooks, which run operating systems on the kernel. Within cloud computing and server environments in general, Linux is a popular choice for some practical reasons:
Linux also traces its origins to the free and open-source software movement, and as a consequence some developers choose it for a combination of ethical and practical reasons:
To understand Linux’s role within the developer community (and beyond), this article will outline a brief history of Linux by way of Unix, and discuss some popular Linux distributions.
Linux has its roots in Unix and Multics, two projects that shared the goal of developing a robust multi-user operating system.
Unix developed out of the Multics project iteration at the Bell Laboratories’ Computer Sciences Research Center. The developers working on Multics at Bell Labs and elsewhere were interested in building a multi-user operating system with single-level storage, dynamic linking (in which a running process can request that another segment be added to its address space, enabling it to execute that segment’s code), and a hierarchical file system.
Bell Labs stopped funding the Multics project in 1969, but a group of researchers, including Ken Thompson and Dennis Ritchie, continued working with the project’s core principles. In 1972-3 they made the decision to rewrite the system in C, which made Unix uniquely portable: unlike other contemporary operating systems, it could both move from and outlive its hardware.
Research and development at Bell Labs (later AT&T) continued, with Unix System Laboratories developing versions of Unix, in partnership with Sun Microsystems, that would be widely adopted by commercial Unix vendors. Meanwhile, research continued in academic circles, most notably the Computer Systems Research Group at the University of California Berkeley. This group produced the Berkeley Software Distribution (BSD), which inspired a range of operating systems, many of which are still in use today. Two BSD distributions of historical note are NeXTStep, the operating system pioneered by NeXT, which became the basis for macOS, among other products, and MINIX, an educational operating system that formed a comparative basis for Linus Torvalds as he developed Linux.
Unix is oriented around principles of clarity, portability, and simultaneity.
Unix raised important questions for developers, but it also remained proprietary in its earliest iterations. The next chapter of its history is thus the story of how developers worked within and against it to create free and open-source alternatives.
Richard Stallman was a central figure among the developers who were inspired to create non-proprietary alternatives to Unix. While working at MIT’s Artificial Intelligence Laboratory, he initiated work on the GNU project (recursive for “GNU’s not Unix!”), eventually leaving the Lab in 1984 so he could distribute GNU components as free software. The GNU kernel, known as GNU HURD, became the focus of the Free Software Foundation (FSF), founded in 1985 and currently headed by Stallman.
Meanwhile, another developer was at work on a free alternative to Unix: Finnish undergraduate Linus Torvalds. After becoming frustrated with licensure for MINIX, Torvalds announced to a MINIX user group on August 25, 1991 that he was developing his own operating system, which resembled MINIX. Though initially developed on MINIX using the GNU C compiler, the Linux kernel quickly became a unique project with a core of developers who released version 1.0 of the kernel with Torvalds in 1994.
Torvalds had been using GNU code, including the GNU C Compiler, with his kernel, and it remains true that many Linux distributions draw on GNU components. Stallman has lobbied to expand the term “Linux” to “GNU/Linux,” which he argues would capture both the role of the GNU project in Linux’s development and the underlying ideals that fostered the GNU project and the Linux kernel. Today, “Linux” is often used to indicate both the presence of the Linux kernel and GNU elements. At the same time, embedded systems on many handheld devices and smartphones often use the Linux kernel with few to no GNU components.
Though the Linux kernel inherited many goals and properties from Unix, it differs from the earlier system in the following ways:
Developers maintain many popular Linux distributions today. Among the longest-standing is Debian, a free and open-source distribution that has 50,000 software packages. Debian inspired another popular distribution, Ubuntu, funded by Canonical Ltd. Ubuntu uses Debian’s deb package format and package management tools, and Ubuntu’s developers push changes back upstream to Debian.
A similar relationship exists between Red Hat, Fedora, and CentOS. Red Hat created a Linux distribution in 1993, and ten years later split its efforts into Red Hat Enterprise Linux and Fedora, a community-based operating system that utilizes the Linux kernel and elements from the GNU Project. Red Hat also has a relationship with the CentOS Project, another popular Linux distribution for web servers. This relationship does not include paid maintenance, however. Like Debian, CentOS is maintained by a community of developers.
In this article, we have covered Linux’s roots in Unix and some of its defining features. If you are interested in learning more about the history of Linux and Unix variations (including FreeBSD), a good step might be our series on FreeBSD. Another option might be to consider our introductory series on getting started with Linux. You can also check out this introduction to the filesystem layout in Linux, this discussion of how to use
locate to search for files on a Linux VPS, or this introduction to regular expressions on the command line.
Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.Sign up