Live data from Hacker News

Why systemd is winning the init wars and other things aren't

utcc.utoronto.ca

151–158 of 158 posts

Re: Why systemd is winning the init wars and other things aren't

#151

Earlier quoted context omitted.

Then you have two init systems. That's even more complicated than having only systemd.

We already do. I think most people in this discussion aren't realizing that the current sysV init system is an extremely small pid 1 /sbin/init, and most of the logic in external rc scripts. Moving rc scripts to systemd declarative syntax is fine. The important part with respect to software architecture is less complexity in pid 1. Subprocesses of init can be safely updated and restarted. More code in init is a real…

At the same time, there is a point to be made for having things in a single process - this makes it much easier to ensure that the crucial parts of the init system are available and working.

Re: Why systemd is winning the init wars and other things aren't

#152

Earlier quoted context omitted.

> You are arguing "this isn't Unix!!!" but that is the whole point. You can win an argument with a mountain climber by pointing out he is going downhill, but not a skier; since for a skier, going downhill is the point. Besides Linux is not UNIX either. And it's 2014 already, we found that some UNIX choices (like "don't dictate policy" in X Server were bad) and others led to underpowered tools. It's not like we're sti…

You just described both my development environment, and my production environment. Neither needs an overly complicated init system to work.

Really. You develop on the equivalent of a VT100 terminal? You don't use a web browser, or Xwindows, just a tty? Are you sure about that?

Re: Why systemd is winning the init wars and other things aren't

#153
post #9

"init wars" what a joke. the fact that systemd has "declared war" on other init implementations is all the information I need.

See, you're missing all the fun drama: http://lwn.net/Articles/583182/

No thanks.

Re: Why systemd is winning the init wars and other things aren't

#154

Earlier quoted context omitted.

We already do. I think most people in this discussion aren't realizing that the current sysV init system is an extremely small pid 1 /sbin/init, and most of the logic in external rc scripts. Moving rc scripts to systemd declarative syntax is fine. The important part with respect to software architecture is less complexity in pid 1. Subprocesses of init can be safely updated and restarted. More code in init is a real…

At the same time, there is a point to be made for having things in a single process - this makes it much easier to ensure that the crucial parts of the init system are available and working.

Can you elaborate? I don't understand this perspective.

Re: Why systemd is winning the init wars and other things aren't

#155
post #97

Earlier quoted context omitted.

> There's also a huge amount of redundancy inside, and between, SysVinit, atd, crond, supervisor, syslogd and the other things systemd replaces. Such as? I'm pretty sure code shared between these systems lives in (or could easily be moved to) shared libraries, specifically to avoid this problem. But this is orthogonal to the design of the init system. > But DRY is engineering philosophy. Each repeated piece of logic…

> Specifically, DRY is not an excuse to forbid competing init system implementations No-one is forbidding anything. You can run Debian with any init you choose. All we ("systemd proponents") want is that when upstream software decides to depend on something systemd provides, the debian maintainers don't have to (they can, if they feel like it) bend over backwards to replicate all systemd features for non-systemd plat…

> You can run Debian with any init you choose.

When layers above the init system begin to make hard dependencies on it, this will be unavoidable in practice. This is the problem, since it either takes away my choice in init system, or requires unpaid volunteers to work on removing the dependency. Neither is desirable, and the grandparent's argument is that this could all have been avoided if the systemd developers had made better design choices.

Don't get me wrong, I want systemd to be an option. I like the idea of using cgroups to manage services. I do it every day. What I do not want, however, is for systemd to be a requirement for having a working system.

Re: Why systemd is winning the init wars and other things aren't

#156
post #98
post #82

Earlier quoted context omitted.

I am not seeing any justification for why these tools HAVE to be a single, monolithic tool. > script glue That's what shell scripts[1] are FOR - they are the minimal glue that binds the large applications together. Besides, "big brittle mess" is a matter of opinion. Are you trying to tell me that this OpenRC script is a "mess" that needs to be replaced, taken from /etc/init.d/cupsd my current desktop: #!/sbin/runscri…

