I. What's The Big Deal?

If you know what Linux is, you know it's just an operating system. You also probably know that a lot of people feel rather strongly about it.

What is it about this strange program that makes people so loyal to it? Is it just a contrarian or elitist desire to touch the mouse as little as possible?

Well, yeah. That's part of it. There's more, though.

II. And What The Heck IS It?

Linux is an operating system. (Most of the time people shorten that to "OS.")

But what does "operating system" mean? And what's this "Unix" that people always seem to talk about almost interchangeably?

Exact definitions and dense diagrams aside, an operating system is the program that controls your computer. Windows is an operating system. So are OSX, Android, and lots of others. Operating systems run on cash registers, in cars, on the servers that run the internet, and on video game consoles.

Most people don't notice their operating systems unless they're broken, but some specialists need more powerful tools to perform their jobs. "Unix" was the name given to an early operating system built by some engineers who needed more powerful tools and had a new way of thinking about computers.

Unix was the OS built by programmers for programmers. Much like Vim, Unix wasn't designed with the intention of easing neophytes into its ecosystem of tools and concepts. It was designed to maximize usefulness to an expert user.

III. I Thought This Essay Was About Linux

Without delving too far into the fascinating history of Unix and Linux, Unix was created by some nerds in the 60s, improved and hacked by students in the 70s, packaged and sold by some suits up throughout the 80s, and reinvented by some socialists in the 90s as Linux. (The suits sell both Unix and Linux, these days.)

The fascinating thing about this particularly long and brutal game of telephone is the words that have stayed the same virtually throughout. The C programming language has remained popular for the creation of operating systems and utilities since its invention in 1972. The "Bourne Shell" lives on in most of the world's Unix or Linux servers, either in its older-style incarnation or as its successor, the "Bourne Again Shell" (also known as bash.)

There's common wisdom that says that technology is always changing, and it's almost impossible to keep up with the latest trends unless one is glued to Twitter, constantly attending courses to obtain certificates, and following the right tech blogs.

That hasn't been my experience with Linux. Once in a while the syntax for some utility will change, but the POSIX standards make substantial changes only rarely. The Internet Engineering Task Force updates its standards and recommendations based on Requests For Comment issued to the community of engineers who build, maintain, extend, and defend the Internet.

By and large, the important parts of day-to-day Unix and Linux usage have remained essentially unchanged for decades.

IV. Are You Saying Linux Is Low-Tech?

If you use Facebook or own an iPhone, I'd like to ask you to think for a moment about the last time there was a big update that changed the way everything looked.

Did it make the product better? Did it make it easier to use? Did you enjoy the new look more than the old look? Were you frustrated when options moved around to places you were unused to? Did new features sometimes interfere with your normal use of the product?

The kinds of changes I'm talking about represent a fairly obvious ploy from the marketing departments at the companies in question. Changing the interface looks like progress to unsuspecting users. It feels like significant technological progress when it's done correctly.

That makes it no less frustrating. When the thing you're using changes without your intervention, it underscores the fact that you don't control it. You can't control it. Improvements happen in Linux and Unix all the time. But most of the time, the changes aren't the kinds that are made to the front page of Facebook or Gmail. They're changes that fix bugs or improve performance. The interface is just text using a familiar, unchanging syntax.

V. But Text Interfaces Are Like The Eighties

There's a reason Unix people are so devoted to the command line client.

# Power! Unlimited power!

-Senator Palpatine

Yes, the command line is just plain more powerful. Whether you're talking about bigger or better or faster or more-easily-automatable, the programs we put together with the Unix philosophy consistently beat out the competition.

One of the biggest advantages of these programs is that they can talk to each other easily. They are designed to accept text as input and provide text as output. Since all their input and output are text, they can be chained together easily. The outputs, being text, are also human-readable, so that one can inspect them easily and learn to understand the behavior of these programs.

Eventually, one starts to think of them as talking to you. Using your computer becomes a conversational experience. You don't just find things out; you ask your computer for answers using this command language. You express yourself easily and simply, and what's more, other people can easily modify and improve your tools, or add your ideas to their existing tools.

Since it's all text, it's all readable, understandable, and, with the good design this encourages, predictable. The importance of predictable, stable tools to the design of large, high-volume systems should be self-evident.

VI. Okay, What About FreeBSD Then

There are lots of Unix-based operating systems. There's a few reasons I've found Linux the most enjoyable of all the Unix-based operating systems I've tried so far, though.

Linux has a huge community. Fundamentally, Linux is the expression of that community's philosophy, needs, and expectations. Even corporate contributors to Linux like Red Hat, Inc. operate under the same commitment to sharing code to make Linux faster, more secure, and easier to use.

Anyone who has used more than one flavor of Unix knows that most (but assuredly not all) of the expectations, syntax, and engineering philosophy remain the same from one distribution to the next. One more great property of this ecosystem is that code is promiscuously shared between these adjacent cultures. Improvements to one are often adopted and patched into another. Where code doesn't get copied, often it inspires engineering decisions.

Using Linux doesn't shackle me to it. I could get a job working in a primarily BSD or (shudder) AIX environment without really having to relearn very much.

I have a coworker who worked primarily with Solaris systems ten years or so ago. He took some time off to relax and earn his Ph.D. (unfortunately, I don't think he got around to the relaxation part). Now he's back in the game, and he's been happily writing Perl scripts to automate system administration tasks without issue despite the significant advances in the underlying technologies since he was last in the industry.

I think that should illustrate my point pretty well. If you know one Unix, you can switch to another with relatively little effort. So if you prefer OpenBSD or Gentoo, more power to you. I'll continue using CentOS-- it's awfully convenient along several of the axes that are imporant to me at this point (namely package management and configuration management.)

VII. That Sounds Like A Lot of Work

Even with all of that said, there is something of a steep learning curve, it's true. Linux isn't for everybody. But the real joy of Linux to me is the joy of discovery. Linux is more than an operating system; it's an oral history, handed down from engineer to engineer across decades, with the most helpful, powerful, and entertaining parts surviving the ravages of time to be appreciated and improved by the next generation.

Linux and Unix are filled with jokes. The humor can be dry to the point of dehumidifying the room, but the predecessors who walked through the imaginary halls of the skyscrapers of Unix code left messages wherever they went. You can find them in the documentation, in the source code comments, and sometimes even just in the names of the tools.

So maybe the real reason I love Linux so much is because I love reading, and Unixes are tools built by readers for other readers. Programmers talk about "pretty" or "elegant" solutions, adhering to an ideal of beauty that isn't immediately obvious to people who look at the way most programmers build websites and graphical interfaces.

Syntax highlighting is pretty and it makes me feel good to see it. Man pages are pretty and it makes me feel good to navigate them with the same control syntax I use in Vim. Thanks to Ruby, configuration management is just a recipe away.

So at the end of the day, using Linux doesn't feel like work at all. It feels much more like spending time in a favorite bookstore, or reading old letters from a close friend.

# There need be no real danger of it ever becoming a drudge, for any processes that are quite mechanical may be turned over to the machine itself.

-Alan Turing