unix  

Mar 25, 2016 • Michael Chen

I initiated this post here in response to a post on a Linux forum (in Chinese) You may also check my original reply (in Chinese). This article is all about personal opinion and choice. No flame war please.

In his original post, he stated that he recently switched to Arch Linux and enjoyed the process of installing the system from the minimal base. He was also glad that his system will be kept up to date. I replied that rolling release was not always a good thing; it is no absolute right or wrong choosing between minimal base systems and out-of-box solutions. Some men agreed with me in comments; others tried to explain the philosophy of Arch Linux in the same thread. I knew that there was no single answer. Besides, I’ve tried Arch Linux as desktop for at least two year. I just want to elucidate my reasoning.

Key point: We enjoy GNU/Linux in real daily use, not in daily maintaince.

Firstly, the upgrade process lets us enjoying the cutting-edge software but is not hassle-free. Occationally, there are some news about another Arch Linux system failures after system upgrade. Sometimes the failure is so severe that re-installing the whole system is inevitable. If the announcements and documents on the official site are read carefully and throughly, severe system failure can be avoided. However, is the time and effort on system upgrading worth it?

Next, some software breaks after upgrade. For example, Django is not totally compatible from version to version. If a Arch Linux system are serving a Django website, the website may fail after system upgrade. The problem can be kept away if the Django package is installed via pip. Rails also shares this scenario. The advantages of Arch Linux disappear in these situation.

Is it necessary to always follow the newest version of software? Software are upgraded for various reasons. Maybe security issues or new features or bug repairs. Changes of software from version to version are not always required. Sometimes, security update is better than version shift because of predictable interfaces and behaviors of software from the same major version. In Emacs 24, we can install packages through M-x list-packages but other old skills still apply. Emacs will not become Vim. (However, there is Vim mode in Emacs. You know it.)

The main repository of Arch Linux is great, but AUR is not always the case. The PKGBUILDs are contributed by volunteers; the quality is not censored or controlled. You have to refer to the votes or browse PKGBUILD before installing software. If we want to use R, is the time installing R worth it or the time analysing with R worth it? We enjoy software after using it not during installing it.

Building a compact system and using a wrapped solution is a trade-off. For example, the complexity of TeX system is hidden in the texlive metapackage in Debian. It’s easier to install TeX by install this metapackage than installing more than 10 seperated packages and finding out something missing later. Building a compact and fast system is cool, but installing software and enjoying system in easy steps is better.

If I were that man, I would use Debian stable branch, adding backports and third-party repositories (like LMDE from Linux Mint). Debian stable branch is not 100% failure-free guarantee; nevertheless, the upgrading process (mostly safety upgrad) is smoother. Major system failure after upgrade is virtually non-existent. If I need some updated software or new features, I can get it from LMDE or backport repos. I can even build packages from sources of testing or unstable branches by myself. By setting preferences in APT, accidental shift to testing or unstable branches can be avoided. I’ve used Debian as desktop for several years and I still have some computers running Debian.

Linux newcomers sometimes enjoy the process of building desktop environment. However, not after using it in real situations, you won’t know the nitty-gritty of GNU/Linux. I still prefer a stable system than a cutting-edge one but others may learn more from using and debuging a rolling-release GNU/Linux system.