You can argue that the operating system is dead in our containerized, serverless, Web-based world. But the fact is that, especially for developers, the operating system still matters quite a bit. While the differences between various operating systems may not matter much from the perspective of end users, this is only because developers have become good at abstracting away the nuances of different environments and building bridges between different platforms, so that a given application can be accessed almost anywhere.
That’s a long way of saying that if you are a developer, knowing the differences between the major operating systems out there right now is important. And while you are probably pretty familiar with the key characteristics of the two families of big-name commercial systems available today (Windows and macOS), you may know less about the world of Unix-like operating systems.
If that sounds like you, keep reading. This article identifies and discusses the major Unix-like (or *nix, for short) operating systems available today, and explains the key differences between them.
Unix
The only operating system that can be accurately called Unix (as opposed to Unix-like) is Unix itself, an operating system born in 1969 at AT&T’s Bell Labs.
Without delving too far into the history of Unix, suffice it to say that Unix itself died out long ago. No one is running true Unix anymore. They are instead using operating systems that are designed to function like Unix, and that in some cases may even incorporate some Unix source code. But they are not Unix-proper.
(It’s also not really accurate to describe these systems as “Unix versions,” as sites like Wikipedia do, because they are not versions of Unix; they are Unix clones.)
Linux
If you’ve heard of Unix, you’ve also likely heard of Linux. Technically speaking, Linux is a kernel, not a full operating system. But it’s very common to hear the term Linux used as shorthand for operating systems that are based on the Linux kernel. (That practice irritates some die-hard free software purists to no end, but I won’t get into that debate.)
There are, of course, many, many versions (or distributions) of Linux. (For a close-to-exhaustive list, check out DistroWatch, which has been tracking Linux distributions for many years.) Most of them are either no longer being maintained, or are not commercially important. But it’s handy to know the handful of major Linux distributions that are widely used:
- Ubuntu
- Red Hat Enterprise Linux
- Fedora
- SUSE
- Debian
If your favorite Linux distribution didn’t make this list, my apologies. I count these distributions as the most important from the perspective of people who write applications that target a large audience. There are certainly many other great distributions out there, but you won’t find them in your typical server room or desktop.
The BSDs (FreeBSD, NetBSD and OpenBSD)
If you like open source, but are too cool for Linux, you might prefer to use one of the BSD-based operating systems: FreeBSD, NetBSD or OpenBSD.
These systems are all derived from the codebase of the Berkeley Software Distribution (or BSD), an operating system that was originally an extension of Unix proper and later morphed into a (mostly) independent clone of Unix. BSD itself died out in 1995, but its code lives on in the three derivatives identified above.
There’s lots to say about the differences between FreeBSD, NetBSD and OpenBSD, as well as how they are all similar to and different from other Unix-like systems. That’s beyond the scope of this article. One useful thing worth mentioning, however, is that FreeBSD and NetBSD can both run Linux programs. (OpenBSD used to be able to do that, but the feature was shed a couple of years ago in an effort to add security.)
Solaris
Solaris was born out of an effort by Sun Microsystems (an erstwhile software company that was acquired by Oracle in 2010) to build its own alternative to AT&T Unix. The operating system helped to pioneer some interesting features, like Zones, which prefigured modern Docker containers in certain ways.
Although it gets relatively little press these days, Solaris retains a toehold of the enterprise operating system market. It may not be the first *nix system you’ll want to focus on to advance your career, but getting to know it a bit can’t hurt.
Android
You might not expect Android to end up on a list of Unix-like operating systems, but Android’s code descends, in part, from that of the Linux kernel—although it’s more accurate to describe Android as a fork of Linux than a Linux derivative.
This is worth remembering because it can be easy to forget that Android is also designed with the Unix philosophy in mind. Android may look and feel very different from other *nixes, but it’s still Unix at its heart.
Bonus: macOS
I can’t write a list of *nix systems without including macOS at some point. MacOS descends from another variant of BSD. But Apple’s operating system has ended up looking and working pretty differently from most other *nix systems, and there is not a great deal of tooling compatibility between macOS and other Unix clones.