20 February 2020

a penguin and his pals

All right, sweethearts, what are you waiting for? Breakfast in bed? Another glorious day in Linux! A day in Linux is like a day on the farm. Every meal’s a banquet! Every paycheck a fortune! Every formation a parade! I love Linux!

a slightly modified version of Apone’s speech from Aliens

2020 is not going to be the year of the Linux desktop. Despite Linux’s increasing penetration almost everywhere else (your car, your television, your phone, heck maybe even your washing machine runs Linux), Linux is likely never going to be a consumer favorite. There’s a lot of reasons why:

  • Microsoft’s penetration of desktop computing markets, relationship with third party hardware and software vendors, and gaming hegemony.

  • Apple’s success at product marketing, user interface/user experience design, and crafting a profitable mobile ecosystem.

  • Linux’s fragmentation, elitist user community, and huge variation in experience across distributions and implementations.

Might it be the year of YOUR Linux desktop? I am a proud member of the Linux desktop tribe. While I have partitions, virtual machines, and separate computers running multiple operating systems – including Windows – my home base operating system and the thing I feel most comfortable using is Linux. That being said, I think people ought to use what operating systems are best for them and its a very subjective matter. So I didn’t really plan on writing this post. There are too many things on the Internet urging people to switch to this or that and I don’t want to bore readers. I wrote it, however, because of an oddity I keep observing.

I am a member of a lot of Facebook groups for PC gaming, PC building, and similar activities. The groups – mostly geared towards members of the so-called “PC Master Race”/”Glorious PC Gaming Race” – are overwhelmingly tilted towards gaming enthusiasts and custom hardware builders. Not surprisingly, most are Windows users. I don’t expect to see other Linux enthusiasts in these groups and I’m fine with that. Linux is, after all, not really a OS for gaming to put it mildly. Due to Steam Proton, Linux gaming has improved substantially. But if having the latest and greatest games is your thing its best to stick with Windows.

So I’m often surprised by semi-frequent posts in these groups from people expressing curiosity in Linux or asking for reasons why they should switch to Linux. A lot of it is “grass is greener on the other side” stuff, idle temptations that most people won’t actually act on, and flamebait. But it keeps on persisting. So my answer honestly in the groups is something along the lines of the following. Only you really know why you would want to switch to Linux and this subjective consideration will guide what objective technical considerations are most relevant. What do you see in the penguin world? Is it frustration with Microsoft? The allure of mastering something exotic and difficult? Or just – in a context already structured by elitism (“PC Master Race”) – the desire to level up even further?

Either way, there is a certain mystique that at least fuels this curiosity. And I don’t think people that make the case for Linux quite understand it. Many of them fixate on what Linux is not, going over the various flaws of Windows relative to Linux and arguing Linux is simply better. Those claims have a varying degree of technical accuracy but tend to underrate switch costs and other downsides. To the extent that writers make a case for Linux independent of its relative value compared to Windows or Apple, they often do so by making generalized claims that are too subjective to validate (Linux will make you more productive, Linux will make you an elite hacker), are not necessarily relevant to users (support open source and decentralization against the Cupertino Cabal and the Evil Redmond Empire), or just sound too much like religious preachers (Linux will save your soul). I don’t think that’s helpful.

I toyed with the idea of writing a post about what it means to switch to Linux. Not use Linux in a partition or a VM. Actually make Linux the thing your everyday life, work, and to some extent play revolves around. I asked social media followers for tips on what I could talk about. I wanted to avoid falling into the traps of the kind of Linux advocacy I am referring to. At the same time, I also felt that trying to be “objective” about something I am passionate about is a mistake and would be too boring to write anyway. And writing something as narrow as a Linux install guide for beginners is not something I can add much value to. If you want that, check these out:

Unless you buy a computer with Linux pre-installed (see here, here, here, or here for vendors) you will likely install Linux by downloading an installation image onto a USB stick or DVD, inserting it into the computer, and then booting to the installer. Opinions differ about what the best distribution is for beginners. In particular, many say Ubuntu Linux or Linux Mint. I personally recommend Ubuntu as a starting point because of hardware compatibility issues.

If you plan to install Ubuntu on something that was shipped with Windows as its default operating system (erasing Windows in the process or dual-booting) you have greater confidence it will work on that particular hardware configuration. The vendor, Canonical, works extensively with hardware suppliers to certify that it can be installed on a variety of different hardware environments. Similar information is available for Mint as well but its less official and comprehensive. The desktop is not as visually appealing as Mint’s but you can change this quite easily. Making sure you have support for your hardware and all of the drivers you need accounted for takes precedence. For many people, Ubuntu or something similar is all they will ever need. But for those that want a greater challenge or more variety many others await.

