June 16, 2017

Some Thoughts on Linux/Unix Distributions

Some Thoughts on Linux/Unix Distributions

One of my classmates are busy implementing a DHCP server and a client for Linux/Unix as his coursework. He is absolutely total green to GNU/Linux while I have been working with it for several years, so when it came for him to choose a Linux distribution to carry out his development, he turned to me.
I'm not really a geek, since I use Linux just for the reason that I need that environment. For most time, I'm feeling good sticking on macOS (formly OS X, I honestly prefer that name) for daily work and Windows for gaming. If I need GNU/Linux for work, I'll boot to my Linux Mint Cinnamon and work with it. But some other distributions rather than Debian/Ubuntu/Linux Mint features some very cool characteristic which make them very attracting for me to hand on, so along with my classmate, I've tried some other distributions for some time and here are some of my thoughts.

Debian, Ubuntu, Linux Mint and More

To start with, Debian and its derivatives are always recommended to every green hand. The chief pros are, that it's stable, and it's built-in dpkg and apt system are very easy and convenient to learn while preserve strong powerful ability to manage packages. But for Debian the main cons is also "it's stable". It's so stable that the packages from official sources are always older. You're always behind others even if you're following that latest release. Switching to test branch may help some, but why don't we just switch to Ubuntu or Linux Mint?
That classmate was first on Debian and running KDE for desktop. He then one day thought that his KDE environment is was not charming as mine. When he turned to me, I recommended him to do an full-upgrade first to check if there is a newer version, after which I reminded myself his stable-but-old Debian. Along with other mates in our team, we discussed for days and the finally solution is - reinstall and switching to Ubuntu. It's an amazing but reasonable solution right? Actually this problem has something to do with looks and feels, but nothing to do with which distribution you're on. But still, switching to Ubuntu may be a proper choice for desktop Linux, as Ubuntu delivers ppa, more device drivers (including non-free parts) and some customized, delicate theme and style presets. Additionally for our team, you're running the same environment as on your servers if you run Ubuntu on desktop.
Linux Mint is derived from LTS versions of Ubuntu and it's mainly designed for Cinnamon desktop. It has been my primary desktop Linux since Linux Mint 17. Though Cinnamon has been ported on nearly every mainstream distribution, it is designed to work with Linux Mint. Not like GNOME, Cinnaomon provides familiar and efficient interface for only desktop computers, and Linux Mint Cinnamon runs well on my workstation. If you don't like Cinnamon or just won't want to try something new, there is also a Linux Mint Xfce for you.

Fedora

Fedora is generally the test field of RHEL. New features and packages in an unending stream are added into Fedora and being tested. Once they are stable enough, they are qualified to join RHEL official repositories. But after all, Fedora is still one of the best choices for me, is not for every one. As a test platform, most of the softwares are up-to-date, new new features are ready and up by default, which means you can switch to them when you are ready. Of course you can turn them off if you are not happy with them.
Fedora Workstation comes with a default GNOME desktop environment, and that's definite since Red Hat, the main sponsor of the Fedora Project is also one of the main supporters of GNOME. Back to those years, Red Hat has even sent full-time employees to develop GNOME. Though it's not as "stable" as Debian or CentOS, it's stable enough most of the time for productive work. In other words, it strikes an exquisite balance between new fashion, usability and stability.
Fedora Server is also a good distribution for servers. Alike Fedora Workstation, new technologies like cockpit are first tested on it, and rpm package system gains rich support from mainstream softwares. You just have to sit back and enjoy things new.

Arch Linux, Manjaro and... more?

