Hacker News new | ask | show | jobs
by johnklos 1006 days ago
Go ahead and find a guide showing you how to do a thing that Just Works regardless of the flavor of Linux distro. You can't, because they're gratuitously different for the sake of differentiating themselves. You can't even use one guide to cover multiple versions of Ubuntu.

Now find a guide showing you how to do a thing for any of the BSDs. That guide is more usable on one of the other BSDs than any Linux guide is usable on a different distro.

That's one reason. Others include the ability to keep track of what's on a system, since the BSDs don't include the kitchen sink and have good package management, the fact that they're lighter weight than most Linux distros (in some cases significantly), that they're more consistent and more deterministic, the fact that you can literally rebuild the whole kernel and OS trivially, and so on.

There are many reasons, but for me, the one thing that really stands out is cleanliness.

4 comments

> Now find a guide showing you how to do a thing for any of the BSDs. That guide is more usable on one of the other BSDs than any Linux guide is usable on a different distro.

That's simply not true in my experience. Sure, man pages for base utilities are usually interchangeable between BSDs, but the same is true on Linux.

When it comes to the system (init, networking, firewalling, package management, configuration, etc), BSDs are different enough that you'll need your own variant's documentation to make things work properly.

And again, Linux isn't that different there. More often than not a page on the Arch wiki will put you on the right track regardless of your distro of choice.

If I might make some counter-arguments to some of these

A lot of the points of differentiation in terms of plumbing layers are slowly eroding away, systemd helped a lot by standardizing things around service files as opposed to the patchwork of init scripts (and OpenRC and everyone else scripts)

I don't know about BSD's being lighter weight than a Linux system, but I don't really know what your baesline of light weight is (Ubuntu? Debian? Arch? Gentoo?)

For more consistent and deterministic systems there's offerings such as Nix and others

As for rebuilding the whole OS and kernel trivially? Gentoo stands out as probably the easiest one in that regard, your entire system can be rebuilt with "emerge -e world"

> If I might make some counter-arguments to some of these

Of course :)

> A lot of the points of differentiation in terms of plumbing layers are slowly eroding away, systemd helped a lot by standardizing things around service files as opposed to the patchwork of init scripts (and OpenRC and everyone else scripts)

It has been my experience that systemd has been inconsistent from one version of systemd to the next. I've given systemd a fair shake, and even those people who swear that it's the bees' knees haven't been able to help me figure out how to work around somewhat silly issues (in other words, they shouldn't have been telling me how easy it is if they can't even illustrate its ease themselves).

> I don't know about BSD's being lighter weight than a Linux system, but I don't really know what your baesline of light weight is (Ubuntu? Debian? Arch? Gentoo?)

You can't really compare a BSD, or all of the three major direct BSDs, with the best of each Linux distro. Sure, Nix is better at being deterministic, and Debian is much better than the others about not changing gratuitously, and Gentoo can easily rebuild everything, but what happens when you need all of those things in once place?

By lightweight, I mean that I can literally run NetBSD on a VAXstation with 24 megs of RAM, or a Mac LC III+ with 36 megs (http://elsie.zia.io/), where I literally compile everything besides the OS from source, on those machines. Sure, perl takes more than a week, but they work.

This has other benefits: I can easily, without much fuss, run everything I need for a tinc tunnel in 128 megs with tmpfs for logs and no swap on an appliance-like device. It's surprisingly easy to do this starting with the default OS, whereas small Linux systems are often unrecognizable compared with their "normal" distro counterparts.

> Gentoo stands out as probably the easiest one in that regard, your entire system can be rebuilt with "emerge -e world"

Exactly. I love that. It's great, and it'd be wonderful if that were more widespread in other Linux distros.

OTOH, NetBSD takes it further: you can build NetBSD for any architecture on any other so long as you're running a reasonably Unix-like OS with a reasonably relevant compiler.

So, again, Linux in general has so many nice things, but if you want them all in the same place, in the same distro, you're kinda out of luck.

> Go ahead and find a guide showing you how to do a thing that Just Works regardless of the flavor of Linux distro. You can't...

You can, but it's not so much a guide - Ansible roles.

Wise usage of the modules and deconstruction of the personalities (ie: package names, file paths) means a playbook that works for one distribution can work for any.

You can even aim for the stars and support entirely different operating systems!

Not to detract from the cleanliness of BSD - it truly is delightful.

is freebsd more clean than debian in your opinion?..