With that throat-clearing done, I will try to be frank with you. As I said to the people in the Facebook groups, only you really know why you would want to switch. Linux stans both exaggerate and underrate what it means to switch. Linux does not require a PhD in a hard science to use. The people who use it aren’t all hackers in hoodies. As long as you choose the right distribution for your needs, you can have a stable and high-performing base for your work and leisure without needing to really touch the command line or contend with much Linux/GNU/UNIX technical esoterica. All of the most popular beginner-level and intermediate-level distributions have made leaps and bounds in usability, hardware support, and third party software support over the years. However, I am not really sure that it makes sense to switch to Linux if you want your experience to be totally unchanged.

It’s a lot of hassle just to have a different – and less complete – version of the same things you are used to. If you are interested in Linux at all, its likely not because you are just looking for business as usual. There’s something compelling about it that’s intangible you think you can gain from using Linux. So I say this. Switching to Linux is about embracing the unfamiliar. It’s an adventure. That’s what you gain. Adventures are not easy. They are also not impossible. The reward comes from redefining the horizon of the possible. Think about the classic Super Mario Bros games. Was saving the Mushroom Kingdom from Bowser and the Koopas a walk in the park? No. It required repeated practice and commitment to master. Even if the difficulty increased gradually in track with the player’s skill, things were never trivial. But it was fun. Addictive. And every time you beat a level you felt like you had achieved something meaningful that you could not do before. And you were driven to push forwards to the next challenge.

Linux is like that. Part of the allure is that there isn’t just one thing that is Linux. Rather, there are many. I have talked a lot here about Linux but I have not mentioned the obvious. What is Linux? Is it just magic that boots your computer from the luminiferous aether? Linux is just a kernel. A kernel is a small core system that sits in between your computer’s hardware and the programs that utilize hardware resources. It’s very small for what it does. It does a lot – it manages the computer’s memory and processes, mediates between hardware and system processes, and receives and responds to various service requests from the processes. On its own, Linux does nothing. To function, Linux requires other software that is independent of the kernel. It is arranged into distributions that consist of customized collections of software that sit on top of the kernel. Linux distributions become operating systems when they combine a Linux kernel with software from GNU and other sources.

Many distributions allow users extensive customization options from the superficial (theming) to the esoteric (kernels). And some distributions offer only a tiny set of basic programs and allow the user to build the rest from the ground up. And, if that is your thing, you could even make your own custom distribution using something like Linux From Scratch. Linux is distinct from its cousins in the BSDs precisely because of its modularity. BSDs – Berkeley Software Distributions – descend from the University of Berkeley’s unique spin on AT&T’s Research UNIX OS. Unlike Linux each version is a full-fledged operating system. The BSDs, all derived from UNIX, are intended to be coherent and monolithic in ways that Linux is not, beginning with their unique origin.

Should you use Linux or the BSDs? I can’t answer that question. However, I don’t see any “should I switch to FreeBSD/NetBSD/OpenBSD” posts in the groups I follow. That may reflect ignorance of what the BSDs are. Or just a judgement that they lack the Linux mystique. This post is for people that are lured by that mystique. That mystique is of course socially constituted like any other subjective human aura surrounding technical artifacts. But there is something to it, and that is where the adventure lies. Linux offers the chance to be exposed to an entire ecosystem of tools, frameworks, and concepts that most computing users will never see or experience. Not because Linux is the only or best way to get it. But because Linux dramatizes the poor predicament of the modern general-purpose computing user. Most of the time, people are not really given a meaningful choice. They are never given an opportunity to think about what they are doing with computers and what a computer means to them.

Computers are essential to modern society and personal mobility. But few people think about what it means to use them. They’re just shoved into your hands and you are told to get up to speed quickly so you can do your homework, check your emails, and talk to your friends. Relative to what computers do seemingly automatically, they’re magical. But there is no such thing as a free lunch. And this is especially true of modern “user-friendly” systems. I recently read Neal Stephenson’s book In The Beginning, There Was The Command Line. Stephenson describes a common experience – losing a saved word processing document – as an example of how users are actually sold short by modern user interfaces:

