Re: OT: Open letter to the Linux World

From: Rob Landley
Date: Wed Apr 08 2015 - 20:37:23 EST


On Wed, Apr 8, 2015 at 8:12 AM, Denys Vlasenko <vda.linux@xxxxxxxxxxxxxx> wrote:
> On Tue, Aug 12, 2014 at 9:38 PM, Christopher Barry
> <christopher.r.barry@xxxxxxxxx> wrote:
>> So why would very smart people who love and use Linux want to create or
>> embrace such a creepy 'Master of All' daemon? Ostensibly, it's for the
>> reasons they say, as I mentioned at the top. But partially I think it's
>> from a lack of experience. Not a lack as in programming hours, but a
>> lack as in time on the Planet. Intelligence alone is not a substitute
>> for life experience and, yes I'll say it, wisdom. There's no manual for
>> wisdom. Implementing systemd by distros is not a wise move for them over
>> the long term. It will, in fact, be their ultimate undoing.
>>
>> Partially it's the larger-than-life egos of the people involved. Has
>> anyone actually read what Poettering says about things? Wow. This guy
>> is obviously convinced he has all the answers for everyone. Traditional
>> ideas about simplicity and freedom are quaint, but have no real place
>> in a 'modern' OS. Look, he's just smarter than you, so get over it and
>> move aside. He knows what's best, and he has it under control. How old
>> is this guy anyway? 12 or so? He's a fucking tool (IMHO).
>
> Yes, this is *exactly* the problem with systemd.

Not to me.

I responded to systemd the way I responded to udev, "that's too
complicated, lemme see if I can clone a subset of it". In busybox this
resulted in mdev, so you had an alternate implementation that did the
same thing and could swap between them. (This lead to me butting heads
with Greg KH and Kay Sievers on more than one occasion, because they
were convinced sysfs was a private export from their kernel software
to their userspace software which nobody else would ever use and they
could force upgrades on both sides in lockstep. And they continued to
act this way even after Linus chewed them out about it, but I worked
around it and moved on.)

But systemd has no clear goals, no specification, the single
implementation is a moving target... it's basically a microsoft
product. Remember the days when the *.doc file format was "what
microsoft offices produces and is capable of consuming", and the
staroffice guys went to GREAT LENGTHS to reverse engineer it made
possible only by the fact that Microsoft went years between releases
so they had time to work out what the office 6 format was before
office 7 came out, and so on. Same for the Excel file format being
"what microsoft's implementation produces and consumes is correct by
definition, every strange corner case bug of that one magic
implementation _is_ the spec and there is no other."

Samba reverse engineered windows NT's network protocols the same way,
producing a giant "if it's this version, do this. If it's this
versino, do this. Avoid doing this because it bluescreens this
specific version of NT for no apparent reason..."

i thought we'd moved _on_ from the days of "this site optimized for
internet explorer", but systemd is that all over again. Linux is all
about modularity where you swap out openssh for libressh (or dropbear)
and swap out xfree86 for x.org and swap out glibc for eglibc (or
uclibc or musl) and you have at least a fighting chance to make it
work. Unfortunately, the systemd developers take the suggestion that
you might want to keep the option of doing that open as some sort of
personal attack.

I don't care what they're doing. I don't want to _have_ to care what
they're doing. I want a description of the problem space from which I
can write a new implementation. If I can't even reverse engineer such
a thing because it's still too much of a moving target several years
into the project, then what they're doing is crazy and I refuse to get
any of it on me.

> Not the quality of the code. Not the desire to fix some
> old design problems of SystemV-style init.

I'm still unclear on what problem they were actually trying to solve.
(In my defense, _they_ seem unclear. We're way beyond Zawinski's law
here...)

> Code quality is good. The goals are legitimate.

1) Not really, but that's beside the point. 2) What _are_ the goals?
They keep changing...

> The problem is: the author is a control freak.

I don't care. Honestly don't care. We used cdrecord for years from a
solaris bigot who openly insulted linux in the README, Openssl's
maintainer wasn't that much happier about Linux (until he needed
money), put up with xfree86's insular development for a couple
_decades_ before that maintainer finally went over the line.

Heck, the FSF's entire "It's GNU Linux, Dammit! Call it by its proper
name: GNU/Linux/dammit" campaign is seriously irritating, and part of
what I was doing with busybox was trying to create a linux development
system without a single gnu package in it (busybox, uclibc, tinycc)
capable of rebuilding itself under itself, and then ask Stallman "I
know you're going to insist this isn't a Linux system but a
GNU/Linux/Dammit system, I'd just like you to try to explain _how_."
(Preferably capturing this on video.) But that was only a small part
of my motivation or I wouldn't have bothered to spend years poking at
busybox (and more years poking at toybox to make android
self-hosting).

