Why I use... Linux

Published June 1, 2020

Over the weekend I was cleaning up some of my dotfiles and writing a .zshrc and I was inspired to write this. Originally I came to Linux because of Emacs, but I now use Linux more. I have now been on Linux for just over a year and in that time my relationship with my computer has changed significantly. I am now much more aware of what is happening on my system.

The distro I run is Arch Linux (queue the groans). I use GNOME as my DE, with most of the standard utilities that come with it. I find they work fairly well and they feel fairly cohesive. I’ll write more about GNOME in a later post.

Why Arch?

Arch Linux wasn’t the first distro I tried out. In fact I had tried to use Linux about four times before. I had tried OpenSUSE, Fedora, Debian and Ubuntu beforehand. Fedora I was unable to install and despite me liking many features of OpenSUSE, I found its user interface to be clunky and YaST to be annoying. Debian and Ubuntu failed to give me a good enough experience so overall these tests lasted less than a week.

What was different about Arch was that I had to build it up from the ground. Because at the end of the install guide you are left with a terminal, I was forced to think about what was on my system and as a result I was able to check what I was doing and what wasn’t working. This lead to me being less frustrated when something didn’t work, as I was able to find out what it was and try to fix it. In particular, getting Optimus graphics to work on my laptop proved to be easier on Arch than on Ubuntu. This is also due to the amazing documentation that exists on the Arch Wiki, without which I would be very lost. In fact is is due to the Wiki that I was inspired to try out Arch in the first place.

The other excellent thing about Arch in particular is its attitude to software. While I find some distributions (cough cough Fedora) to be a little stringent about free software, I find Arch to be a little less dogmatic. There is still promotion of free software, but there is still the ability to easily install non-free and propriety software with relative ease. In fact the ease of building packages lead me to build my own repository.

The reason I would need to do so, however, is due to the AUR. The AUR is a community supported repository of build scripts for Arch packages which can be used to create a package for virtually anything. This helps me to compensate for the lack of official support for software on Arch, as we can create our own. I find that these build scripts also help to make the OS feel more open and approachable than something like Debian, where all the packages are strictly binary, while feeling more usable than something like Gentoo, where all packages must be compiled.

Now, don’t get me wrong, I don’t think its a perfect way to do things. I have a friend who moved to Linux at the same time as I did. In the time I’ve been on one install, he’s moved from Ubuntu to Pop_OS to Manjaro, back to Ubuntu and currently he’s on elementary at my suggestion. He’s looking for a more integrated system that looks pretty rather than a toy to play with that also does work. Despite all hist hopping, he’s much happier on Linux, even with the workarounds he has to do for his surface laptop.

While the distros are all pretty similar, they have different attitudes which leads to different experiences, so its all about trying to find one that works for you. Since they all use fundamentally the same core, it is fairly easy to move between systems, making distro hopping a fairly popular activity in the community. It’s all about finding/making a system that works for you.

I have found that Arch has an amazing ability to get out of my way and to let me focus on what I want to do. So it isn’t so much Arch that has that make it a great distro for me, but its vanilla-ness. I can turn to developer documentation or most online guides with relative ease if I want an alternative to the Wiki.

As such, it must be something else about the system that has kept me here. I think I can narrow it down to 4 main reasons that keep me using Linux: Package management, the Terminal, Virtualisation and the system’s complete Customisability.

Package Management

Something mobile platforms have over Windows is the ability to centrally install and update all their programs at once. I always found it kind of clunky how in Windows each program either had their own updater or relied on the user checking for a new version of some software. My ears definitely pricked up when I found out Linux was using a model like this for years. The ability to find out something exists and type in a single line to install it makes you feel pretty great.

I haven’t had to worry about old software since I started using Linux, that is unless I was intentionally looking for some. That said Arch has a bit of a reputation of being unstable, and while I have had one thing break on me, the rest of it has been very stable. The package in question was OpenSMTPD which changed its configuration syntax in version 6.4.0. Unfortunately this was right after I started using Linux which seemed foreboding but my subsequent experience has been nothing but good.

The Terminal