Consider only one word: “document.” When we document something in the real world, we make fixed, permanent, immutable records of it. But computer documents are volatile, ephemeral constellations of data. Sometimes (as when you’ve just opened or saved them) the document as portrayed in the window is identical to what is stored, under the same name, in a file on the disk, but other times (as when you have made changes without saving them) it is completely different. In any case, every time you hit “Save” you annihilate the previous version of the “document” and replace it with whatever happens to be in the window at the moment. So even the word “save” is being used in a sense that is grotesquely misleading—“destroy one version, save another” would be more accurate.

Anyone who uses a word processor for very long inevitably has the experience of putting hours of work into a long document and then losing it because the computer crashes or the power goes out. Until the moment that it disappears from the screen, the document seems every bit as solid and real as if it had been typed out in ink on paper. But in the next moment, without warning, it is completely and irretrievably gone, as if it had never existed. The user is left with a feeling of disorientation (to say nothing of annoyance) stemming from a kind of metaphor shear–you realize that you’ve been living and thinking inside of a metaphor that is essentially bogus.

So GUIs use metaphors to make computing easier, but they are bad metaphors. Learning to use them is essentially a word game, a process of learning new definitions of words like “window” and “document” and “save” that are different from, and in many cases almost diametrically opposed to, the old.

When anything out of the ordinary occurs, users are often left clueless and bewildered. As Stephenson suggests, its not necessarily their fault. They got bamboozled. The abstractions they had relied on had failed them, because the actual technical implementation of things they come to extensively rely on differs so much from the abstract representation that the contradictions eventually become too heightened to be successfully managed. Apple and Microsoft make products that are well-engineered and pleasing to use. Until they fail. At which point you feel like you have been living a lie. Your computer transforms from something familiar and comfortable to an alien artifact that is working on its own, doing strange, bizarre, and even terrifying things you cannot understand or control. It really sucks. But what’s the alternative? There’s the BSDs, or even nicher things like Plan9 or BeOS. And then there’s Linux.

Linux won’t make you a computer master. Computers are some of the most devilishly complicated inventions humans have ever created. I often observe people with elite technical backgrounds in academia or the private sector struggle to understand them. Because, in truth, there’s something structural about computers that creates a vast gap between their complete possibilities for behavior and the ability of human minds to visualize their workings. That gap can be closed by theoretical and applied research, engineering, design, and just plain stubborn persistence. But it will always exist one way or the other. Computers are like any other complex technical artifact that is ultimately dis-embedded from tangible experience. Computers attract metaphors like “cyberspace” because of the way their strangeness eludes comprehension in entirety.

But everyone has to start somewhere. And for many people, Linux is their starting point. It can show you what you can learn, how you can go about learning it, and the tradeoffs involved in choices you make about the things you use. Your computer will become something different to you. It will no longer be just a instrumental means of checking your email, browsing the internet, or playing games. It will, for maybe the first time in your life, become an adventure that you can lose yourself in every time you boot it up or wake it up from sleep. There’s always something new to learn, a new command or option you haven’t tried yet, and a different distribution you haven’t at least previewed in a virtual machine. Sometimes you will feel like you’ve joined a cult, and you’re not wrong. But these days, even Microsoft has (somewhat) joined it too.

Wherever your adventure takes you, Linux can probably help. If you want to do more heavily technical things with computers, its very easy to find, install, and manage the programs you need with Linux. NASA and scientists with supercomputers use Linux for that sort of thing. If you want to be a hardware hacker, Linux is very big in the world of single-board computers, system-on-a-chip setups, and embedded devices. If all you want is to just understand how computers work better, Linux’s extensive customization options and relative transparency of interior workings are big benefits. If you want to gain more control over your digital life, Linux gives users the ability to infinitely change and extend it.

Beginning with the ability to, if they so choose, compile their own custom kernels. But also much, much, much more. And while it isn’t always easy to interface Linux to the services and systems you rely on, there is almost always a way to do so. To be totally clear, this is NOT a pitch for Linux. As I said, I think there are far too many of those on the Internet and most of them are ineffectual. This is not an unbiased comparative review. I am VERY biased and I do not even remotely pretend to be objective. I love Linux and I do not exaggerate when I say that this funny little penguin changed my life. And most importantly, I think that people ultimately are going to go with the flow. They will do what is best for them.

I can’t make that decision for them and won’t pretend to know what is best for their needs. But if they are thinking of switching to Linux because of some kind of intangible aura or mystique that surrounds it, because it feels to them like it might be an adventure worth choosing, I wrote this post for them. I am here to say that yes, if it’s an adventure you want, Linux will give you that. It will give it to you good and hard. Take what I say or ignore it. But Linux, like many other things, is ultimately what you make of it. This is what I make of it, and maybe it could be what you do too.