Why GNU/Linux, Why Not BSD?

I spent the better part of a decade as a Debian user, and for somewhere between sixteen months to two years I’ve run my computers on BSDs exclusively. (Mostly NetBSD and FreeBSD). I’ve developed a lot of respect and outright affection for them; but seeing as I make a big deal over the OS I run, and I am switching back to GNU/Linux it struck me that it might be good to articulate my journey so far.

A note on the GNU / Linux naming controversy.

I use the terms GNU/Linux to identify distributions of said operating system, but use the term “Linux” by itself when talking about the kernel, kernel developers, or the trade association which represents them.

Debian Jessie & systemd

Debian Jessie was the last version of Debian I ran, and considering I had been running Debian as my main system since Debian Lenny I had been quite happy with it for some time.

Systemd landing in Debian and becoming the default init system was a long a contentious affair which ultimately even lead to a Debian fork. I don’t mean to rehash that here, it is well documented else-where.

I felt and still feel a bit like the angel who took no sides in terms of systemd. (Though admittedly that is odd coming from me, seeing as I fled to BSD-land.)

I didn’t and still do not agree with a lot of the criticisms therein. A lot of hate on systemd borders on the paranoid or abusive, alternatingly directed at Poettering and RedHat. I also feel like a lot of the technical criticisms applied to systemd are either unfair or not applied consistently throughout the GNU/Linux ecosystem.

The one over-ridding thing the one thing that personally bothered me (and still gives me a moments pause) Is that systemd in a very purposeful way enabled developers of userland apps to target the linux kernel specific functionality in ways which had never been done previously. It in some ways lead the charge for a lot of traditionally cross platform software and projects to lean more and more heavily on the linux kernel specifically.

This bothered me greatly. I considered one of the virtues of being in a mostly FLOSS ecosystem was that I wasn’t tied down to a specific OS. Having previously migrated away from both BeOS and Mac OS X at different points in my life, I had felt a little burned by having to loose so many apps and rebuilding so many workflows.

This had informed my reasons for XFCE/Gnome (my favorite DEs at the time). It informed my reasons for settling on Emacs for coding and text editing. If for whatever reason Linux didn’t work out for me in the future, I wanted tools I knew I could likely bring with me to another unix-like.

A threat to that really bothered me.

Disenfranchisement with Linux

or linux v free software ; or open source v free software

The state of Linux and the Linux Foundation in terms of software freedom is truly and depressingly strained in some regards; in ways not a lot of people are talking about. I have been bothered by this decoupling of free software principles from Linux. It is a gap that also seems to widen over time.

It’s long been known and a bit of old news that Torvald has had a laisez-fair attitude towards software freedom; biased a little if not explicitly to the open source camp. He has defended tivoization, sees no benefit to the GPLv3, etc. Based on various public statements my impression of him is that he believes strongly in the attitude of open source just being the most effecient means of doing this kind of work; and doesn’t hold much stock in the free software value system.

The thing which has increasingly struck me as concerning in recent years is that the Linux Foundation has not been a great friend to free software. In fact it often feels as if the fact that Linux is GPL is an embarassing accident they would rather ignore if not actively hide. Recent examples of this include: Blocking Karen Sandler of the SFC from running for their board of directors ; General resistance to GPL enforcement against their members such as VMWare [Touched on here] ; Avoiding the GPL/LGPL on more recent projects.

And another thing…

The also depressingly hostile nature of the linux kernel mailing list also wore thin on me. I’m not a kernel coder myself, but I enjoy lurking. I like watching the process of such things. However watching semi-famous linux kernel hackers write transphobic screeds on their personal blogs didn’t exactly endear me to my rapid growing sense that linux didn’t share my value system.

Ergo

On the one hand, I had a growing notion that the “linux” half of GNU/Linux did not have my idealogical back both in terms of software freedom and in terms of civility. I wasn’t feeling especially connected or attached to Linux per se.

On the other hand userland apps were and continue to loose their OS portability, in part due to things like systemd.

I reasoned, iIf portability of my apps was something I valued, and I am not particularly attached to Linux, why not switch to a different unix-like?

BSD

I spent a while with NetBSD and FreeBSD. Here are my notes and thoughts from my time in BSD-land.

Things BSDs get right

  • Seperating their software and their core operating system.
    • NetBSD you get a gold star here for also keeping /usr/local available for my scripts and one-off binaries.
  • Great man pages and documentation.
    • Seriously their was almost never a time where I couldn’t find documentation to clarify something I didn’t understand.
  • Tight integration of the core OS. Clear consistent design principles throughout the OS.
    • It’s hard to explain until you see it in action. On NetBSD this really got driven home for me, when I discovered my commandline partition editor also configured the menu in my boot loader. There is a kind of synergy there you don’t see when all of your tools are seperate projects by seperate authors.
  • Good collaboration across the BSDs.
    • If you watch BSD development for any length, the collaboration on drivers, and borrowing from each others subsystems is fascinating.
  • An interesting willingness to experiment within their own silos. Often celebrating their differences.
    • I am looking at you NetBSD with your crazy lua kernel API.
  • FreeBSD basically getting their code of conduct right earlier than Linux, with less internal drama. (Though with no less external drama.)
  • Less of an emphasis of taking the world by storm, and more of an emphasis of fullfilling a clear vision of their OS.

