One thing I've come to dislike about systemd

September 24, 2014

One of the standard knocks against systemd is that it keeps growing and expanding, swallowing more and more jobs and so on. I've come around to feeling that this is probably a problem, but not for the reasons you might expect. The short version is that the growing bits are not facing real competition and thus are not being proven and improved by it.

Say what you like about it, but the core design and implementation of systemd went through a relatively ruthlessly Darwinian selection process on the way to its current success. Or to put it more directly, it won a hard-fought fight against both Upstart and the status quo in multiple Linux distributions. This competition undoubtedly improved systemd and probably forced systemd to get a bunch of things right, and it's given us a reasonable assurance that systemd is probably the best choice today among the init systems that were viable options.

(Among other things, note that a number of well regarded Debian developers spent a bunch of time and effort carefully evaluating the various options and systemd came out on top.)

Unfortunately you cannot say the same thing about the components that systemd has added since then, for example the journal. These have simply not had to face real competition and probably never will (unless the uselessd fork catches on); instead they have been able to tacitly ride along with systemd because when you take systemd you more or less have to take the components. Is the systemd journal the best design possible? Is it the option that would win out if there was a free choice? It might be, but we fundamentally don't know. And to the extent that real competition pushes all parties to improve, well, the systemd journal has probably not had this opportunity. Realistically the systemd journal will probably never have any competition, which means that it's enough for it to merely work well enough and be good enough and it probably won't be pushed to be the best.

(Sure, in theory other people are free to write a better replacement for the journal and drop it in. In practice such a replacement project has exactly one real potential user, systemd itself, and the odds are that said user is not going to be particularly interested in replacing their existing solution with your new one, especially if your new one has a significantly different design.)

I would feel happier about systemd's ongoing habit of growing more and more tentacles if those tentacles faced real standalone competition. As it is, people are effectively being asked to take a slowly increasing amount of systemd's functionality on faith that it is good engineering and a good implementation. It may or may not be good engineering (I have no opinion on that), but I can't help but think that real competition would improve it. If nothing else, real competition would settle doubts.

(For instance, I have a reflexive dubiousness about the systemd journal (and I'm not alone in this). If I knew that outside third parties had evaluated it against other options and had determined that it was the best choice (and that the whole idea was worth doing), I would feel better about things.)

By the way, this possibility for separate and genuine competition is one good reason to stick to a system of loosely coupled pieces as much as possible. I say pieces instead of components deliberately, because people are much more likely to mix and match things that are separate projects than they are to replace a component of a project with something else.

(This too is one area where I've become not entirely happy with systemd. With systemd you have components, not pieces, and so in practice most people are going to take everything together. The systemd developers could change this if they wanted to because in large part this is a cultural thing with technical manifestations, such as do you distribute everything in one source tarball and have it all in one VCS repository.)

Sidebar: this doesn't apply to all systemd components

Note that some of what are now systemd components started out life as separate pieces that proved themselves independently and then got moved into systemd (udev is one example); they don't have this problem. Some components are probably either so simple or so easy to ignore that they don't really matter for this. The systemd journal is not an example of either.


Comments on this page:

One of the standard knocks against systemd is that it keeps growing and expanding, swallowing more and more jobs and so on.

Zawinski's Law: Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.

By Albert at 2014-09-24 09:03:03:

I don't want to sound like a hater, but the fact that past a certain point there's no competition to what systemd is doing should probably ring a bell.

Is it indicative that everyone else feels that doing what systemd is doing is a useless/silly/pick your adjective idea?

Is it because that kind of things are simply better not done (or not that way)?

Is it because everyone else simply has better things to do and to focus their efforts on than competing with such a mammoth, so they're just ignoring systemd?

Or is it because systemd is so perfect that it cannot be made better (we already know the answer to this one, don't we)?

By jbd at 2014-09-24 09:40:26:

"Why you cannot trust Lennart Poettering / systemd"

https://www.linkedin.com/today/post/article/20140924071300-170035-why-you-cannot-trust-lennart-poettering-systemd

Interesting article by Howard Chu (OpenLDAP, among others)

One of the standard knocks against systemd is that it keeps growing and expanding, swallowing more and more jobs and so on.

Via a a Hacker News post, this appears to be a purposeful goal of SystemD, per one of the authors:

systemd is in the process of becoming a comprehensive, integrated and modular platform providing everything needed to bootstrap and maintain an operating system's userspace.

The HN post points to a weblog post.

By cks at 2014-09-24 15:06:18:

Albert:

I don't want to sound like a hater, but the fact that past a certain point there's no competition to what systemd is doing should probably ring a bell.

Is it indicative that everyone else feels that doing what systemd is doing is a useless/silly/pick your adjective idea?

Is it because that kind of things are simply better not done (or not that way)?

I don't think it's any of these. If it's any, I think it's closest to the last.

Various parts of systemd clearly do have competition in a general sense; for example in a broad sense the competition for the systemd journal is, among other things, all of the syslog implementations. The competition is not quite feature to feature but it is for the same general role (in the same way that systemd and Upstart themselves competing for the same general role, although the systemd people might have told you any number of reasons why Upstart's missing features meant it wasn't really equivalent).

The lack of competition in specific comes about because these new components aren't competing on a level playing field. No one is out there trying to persuade distributions to replace syslog with the systemd journal (or trying to get them to accept the systemd journal as a new package); instead the systemd journal simply rides along with systemd. If you import systemd above a certain version, you get it 'for free' and you have to go to extra work to remove it, work that risks making systemd work less well.

From 144.92.67.166 at 2014-10-31 16:08:56:

Even though tools such as the journal ride along with the systemd source distribution, nothing gets shipped by a distro that they don't want to ship, if the distros, who all have a strong hand in systemd upstream anyway, think that the journal is the wrong technology, they are free to modify or replace it. I think this still undervalues the degree in which distro managers collectively steer the direction of systemd devlopment, not any one vendor, not any one person.

Written on 24 September 2014.
« Go is mostly easy to cross-compile (with notes)
Why CGI-BIN scripts are an attractive thing for many people »

Page tools: View Source, View Normal, Add Comment.
Search:
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Wed Sep 24 01:44:23 2014
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.