My problem is the blank incomprehension on their part when I go "If I
were to clone a minimal subset of systemd in busybox or toybox, where
would I start reading?" and they can't fit in their head the idea that
anybody would _want_ to do that, and if they think I'm serious they
feel threatened and start changing stuff faster. It's a bit like Adobe
going "you want to... clone the flash plugin? Why would you do that?
You don't need a fresh implementation, we've got one! See, we're
giving it to you. Take what we give you, it's free, you ungrateful
little..."

I don't care about the personality of the developers behind the
project. I don't want to use their code, I want to write a new one.
Unfortunately the systemd developers seem to treat linux machines
without systemd the way microsoft treated PCs sold without their OS
preinstalled. ("Bare machines are piracy!" No really, they had a web
page to that effect last decade.)

> I don't mean this to be an insult, it's my honest assessment
> of his personality. He wants to control everything.
>
> And I am convinced he is knowingly lying about it.

I don't care if he's stabbing kittens. I want a modular design
consisting of interchangeable parts available from multiple sources.
This is why Linux succeeded. This is why the PC succeeded. When
netscape released its source code and mozilla spent its first 5 years
floundering like a beached whale (before galeon forked off and threw
out 90% of the code, and then firefox forked off from _that_ to
finally get a usable browser), the KDE guys didn't wait and wrote
Konqueror, which Apple forked as webkit and then Google forked that as
Chrome. This is how it _works_. You have multiple competing
implementations.

The systemd guys are very all-or-nothing, and treat simply asking
"what else is out there" as an attack.

Look, the systemd problem is self-limiting: the smartphone is to the
PC what the PC was to the minicomputer and mainframe before it. A
decade from now you'll plug your phone into a USB3 hub with a
keyboard, mouse, and HDMI adapter (or chromecast) and that will _be_
your workstation. All the "my vax is way more powerful than your dinky
little compaq and I will cling to it unto death" arguments will
resolve themselves in time via the obvious solution.

Android has a no GPL in userspace policy, systemd is gpl. Android has
its own init system it's not moving off of, and android is shipping a
billion devices annually while the PC gets kicked up into the server
space the way big iron always is by the next generation of devices
everyone actually interacts with. (This time that's called "the
cloud", and it's every bit as lucrative and boring as punch cards and
JCL and timesharing and so on.)

Since systemd is excluded from android, I'm not getting particularly
worked up about it because if I didn't care what the mainframe guys
were doing when I was learning DOS, I don't see why I should care what
the cloud guys are doing while trying to bring up a native development
environment on my phone. I gave a talk about this in 2013
(http://landley.net/talks/celf-2013.txt).

> I no longer think that talking to Lennart about this is useful.
> I and other people tried. It doesn't work.

I actually had a brief interaction with the guy a few years back
because I was the one saying "separate /bin and /usr/bin directories
are a historical artifact we've outgrown" back in 2001, and he wanted
to reference my 2010 busybox post on the subject to support what he
was doing there and I went "sure". (And thus the old post went viral
and I wound up doing an updated version of it for some magazine with a
couple numbers corrected and citations to primary sourcess... where is
that... http://landley.net/writing/hackermonthly-issue022-pg33.pdf)

Anyway, he seemed nice enough at the time. I'd switch to BSD before
using a Linux distro based on systemd, but I have nothing personally
against its author.

> I am just waiting for a sufficient number of people to get pissed off,
> fork the project, and bring sanity to it, which in this case means
> splitting it up into modular bits, and probably dropping
> some parts.

Last time around this was me (udev->mdev). I've pondered doing this
for systemd (I have half a design for a "lunchd" loosely based on
macosx launchd without xml config files), but it hasn't been a
priority because I don't _care_ what big iron is doing while I'm
trying to turn android into a development environment. One is the
future, the other really isn't.

As long as android isn't merging systemd, the problem should solve
itself. It may take conventional linux down with it, but the FSF was
trying pretty hard with its GNU/Linux/Dammit campaign and the
community at large avoided that (and I gave a talk about _that_ too:
http://landley.net/talks/ohio-2013.txt

If you're more worked up about it than I am: write an alternative. The
main reason I haven't bothered yet is I don't see the _point_ of
systemd. I don't have a clear understanding of the problem they're
trying to solve, let alone how they're going about it. I'm told all
sorts of packages now have systemd hooks, which seems a bit like
bundling RPM and DEB build recipes in with your source tarball. It's a
thing people largely stopped doing when portage and pacman and bitbake
and so on cropped up and there were enough _different_ ones it became
somebody else's problem. Just because systemd has Red Hat's big
pointy-haired weight thrown behind it and ubuntu went "well it can't
be a worse idea than redirecting #!/bin/sh to point to dash" doesn't
make it interesting technology.

Rob
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/