My terminal emulator isn’t fairly complex (basically default gnome-terminal) and I’ve only recently gotten around to customising the shell I’m using, yet the terminal is one of the most used and most loved applications I have on my computer. Before coming to Linux, I had only used a command line to compile and run my programs, mostly due its relative obscurity on Windows. Coming to Linux and being dropped on a command line wasn’t exactly scary but it was unfamiliar. I had been remotely administering a server so I had some knowledge of how to get around but still preferred a GUI for certain things. It was only from using it that I found its true use, other than as an older, clunker alternative to a GUI.

I think it’s true when they say that the terminal is the most efficient way to get things done on a computer. The trade off with that is that it takes much more work to craft a command than to click and drag something with a GUI. As a result whenever something needs to be done as a batch operation, the terminal is always my goto. And in Linux, with the terminal having an old and very prominent part of the user interface, it is fairly well integrated into everything. Now I find myself getting annoyed when there isn’t a command to do something, and less so when there isn’t a way to do it in the GUI, although this does depend on what it is.

Probably the best thing about the Linux terminal is how integrated it is. The ability to access so many programs that tend to behave in a uniform way is fantastic and really opens up a lot of power. The ability to pipe the output of one program into another allows for some very powerful commands if one has the time to learn how they work. And the ability to do everything, from local admin, to SSH, to serial terminals from the same interface is fantastic. Virtualisation

Before I was on Linux I was constantly firing up VMs and trying out different things with them. A lot of this was related to trying to get Emacs to work in a UNIX-like environment for which it was designed. I was using Virtualbox, which worked alright and had support for all the operating systems I wanted to try although its performance was a little spotty. I tried to use Hyper-V, however I found it to be a little obtuse and clunky. Having read about KVM as the native virtualisation platform for Linux, I was intrigued and curious to try it out.

When I made my move, one of the first things I did was set up Virt-Manager, a GUI for libvirt, a management framework for VMs. I didn’t find the interface too different to Virtualbox and the performance was a night and day difference. The problem with this was I had to remember to install various drivers to make the guests behave, but without the prompt I got from Virtualbox. Additionally, creating a Windows VM was much more difficult, however that was only a one time install. As most of my VMs are Linux, that pain is fairly rare.

The one thing I miss from Virtualbox was its seamless mode, which would be useful for some applications, but most of the time I give a VM its own virtual desktop in full screen. For most uses, I wouldn’t know it was a VM. Most, because they can be a little throttled by disk IO. Additionally I miss the shared folders feature, as it was fairly integrated into the experience. Now I have to set up a Samba server to share with my VMs. These are more annoyances than anything else and the gain in performance is more than worth it, especially when I have to build software.

Customisability

Something interesting about Linux is the way that every program just speaks to each other. Because they all draw from a common set of utilities, there tends to be changes only to their interfaces. This lets there be a lot of change to the utilities one can use without changing the core functionality.

A great example of this is the ability to change shells. The default shell on most Linux systems is bash, which is great, especially for scripting. However many Linux users like to change their shells for something that is a bit more user friendly with active interaction, such as zsh or fish. People then go on to write their own configs for these programs to customise them even further.

This ability to swap around programs as part of a working system extends to most, if not all of the Linux ecosystem. Don’t like a DE? Change it for another. Want a different terminal? Here are 50. This ability to customise the programs allows for a pretty unique level of computing but when combined with many programs having their own configuratility, extends to people being able to have their own unique systems.

On a more superficial side of customisation, the theming support for most Linux applications also is fairly good. I use GNOME, and if I want my desktop to look a different way, I can just find and download a GTK theme and all of a sudden most, if not all of my applications share a consistent, new look. Just look at what’s available at r/unixporn to get an idea. It is near effortless to get a decent looking desktop and very easy to change them around after. Beware though that with heavy theming and extensions, programs can break. In this case you may be trying to make the programs you’re using be something its not, so it may be good to try something else.

Wrapping up

So this is a bit of a longer post than those I usually do. I really tried to explore the main reasons I use Linux and why I like it. I mean, it doesn’t have all the support that Windows has and has a significantly smaller user base yet I find that I am much more willing to fix the problems here than on Windows where they just frustrated me. Maybe I’m just doing it for the elitist marks, but sometimes I’m also having fun with it. Using a more open system has helped me to learn more about what a computer does and how to configure it. Anyway, its been a good journey and here’s to another year!