To your openrc example: How do you statically determine what state the system is meant to be in this moment? Without doing that, you are unable to determine whether the system is in that state, and so unable to take corrective actions. Furthermore, how do you even determine whether or not a service is still running? Init can not sanely do that for anything but the simplest cases, and a non-pid-1 process can not do th…

I'm pretty sure openrc uses (or has the option to use) cgroups for dealing with just this. Containerizing services isn't a new idea--Solaris and FreeBSD can do this already, for example.

Regardless of the init system, we've had the ability to control daemons with cgroups already for some time (cgexec and friends). Even in humble sysvinit, I can edit an initscript and ensure that the service it starts runs in a cgroup. Hypothetically, I could even do this inside of start-stop-daemon.

Re: Why systemd is winning the init wars and other things aren't

#157
post #105

Earlier quoted context omitted.

I think what the parent is getting at is that, even though there are many daemons and tools that make up systemd (and even though they are each scoped to a particular concern it addresses), most of them are tightly coupled to one another. To run logind, for example, I need systemd to run as PID 1. This monolithic architecture is unsettling in the long term--it raises the barrier to entry for independent innovation in…

You could say the same thing about the Linux kernel, yet it hasn't stopped improving.

First, the boundary between Linux and the rest of the system is very well-defined. I can run my userspace on top of multiple different kernels, since my userspace is loosely coupled to Linux (yes, there are exceptions, but not so many that it prevents GNU/kfreebsd or GNU/solaris from working, for example). This is not the case with systemd, which over the past several years has been subsuming larger and larger swaths of userspace, introducing all sorts of tight couplings and inter-dependencies that weren't there before.

Second, the pace of innovation in Linux is definitely slower than in userspace, and getting your patches adopted is more difficult relative to most userspace programs (this is the high barrier to entry I spoke of). Your patches either have to get approved by Linus et al., or you have to host them out-of-tree and hope your users know how to apply them and compile the kernel themselves (and if you want to do this for them, you have to do it for every kernel you need to support). If you're lucky, your patches can be isolated into a kernel module, in which case you "only" need to keep it up-to-date with the kernel API (which is a moving target).

Contrast this to working on a program like, say, xinetd. While the option for submitting patches still reduces to "go through the maintainer" or "host them yourself", the "host them yourself" option is much more tenable, since the codebase is smaller, and the "don't break userspace" policy Linus enforces ensures you aren't coupled to a moving-target API. The lower barrier to entry brought on by loose coupling explains why Gentoo can get away with forking udev, but not large swaths of the Linux kernel.

Systemd has the effect of making innovation in the plumbing layer (xinetd, syslog, udev, cron, etc.) a lot like innovation in the Linux kernel. Can you imagine the absurdity of having to maintain a version of xinetd for each separate systemd API change?

Re: Why systemd is winning the init wars and other things aren't

#158
post #130

Earlier quoted context omitted.

fallacy #23: argumentum ad novitatem

I'm not claiming that hot-plug is better, but that hot-plug is the status quo of the kernel. Modern here means that it integrates well with a modern linux kernel. Also grouping processes together and isolating them is not really new but a proven technology (FreeBSD jails, virtualization). It's also pretty hard to argue against that the knowledge about security of unix systems didn't increase. The irony about the fall…

You are right.

I am actually in a phase of archeology where I read a lot of rob pikes, ken thompson, ted nelson, linus torvalds, esr ... (http://harmful.cat-v.org/) and I begin to question myself a lot of things. Even the statu quo.

At work I deal with a lot of dependency hell (system and distributed software requirements, confinments (VM and chroot or jails)) and I begin to doubt some of "the wisdom and progress" I have been adopting.

I search for answers now because I think some old "conceptual bugs" are bitting us very hard (like the way http url are built, threading, shared libraries, the abuse of concurrency) and I don't know anymore what progess is.

I just kind of feel status quo is a very old hard rock band that should be forgotten :)

Post reply on HN