Linux

Table of Contents

1. Why GNU/Linux?

GNU/Linux is a programmer-friendly operating system. All the tools you need for programming – from the C compiler to a multitude of scripting languages, as well as text editors – are all there or ready to install. The shell (usually Bash) ties everything together.

Windows lacks this tight integration. MacOS forces you to hack together your own development setup with Homebrew.

The other reason to use GNU/Linux is political. The software is free as in freedom, meaning that their source code is readily available, and you may make modifications and distribute modifications, as long as you also honor the freedom.

Strictly speaking, Linux is just the kernel. GNU is the userspace. There are other userspaces that can run on Linux (e.g. busybox). However, the pairing of GNU/Linux is the strongest technologically and politically.

2. How do I get started?

In Windows, there is a nice feature called Windows Subsystem for Linux. Also, there is Cygwin, which provides an emulated environment.

Alternatively, there is virtual machine software available. When you are ready to commit, install it on a dedicated box, maybe a Raspberry Pi or an Intel NUC.

3. Which GNU/Linux distro should I use?

Dodge political games and use whatever works.

These days, it is hard to go wrong with Debian. If you want bleeding edge, give Arch Linux a try. If you just want a desktop with 2009-era productivity, check out Linux Mint (especially the Debian edition).

If you are using Red Hat, then you should move to a vendor that hates you less, at the very least SUSE Linux Enterprise or openSUSE. (See Geerling, Oracle, and O’Keefe.)

If you are using Ubuntu, then you should give serious consideration to Debian. The writing is on the wall.

Do you want to learn about system innards and fully understand your system? Try Slackware, Gentoo, Funtoo, or (if you really want to understand how to bootstrap a system from scratch) LFS.

4. Which desktop environment should I use?

That is entirely personal preference. Try them and see which one you like best. Many of us GNU/Linux users secretly like GNOME after learning how to tame it.

5. Which editor?

Learning vi is a right of passage. Don’t rely on nano to be present on a minimal system.

(Requiescat in pace, Bram Moolenaar.)

At some point, you should try Emacs. Emacs can do some cool things that Vim can’t do: Org mode, shell in a buffer, editing files on remote systems, etc. Emacs is more like an Integrated Development Environment (IDE), except lean and mean. Unlike other IDEs, any feature that you do not use stays out of your way.

6. What is this systemd thing?

Systemd is the new service manager and omnibus initialization software for GNU/Linux, introduced into the mainstream around 2014. It is perhaps the most controversial change to the GNU/Linux software stack, ever.

Systemd won due to politics. Red Hat developed it, and Red Hat promoted it. There were better alternatives in the early 2010s (OpenRC and runit), but when an organization has money and lobby power, technically superior alternatives fade to a footnote in history. So, like it or not, we are stuck with systemd.