Numbers of my friends are Arch Linux fans. They crazily love Arch Linux and its pacman system as well as Arch User Repository (AUR). Arch Linux is extremely flexible (for x86_64 targets). This distribution follows the KISS principle from the installation: no GUI provided, instead a pacstrap script. You have to chroot then and configure everything by editing configuration files. This process of installation will sometimes be confusing and difficult even for experienced Linux users who are at least equipped with basic Linux usage knowledge, let along newbies who wants to try and switch to Linux as their production environments.
Arch Linux is also a rolling release distribution, which means you can always get the latest kernel, libraries and applications. Meanwhile, you may experience unstable time if the new version of some software are misbehaving, for Arch Linux tends to provides the packages directly compiled from upstream without any modifications.
From my point of view, the core and powerful part of Arch Linux is AUR, and ArchWiki. AUR is a place where "Trusted Users" upload and share PKGBUILD and affiliated files of software packages, taking the advantages from Arch Build System. It seems to work in a traditional Unix way, like ports under FreeBSD. AUR helpers like the most popular yaourt can help from cloning files to building and installing. While AUR solves the problem of the number of available software, ArchWiki is a place to check existing, well-known bugs and solutions, as well as configuration and usage manuals of popular software. I will turn to ArchWiki when trying to configure a new software even if I'm on my Ubuntu Server.
I have a virtualized Arch Linux running KDE for desktop use. This is overall a new setup, since I have been playing with it for less than half an year. I'm happy with this flexible, always-up-to-date and powerful distribution but I don't really recommended for those who are new to Linux world for they may stuck at installation and give up the whole Linux world. If you may like to try the AUR and other attracting features, however, there is Manjaro which is based on Arch Linux but comes with GUI setup wizard and pre-packed desktop environment to try.

FreeBSD, OpenBSD, NetBSD

BSD is Unix while Linux is not.

If you would like to try a "pure" Unix, go BSD. BSD is not Linux, but most distributions features a Linux ABI which allows users to run most Linux binary directly without recompiling. In face, since BSD is also POSIX compatible, most open-source software can be compiles as-is and works like a charm. Tough the hardware driver support is even worse than Linux, BSD is still worth trying.
I'm not a traditional-term BSD user actually but BSD codes could be anywhere, for you can pick the codes into your project without being forced to publish your source codes. I'm using pfSense on my soft router, and FreeNAS for my NAS to take the advantages of the advanced ZFS feature. Don't forget that Darwin, the kernel of macOS and iOS is also BSD and it's running well on my Macbook Pro 13, Mid-2014 and ipad Air 2.
There is also BSD distributions targeted at desktop usage and preloaded with desktop environments such as TrueOS. There is also a Debian GNU/kFreeBSD project which runs FreeBSD kernel along with Glibc and GNU tools. But for the most popular BSD as listed in the section title, which to choose?

  • FreeBSD is free
  • NetBSD runs everywhere
  • OpenBSD is secure, it presents openssl and openssh

Solaris, illumos

Solaris is the Unix from SUN and now ORACLE. It has a open source version created by SUN named OpenSolaris, which is discontinued when Oracle acquired SUN. illumos inherits the source code from the dead OpenSolaris project and it's supporting many OpenSolaris distributions. It provides ZFS support, Solaris Containers, DTrace and combines with Linux KVM features, making it a modern, high-usable operating system kernel. Some popular distributions are OpenIndiana and SmartOS, and I would like to try them for servers.

Conclusion

What's my choice?

After knowing and trying all these (but believe me, I've tried more), I'm now working with

  • Linux
    • Fedora, on my workstation and laptops
    • Arch Linux, KDE, on my workstation in VM
    • Ubuntu Server and Debian, on nearly every production servers
    • Fedora Server for some of my private servers
    • Android, on Phone
    • OpenELEC, on HTPC
  • BSD
    • FreeNAS, on NAS
    • pfSense, on my Router
    • macOS and iOS, on Macbook and iPad

The most important thing for me on a desktop system is ssh and firefox. I can always log into my Ubuntu Server to manage and use it, and most of my important data are stored on NAS. So a desktop system could enable me to work as soon as ssh and firefox run.

What about that classmate?

He finally played well with KUbuntu 17.04. He said that he would like to try Arch Linux later.