[ale] What divides Linux Distros?

Steve Litt slitt at troubleshooters.com
Sun Feb 7 09:25:47 EST 2021


On Sat, 6 Feb 2021 11:03:23 -0500 (EST)
JEFFREY LIGHTNER via Ale <ale at ale.org> wrote:

> My favorite answer to this kind of question was given to me by a
> consultant years ago.   
> 
> Initially I'd learned cpio on AT&T UNIX and continued to use it for
> years through other UNIX variants.   Later I began seeing people
> using tar instead but had not really found anything that made tar
> seem like a better answer.
> 
> The product the vendor was installing used tar bundles and suggested
> doing tar backups.   I asked the consultant why one would prefer tar
> over cpio or vice-versa.   His one word reply:
> 
> "Religion"
> 
> Almost all arguments I've seen since then have essentially boiled
> down to that though people will go to great lengths to "explain" why
> their "preferences" are somehow more valid than the "preferences" of
> others.
> 
> By the way I did quit using cpio for most purposes years ago in favor
> of GNU tar which  has far more flags than the early UNIX tar commands
> had.
> 
> P.S.  I'm a member of the church of systemd.  :p

You know, you bring up a good point. Let me tell you about my
religion...

When I repaired consumer audio for a living, I noticed that modular
equipment was two to ten times easier to repair. By modular I mean few
interfaces, thin interfaces, and easy to disconnect interfaces.

A few years later I became a developer, and modularity took on
heightened importance. Goto-encumbered software required five times
more brainwork to debug. Global variables made things much harder to
debug, because without a debugger trace you couldn't tell who changed
the global variable. I'm a big fan of private variables in classes,
because something using the *interface* of an object of the class has no
business messing with the *implementation* of that object. By "has no
business messing with", I mean letting the user of the class mess with
the implementation makes debugging much harder.

Stuff breaks. I like stuff that's easy to fix, and that means modular.
One person in this thread said systemd is as complex as tar. Yeah, from
the outside, this might be true. But when something breaks inside the
systemd world, good luck trying to go in and fix it.

Some folks say systemd is modular because it's made of lots of
individual pieces. That's not enough. The pieces need to have few
interactions, thin interfaces, and no feedback loops if it can be
helped. 

Here's a block diagram I drew of daemontools, which is very similar to
the process supervisor part of runit or s6:

http://troubleshooters.com/linux/djbdns/images/mm_daemontools.svg

The runit init system is called by the kernel, runs some early boot rc
files, and then forks off its process supervisor, so using it as an
init system isn't much more complex than using it as a process
supervisor.

Notice the referenced block diagram of daemontools had both blocks and
lines, representing interactions, between the blocks. As far as I know,
*nobody* has ever drawn a block diagram of systemd that includes both
blocks and interactions. That says something about its simplicity or
complexity.

Anyway, my religion is this: I value repairability. I value
interchangeable parts. I build my own computers from parts not to save
money, but to understand what's inside so I can repair it if need be.
When making Free Software, I try mightily to include as few
dependencies as possible, so some guy screwing up his library won't
screw up my software.
 
So I guess you're right. It's religion. But here's the thing: A distro
based on my religion doesn't prevent you from practicing yours. But a
distro based on your religion prevents me from practicing mine.

SteveT

Steve Litt 
Autumn 2020 featured book: Thriving in Tough Times
http://www.troubleshooters.com/thrive


More information about the Ale mailing list