Hacker News new | past | comments | ask | show | jobs | submit login

I've used several Linux init systems over the years.

OpenRC is the only one I've ever liked using. Not sure why it never seemed to catch on with any of the major distros, even before Systemd made itself nigh-unavoidable.




Probably not a popular opinion in a systemd world (and being responsible for a lot of critical systems where things don't change much but absolutely have to work every day), the nice thing about sysv is all you need to know a little bit about shell commands and every day is groundhog day (i.e. not getting any calls because X has broken after touching Y). Not great for companies selling support, but great for those selling high-rel.


I agree; not so much that I've found systemd to be unreliable, so much as that it is far more opaque than even the most involved SXX/KXX SysV shell script; I can debug a shell script, but when systemd does do something unexpected, it's utterly inscrutiable.


I will take the opposite opinion. I think that systemd overall reduces the quantity, or surface area, for bugs by making many standard types of service requirements for dependencies, restarting, etc. simple configuration options.


Right but you never see what it's actually doing like you do with sysv. You have a high-level description of what you want to happen and when it messes up (invariably at 3am, invariably on a mission-critical system) you're completely in the dark about what it's trying to do. You can (and people do) mitigate this by just writing imperative startup scripts that systemd calls, but then that leaves the question of what the point is.


Managing services and dependencies and orchestrating all of that is the point. That orchestration “boilerplate” has to be correct and you can reasonably know that it is with a program made for that. If you mess up your service’s config, the problem will be local (your service won’t start), while without a declarative stance your whole system would be in an inconsistent state.


Wait, no; you're describing the exact opposite of what happens. If a sysv init script gets messed up that service fails and the system trundles on. When a unit file is wrong the whole server just sits there refusing to do anything while it waits for 30 seconds, them 90, then 120...

OpenRC is closer to systemd than sysv in that regard, though at least it logs sanely


> while it waits for 30 seconds, them 90, then 120...

That depends on how it’s configured, but that is the correct behavior under the given config. You can specify timeouts, or what depends on what and most of it is sane.

For example, what would be the logical thing to do with a server that has no internet connection? You can only wait for that.


You can debug a shellscript, but can you debug the complex orchestration of many of them with a stateful and error-prone hardware system beneath it is responsible for upbringing? It can’t even log during the early boot phase, while systemd has that solved as well.


Yes. I've done that plenty of times on Solaris (pre 10); including logging at the PROM level...


And more importantly SysV literally consists of the shell commands that get run, which is a huge win for debugging. The more declarative systems all themselves eventually turn into a bunch of imperative exec calls, but you can't see them (runit may be the closest to keeping the visibility of sysv). And, I mean, I really love GNU shepherd but at 3am with a boss yelling at me I really just want the actual shell commands being run.


Except that you will get that 3am call every night with such a system, while systemd can actually handle failures properly with proper retry strategies, no concurrency problems, etc. And any failure will be local to a service, not the whole system state.


I mean, no? I spend a lot more time fixing init problems now than I did 15 years ago. It keeps me employed, so yay, but it's just annoying to have consistent problems I didn't previously have.


I have serious dislike for what I perceive as (unnecessary) complexity of Systemd. I made a quick analysis of different init systems when that nigh-unavoidability had not yet happened. OpenRC seemed then the most reasonable of the ones I read about (for qualities I have since forgotten), and your comment stirred this memory.

So, a question: why did/do you like using it?


Found the ergonomics of rc-update and other commands exceptionally decent, and consistent enough that I could usually guess the correct invocation even if I hadn't used it in a while. Never saw it break or tie itself in knots (which, on Gentoo, at least as I managed my Gentoo systems, was an accomplishment). I find the config syntax non-awful. Every other init system I've tried is worse (IMO, obviously) on one or more of those fronts, and not enough-better on any others to make up for it.


my biggest pet peeve is having "rc-update <action> <name>" vs "rc-service <name> <action>". systemctl does this consistently, at least.


With Systemd you have a configuration language and a defined surface.

With OpenRC you have unconstained init scrips written in a Turing-complete language.

How exactly is Systemd more complex?


Whether it is actually more complex, I don't know. I didn't claim so for actual reasons, and your comment is one of them.

I'm just a user, not a package or system maintainer, whose opinions are way more substantive than mine. Distributions have overwhelmingly chosen Systemd, so it seems obvious that it offers real benefits (including simplicity, I must assume).

As a user I just lament the missed opportunity to simplify the system and service management also from my point of view. I don't see Systemd as simpler than other init systems, just different.


Timing. When the Debian Hoo-Hah happened, OpenRC was one of the several systems evaluated, but a lot of the features, in the version that Debian had, that people were looking for weren't there yet, and it wasn't even packaged up as a stable Debian package. The OpenRC proponents commented that the features could be added and it could be packaged. But the features and packaging weren't there at the time.

(Indeed, ironically, the van Smoorenburg init+rc system actually added features a short while later that did away with much of the complaints about lengthy shell scripts full of mostly the same boilerplate. Similarly, it later became possible to drive something like s6 with OpenRC, to get proper supervision.)

See https://lists.debian.org/debian-ctte/2013/12/msg00234.html and https://lists.debian.org/debian-ctte/2014/01/msg00067.html and https://lists.debian.org/debian-ctte/2014/01/msg00358.html and others. To quote Andreas Barth in 2014, months into the discussion, for starters:

> For openrc, this is a moving target. When I looked at it first during the start of this discussion, it was not even in experimental (and still is not in unstable), and documentation was hard to get. This has improved but still it is worse then the others. Also having a no-double-fork-setup for demons is something really useable, and I haven't seen any answer on that during time of writing this.


it's strange that "liked using" isn't the goal in general




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: