Why I'm leaving Linux for FreeBSD

Ceci est sujet a débat, et étant donné que la majorité des acteurs ne parlent pas francais, cet article est en anglais. Cependant, l'article original en français est disponible ici

So, here it is. I went past it. I've been using GNU/Linux for quite a long time now, and since a year or two ago I can't help but notice unwelcome changes. Of course, at first I didn't even have the technical knowledge to even understand that these modifications existed. And some of them came by before I even knew that there was something in my system that did this or that. For exemple, udev, or Policykit/Consolekit. At the time, I didn't even have a clue how disks were mounted on my system. The first non-windows system I used was Ubuntu 9.10 Karmic Koala, and that was too early for me to start toying with the system to understand how it worked in its depths. However, as time passed and my understanding of the system got better, I started seeing that some pieces of the OS didn't exactly match the other ones. Of course, I can't tell if that realization came because of the recrudescence of those pieces or just because of my better understanding of the system. Still, those pieces not matching the OS were getting more visible each day. And then one day, i got fed up of seeing unity on my machine and I switched from Ubuntu to Archlinux. That was before Arch started using systemd. That system seemed great to me. As long as i didn't install GNOME, a thing I did not plan on doing, it didn't force me to install any *kit nor dbus. Okay, udev was still there, but it was the least invading of them all.

But Archlinux switched to systemd. Now be careful here, I'm not criticizing systemd, nor any of the *kits or udev, and of course not Archlinux. The first ones are probably very efficient in their area, and the second really didn't have any choice, the distribution philosophy being having as soon as possible cutting edge updates of everything. That being said, system, as dbus and the *kits (even though they're not the only ones doing that...) have a very precise proble, that ain't important to everyone, but that is very disturbing to those to which it matters, and that problem is that those systems don't respect the UNIX philosphy at all. The UNIX philosophy, as a reminder, can be tracked down to those 9 principles :

  1. Small is beautiful
  2. Make each program do one thing well
  3. Build a prototype as soon as possible
  4. Choose portability over efficiency
  5. Store data in flat text files
  6. Use software leverage to your advantage
  7. Use shell scripts to increase leverage and portability
  8. Avoid captive user interfaces
  9. Make every program a filter


Of course, an OS is meant for evolution, and one could think that UNIX is too old to even be of any use nowadays. Actually, that's not exactly the way IT works. In fact, standards, OSes, software, everything must evolve - or die - and UNIX is no exception. But we're not talking about UNIX here. We're talking about UNIX philosophy. And that one isn't too old for no reason, it's because there's proof of its efficency. The UNIX philosophy, over being efficient on paper, also has 44 years of testing behind it, and it still works as well as on its first day.
The UNIX philosophy is also and over all a guarantee of usability and simplicity for sysadmins, for developers, and actually for everyone doing IT *seriously* (i'm not saying that other IT jobs are not serious, i'm just taking these ones as exemples because they're the ones the closest to the system).

Any OS has to have a standard way to make software communicate. UNIX has pipes, a kind of special files that allows to exchange information. It's efficient, it respects the "everything is a file", it's standard, it's easy to understand, so yeah, it works perfectly. Dbus comes to replace this, with an interface that's explicitely *not* meant to be used by command linux but via APIs, and a monolithic program doing its work in a way that's completely opaque to the end user. Of course, it's doing its job efficiently. Yes, it's faster than it was. Yeah, it's "cleaner", it's less of a mess. But in the same time, it's less efficient. It's *a lot* less usable for the sysadmin, because they can't read easily the exchanges between programs. It's not very practical, after all. And it doesn't respect the UNIX philosophy, at all. Systemd takes the same path, of creating a unified interface, accessible via calls to APIs only, completely obscure, very abstract, of course monolithic, and a lot less open to the modification by the end user. Well, okay, it does speed up boot. But, and even if that's going to surprise some of you, I prefer having a system booting up a *bit* slower, but that i can modify freely, and that's open, understandable and distributed. It's almost as if freedesktop.org projects had as a goal to replace the UNIX base of Linux by creating a concurring system, a bastard system, built on the linux kernel but not using the UNIX basic systems anymore.

The problem is that it's easy to see that the direction taken by the Linux community is not the one to go back the the UNIX nor the one of developing solutions respecting the UNIX philosophy, but updated (?), but rather is to embrace and push those changes, brought by the freedesktop.org projects directly in the core of the system. Thus, Fedora (close to Red Hat, at which many freedesktop.org developers are working) already adopted all those changes (archlinux too, but for other reasons...) and one can count on the other distros to adopt it one day or another.

Now, having, if not proven, at least expressed the reasons that make those systems nocive in my opinion, we could think it's sufficient to just switch to a distro not using systemd, or even to a distro not using any freedesktop.org contents, and bear with the fact of not using archlinux anymore. But with some reflexion, we can see that if distos such as Fedora or Arch are now using systemd (and that OpenSUSE is in the process of integrating it), it's probable it will become a standard over the years, and that only systemd and upstart, ubuntu's startup manager, will survive (I really don't see them going *back* on that precise point.) Still, the init process, heritated from the System V, looks like it is doomed on Linux. It could seem judicious to switch to debian squeeze, that probably won't ever see the update, or wheezy, that will probably only get it in 2 or 3 years. But it seems to me that this period is still too short, and puts an expiration date on my OS, a thing that doesn't really please me. No, the solution is to switch to another system, that has its own init systemd (or that is not ever going to switch to systemd). In this case, two main options are there: OpenSolaris and *BSD. Minix is not really a choice, as the few programs it can run, and the fact that it's only available on i386, which is not really great as my system is capable of x86_64. Haiku is not a choice either, as the goal is to stay in a UNIX world.

OpenSolaris is a fine OS. I, in theory, have no problems with that OS, except some design choices are totally opposed to what i like to see in an OS. Basically, OpenSolaris completely looks like Debian in its vision of the way its tools work, with packages modified to make them easier to use (configuration files already done by default, for example, and other "release-only" kind of patches.), and a tendency to make scripts and tools for any- and everything. Anyway, that's out of the topic. It's also worth saying that with the recent acquisition of Sun by Oracle, it is very possible that the OpenSolaris project is not going towards very times... (the main page of the project is printing an ENORMOUS Oracle logo, which is the sign of fine taste)

So the only one standing is *BSD. Now why choose FreeBSD instead of OpenBSD, NetBSD or DragonFlyBSD (only talking about the most-known ones here...) ? Well, it's all very simple : for absolutely no reason. OpenBSD and NetBSD are known to be security oriented, and from what i've seen DFBSD looks like the "too helpful system" described before. But the truth is, I didn't really look too much into it, and FreeBSD will see me coming only thanks (because?) of pure randomness, because between all the BSDs it looks the most sympathetic to me, and the fact that I quite like the port system (i like being able to configure my software quite deeply.)

There, that's my humble point of view on this "problem" of the Linux world. Of course, I'll still be using Linux, and i can only hope that systems such as systemd or dbus disapear, or at least never appear on some distributions, thus creating a choice for users.