On Mon, Jun 24, 2024 at 9:51 AM Theodore Ts'o <tytso(a)mit.edu> wrote:
[snip]
The bottom line is that while people seem to be ranting and raving
about systemd --- and there are a lot of things that are terrible
about systemd, don't get me wrong --- I find it interesting that
legacy Unix systems get viewed with kind of a rosy-eyed set of glasses
in the past, when in fact, the "good old days" weren't necessary all
that good --- and there *are* reasons why some engineers have
considered plain text ala the 1970's Unix philosophy to not
necessarily be the final word in systems design.
I must concur here. To bring this back to history, I think it's useful
to consider the context in which, "use text, as it's a universal
interchange format" arose. We _are_ talking about the 1970s here,
where there was a lot more variation between computers than nowadays;
back in that era, you still had a lot of word-oriented machines with
non-power-of-2 word sizes, one's complement machines, and the world
had not yet coalesced around the 8-bit byte (much of networking is
_still_ defined in terms of "octets" because of this). In that era,
yeah, it was just easier to move text between programs: transporting a
program from a 16-bit machine to a 32-bit machine didn't mean changing
parsing routines, for example.
Contrast this to today, where things are much more homogenized, even
between different ISAs. Most ISAs are little endian, and for general
purpose machines 8 bit bytes, power-of-two integer widths, and 2's
complement are pretty much universal (I'm aware that there are some
embedded and special purpose processors --- like some types of DSPs
--- for which this is not true. But I'm not trying to run Unix on
those). Furthermore, we have robust serialization formats that allow
us to move binary data between dissimilar machines in a well-defined
manner; things like XDR -- dating back almost 40 years now -- paved
the way for Protobuf and all the rest of them. In this environment,
the argument for "text first!" isn't as strong as it was in the 70s.
Something that I think also gets lost here is that we also have
well-defined, text-based serialization formats for structured data.
Things like sexprs, JSON, have all been employed to good effect here.
You can have your textual cake and eat your structured data, too!
I think what irks people more is that the traditional, line-oriented
tools we all know and love are no longer prioritized. But to me that's
an invitation to ask "why?" The default assumption seems to be that
the people who don't are just ignorant, or worse, stupid. But could it
be that they have actual, real-world problems that are not well served
by those tools?
So it is with systemd. I don't like it, and the recent, "deletes your
homedir lol you're holding it wrong lmao" thing solidifies that
opinion, but in some ways it's actually _more_ Unix-y than some of the
alternatives. Take smf, where nothing screams "UNIX!!!" at me more
than XML-based config files consumed by giant libraries. Systemd, at
least, is broken into a bunch of little programs that each do one
thing (sorta...) well, and it uses somewhat-readable text-based
configuration files and symlinks.
Indeed, we look at what we consider "real Unix" with some very rosy
glasses. Perhaps that's why we overlook un-Unix-like functionality
like Solaris's "profile" facilities, where the kernel does an upcall
to a userspace daemon to determine what privileges a program should
have? Or how about the IP management daemon, in.ndpd, or the rest of
the libipadm.so stuff?
Unix hasn't been Unix for a very long time now.
- Dan C.