Places where BSDs struggle.

  • the FLOSS software ecosystems are increasingly linux specific.
    • Android/Replicant app development doesn’t appear to be possible on any BSD currently.
    • Desktop environment availability lags behind even slow moving GNU/Linux distros due to all the linuxisms.
    • Regardless on your feelings Electron and similar dev tools; its becoming rappidly apparent that there is a tidal way of FLOSS developers who just don’t care if there apps are incompatible with non-Linux unix-likes. Electron is the far end of this, but you really can’t throw a stone without hitting build scripts which assume if your not on Linux or Win32 you must be on Mac OS X. This is more or less “Package the software for Ubuntu and no one else” syndrome taken to it’s furthest extremes.
  • FLOSS hardware ecosystems are increasingly linux specific.
    • The tools needed to unlock and flash android devices either are missing or just not as well supported on BSDs.
    • Upgrading libreboot or coreboot firmware from a BSD is off-orading in largely undocumented territory.
    • Many BSDs support booting on Raspberry Pis and other single board computers, but many don’t appear to have support for the SPI interface, or if they don’t expose it as a device.
    • Some Arduino subtypes have connectivity quirks, with zero documentation on how to program their microcontrollers from non-GNU/Linux.
    • BSDs lack a lot of GUI front ends for a lot of things GNU/Linux users may take for granted in their distros these days. Depending on the BSD you may have no GUI for OpenVPN, Ethernet connections, Bluetooth, etc.

android-tools-adb is in FreeBSD ports, and I could get it talking to an android device but it would hang silently for me on a nexus 7 when I issued an “adb reboot bootloader”. I had similar issues with android-tools-fastboot.

The papercuts that especially stung

  • NetBSD not having a maintained desktop manager except XDM.
    • XDM it is serviceable and I alternated between running it, or just logging in via TTY and automating ‘startx’. However both have thier issues. XDM is honestly showing it’s age and it really grated on me after a while that not even SLiM was buildable. GDM 2.x is still in circulation on pkgsrc. SDDM and LightDM are both MIA in pkgsrc.
  • Firefox releases post quantum are more unstable on both FreeBSD and NetBSD than in GNU/Linux.
    • I honestly kind of got used to crashed tabs on BSDs that never happen to me on Win32 or in GNU/Linux. Especially scarry on NetBSD where Firefox is the only maintained fully featured modern browser. I didn’t realize how wide the gap was till I took the plunge back into a GNU/Linux distro.
  • FreeBSD ports having lots of unmaintaned ports. This is a manpower problem, but its pretty bad if you are in the minority of people who really need the port.
    • I became increasingly nervous on FreeBSD as it became apparent to me so many of the ports I was using were marked unmaintained. I experienced filename collisions with an unmaintained port of Chicken Scheme and Mono and was greeted to crickets on the freebsd-questions listserv when I asked how I should be going about filing the bug. (As filing against unmaintaned chicken-scheme seemed like I good way of not getting it solved.)
    • If you poke around some lesser trafficked FreeBSD listservs you will find them a graveyard of email bots echoing the cries of various unmaintaned ports.
  • FreeBSD leans too much on FUSE for non-UFS non-ZFS filessystem support.
    • Look at their UDF support it’s one of the most limited implementations of not just all the major BSDs but of all currently maintained OSes.
  • Being a BSD user who liked the GNU & GPL and wincing everytime the counter-current came up on a BSD podcast or community.

Realizations

I hate dual booting.

No seriously. I kept a spare Devuan partition around largely in case I needed Linux. Booting into it to update coreboot, or flash an android device; or even get around WiFi captive portals who didn’t recognize my device’s OS from BSD got increasingly old.

Long ago I swore of dual booting and now that I did a stint of it again with GNU/Linx & BSD I remember it is not for me.

Unix as a mark of compatibility is dead or dying.

The proprietary Unixes are biting the dust. Durring my trip to BSD land Oracle layed off vast swaths of Solaris developers. It is very possible that macOS will be the last wholly new OS (proprietary or not) that formally received a POSIX certification; and even then Apple forgot to make a big deal about it. With the length of time between versions of POSIX growing every cycle. Will POSIX.1-2017 be replaced by a new version in 2027? Considering the FLOSS players have historically never been able to afford certification who would pay for it by then?

This isn’t entirely because FLOSS unix-likes won out over proprietary ones. Its primarily because GNU/Linux ate their lunch. I fear the fact that the BSDs are still around is more a testament to FLOSS’s longevity as long as their is user interest than it is to market success.

“Unix is dead” is something ive heard before in systemD circles I used to internally bristle a bit over; in part due to my interest in my applications being portable.

However when someone makes it a major point of their talk on systemd at a confrence like BSDCan and the audience doesn’t gasp in surprise. It might be time to take the idea seriously.

Youtube isn’t the froodiest place to consume videos from. Use youtube-dl on that link above if you want to minimize your exposure to it.

That is not to say BSD is dead.

The BSDs are more than aware of this and will continue to be relevant for the forseable future. However their road to continued relevance as desktop operating systems will continue to be rocky. Though just as the FSF doesn’t believe popularity or rate of adoption is a point to pivot their organization on; I suspect the BSDs feel about the same way when it comes to desktop relevance. Not to say there won’t always be desktop BSD users, but that they are uninterested in chasing GNU/Linux to gain desktop users.

At the end of the day I am more of a GNU user than a Unix user.

Personal preference. GNU tools have been the foundation of a lot of my investment for a long time. I suspect they will continue to be for a long time in the future. I really do believe in the four freedoms as ethical principles. If I have to pick a horse to back, their it.

I like the BSD folks and I adore the Unix philosophy. There is a lot of work being done in some BSDs to excise GNU tools out of their base system over the GPL; and that is a weird dissonance for me.

Different OSes for different use cases is OK.

I historically tend to have all my boxes on the same OS. Hell, my ideal world is one where all my devices down to my phone would run the same OS. Which is in part why Debian the “universal operating system” appealed to me for so long. However that kind of radical consistency may be unrealistic. I also suspect I wouldn’t be the first to consider running FreeBSD on all my servers and Gnu/Linux on my laptop and such.