As someone who has been using Linux full time on servers/desktops/laptops/embedded devices and any other computing device I've had since 1998:
Systemd is such an awesome improvement over everything that came before it. It benefits me on a daily basis. The power and ease of configuring services is so far beyond sysinit (and let's be honest, most of us weren't able to write our own init scripts back then and were resorting to stuff like rc.local or inittab anyway which were inadequate solutions).
Timers are generally better than cron. I love that systemd does all the stuff I used to have to do on my own like balancing when jobs run and preventing DST issues.
I like journalctl. I know it bothers some people that the logs are stored in some kind of binary format but the practical difference of journalctl is that logs are easier to filter in a variety of ways.
Anyway, I think making a init system would be a fun hobby too, but the world is a better place because of systemd and I am sick of the belly-aching about it.
Your commentary is undermined by the fact that you do not have the experience with the things that did come before it to know that you are talking about the wrong thing. So you cannot be expressing a fully informed opinion. The assumption that only systemd and van Smoorenburg init exist is a fallacy that was called out by the "Uselessd Guy" several years ago.
The thing that came immediately before systemd, on operating systems like Ubuntu and Fedora, was upstart. It was not van Smoorenburg init.
And that was not systemd's only antecedent. On real Unices there were the Service Access Facility on AT&T System 5 Unix (replacing the running of services through inittab years before Linux even existed), Solaris' SMF, and the AIX SRC. On Linux operating systems there were all of the tools in the daemontools family except for the nosh toolset (which post-dates systemd), InitNG, OpenRC, and a whole bunch of others.
I agree that systemd gets way more hate than it deserves, but it has continual problems on Arch Linux. Wherever you try to shutdown without logging out first, systemd says ”a stop job is running for user manager...", then waits 90 seconds. The issue keeps getting fixed, then resurfacing. People with this same problem are all over the internet.
I have a number of systems running with systemd and a number running with other inits (runit or shepherd). I continue to have more problems with the former than the latter two.
(which cron? Many cron daemons are available. While the traditional Vixie cron was popular with distros for historical reasons, it wasn't difficult to switch to another cron variant or any other job scheduler)
If that feature or other components like journald were designed as an independent package instead of being unnecessarily coupled into systemd, we could all simply choose which tools we want to use.
As someone that has gone through Redhat, SuSE, Debian and Ubuntu over the years having something that works (efficiently) on all these platforms is great.
Trying to work out the init scripts in some distro when you are used to another is a fun way to spend an evening, I don't have the free time for that any more.
It is functionally better but far more brittle, over complicated, heavily coupled, stateful and poorly managed.
The net gain is close to zero. Somewhere between sysv and systemd was the sweet spot.
Edit: I know my point is unpopular, perhaps mostly with RH staff browsing HN late at night, but this is experience from running systemd in production over 4 years on CentOS 7. What was not a concern before is now a concern and is actually costing me time, money and friction regularly. Add the Linux boot process, all the FreeDesktop crud to this and it's a nightmare of a system to look after. Windows/FreeBSD/OpenBSD are far far far easier to manage from this perspective.
The lack of "monoculture" (whether systemd or something else - which the author says is a good thing) is the reason Linux software distribution is still a shit-show and every single distro has their own, incompatible way of doing things so you can't just provide a single binary and get on with your day like you can with Windows or Mac.
Systemd might have its flaws but I'm so grateful that a service/unit file will work on pretty much any distro and that my knowledge of it will serve me on pretty much any modern Linux system, as opposed to years ago where every distro had their own unique way of managing services.
This is especially true since any init system which sets out to "escape from systemd" will eventually end up doing everything that systemd does, at which point it will be as complex as systemd.
HOWEVER - the Linux world has lived with these problems for ages and I deem it also a strength. You can switch around components, mix and match and it will mostly work. You can run KDE apps on GNOME no problemo. I think this is something we should consider a positive. If we can unify around a common service file language, we can swap out service managers easy.
I think systemd has much improved the compatibility of daemon initialization between distros. It used to be that init.d shell scripts distributed with some software often would not work on an arbitrary distro, if it was included at all, because of details of that distro. With systemd, unit files seem to be mostly compatible between distros. So I think it is quite an improvement.
Having a monolithic approach can be advantageous but there are a lot of alternatives for that. For me linux just works. Windows couldn't sort desktop links in a sensible manner for months on the biannual channel and there are enough other problems.
True about the knowledge part, but that often leads to the adoption of suboptimal solutions. I know that the quest for absolute purity is also a problem for a lot of devs but many newer "consolidated" operating systems, especially in the mobile segment, should serve as ample warnings. Yes, those are successful, but they are also basically shit. And that is an objective assessment.
Just provide a single source and get on with your day. It's Linux after all. No need for huge monolithic binary piles of crap from Poettering to start your system.
Dinit has been booting my own system for a long while, and other than a
few hiccups on odd occasions it’s been quite reliable.
Ok, compared to Systemd it lacks some features. It doesn’t know anything
about Cgroups, the boot manager, filesystem mounts, dynamic users or
binary logging. For day-to-day use on my personal desktop system, none
of this matters, but then, I’m running a desktop based on Fluxbox and
not much else; if I was trying to run Gnome, I’d rather expect that some
things might not work quite as intended (on the other hand, maybe I
could Elogind and it would all work fine… I’ve not tried, yet).
On the plus side, compared to Systemd’s binary at 1.5mb, Dinit weighs in
at only 123kb. It’s much smaller, but fundamentally almost as powerful,
in my own opinion, as the former.
I applaud the OP for writing a new init system, and in light of that, the few paragraphs above serve as a good counterpoint to everyone writing how systemd does too much, is doing everything etc. In the past several years it really has been insufferable to be in the vicinity of any discussion related to systemd/init systems.
> everything wrong with the anti-systemd crowd in one sentence
Everything wrong with pro-systemd crowd in one sentence. Namely, ignoring real issues and focusing on strawmen.
Look, systemd as such seems like a decent idea. The real problem I have with systemd is the attitude of the people who run it.
Off the top of my head, issues I've seen with systemd:
* At some point there was no way to say, "bring up this service once the network is up". I mean, there was technically a "network" target, but it considered "localhost" as a network. So if, say, you have automounted NFS, the automounter starts running before your main interface has DHCP. This setup been a widely-used configuration for decades; the systemd maintainers didn't care.
* At some point, if you typed "reboot ; exit" in an ssh session, the "reboot" would hard-kill your ssh session and your shell before the "exit" would be run; so your ssh connection would then hang until the machine came up again and refused a TCP resend request.
* The whole thing with systemd reading the kernel's command-line, deciding that "debug" was meant for it, and spamming the logs making it completely unable to boot; and forcing the kernel to introduce a work-around to hide "debug" from systemd.
* The whole interface renaming thing that's happening in Debian now; every time we've upgraded our test systems from jessie to stretch, and then stretch to buster, we've had to spend dozens of man-hours figuring out why our network configurations aren't working.
The problem here isn't so much that there are these sorts of bugs; the problem is that there seems to be an attitude of, "Well my set-up works; yours doesn't matter." That's not the attitude such a core piece of infrastructure should have.
And your response has exactly the same attitude. "systemd is fine; anyone who doesn't like it must be a raving lunatic and can be safely ignored."
Nobody should be threatened with violence over a piece of software, and the comment you responded to is absolutely out of line. But the reason people are becoming raving lunatics is because they're not being listened to.
I'm a Gentoo user and your problems with "systemd" look quaint to me. I mean I've heard about such a thing as "systemd" that turns Linux into Lindows, but I've no idea why anyone would use it when an awesome Linux (a real one, not Lindows) is within reach...
You know Lindows used to be the name of a Linux distribution whose main focus was trying to look like windows and offering some compatibility with windows through wine?
It was still a Linux distribution and back then, no one had ever thought of systemd.
Saying using systemd turns Linux into Lindows just shows how ignorant you are of linux history, of that "systemd" thing you've just heard of and of what makes Linux and Windows different.
Being a Gentoo user doesn't make one into a Linux guru. In fact, starting your comment by stating you're a Gentoo user as if it will give more weight to what follows is just plain arrogant. It shows that you're definitely not a linux guru, what distribution you use/have used don't matter at all for that.
I feel for Gentoo users, people like you make them look bad.
[+] [-] xiaomai|6 years ago|reply
Systemd is such an awesome improvement over everything that came before it. It benefits me on a daily basis. The power and ease of configuring services is so far beyond sysinit (and let's be honest, most of us weren't able to write our own init scripts back then and were resorting to stuff like rc.local or inittab anyway which were inadequate solutions).
Timers are generally better than cron. I love that systemd does all the stuff I used to have to do on my own like balancing when jobs run and preventing DST issues.
I like journalctl. I know it bothers some people that the logs are stored in some kind of binary format but the practical difference of journalctl is that logs are easier to filter in a variety of ways.
Anyway, I think making a init system would be a fun hobby too, but the world is a better place because of systemd and I am sick of the belly-aching about it.
[+] [-] JdeBP|6 years ago|reply
Your commentary is undermined by the fact that you do not have the experience with the things that did come before it to know that you are talking about the wrong thing. So you cannot be expressing a fully informed opinion. The assumption that only systemd and van Smoorenburg init exist is a fallacy that was called out by the "Uselessd Guy" several years ago.
* https://web.archive.org/web/20190306213420/http://uselessd.d...
The thing that came immediately before systemd, on operating systems like Ubuntu and Fedora, was upstart. It was not van Smoorenburg init.
And that was not systemd's only antecedent. On real Unices there were the Service Access Facility on AT&T System 5 Unix (replacing the running of services through inittab years before Linux even existed), Solaris' SMF, and the AIX SRC. On Linux operating systems there were all of the tools in the daemontools family except for the nosh toolset (which post-dates systemd), InitNG, OpenRC, and a whole bunch of others.
* http://jdebp.uk./FGA/unix-service-access-facility.html
* http://jdebp.uk./FGA/inittab-getty-is-history.html
* https://blog.darknedgy.net/technology/2015/09/05/0/
[+] [-] correct_horse|6 years ago|reply
[+] [-] _emacsomancer_|6 years ago|reply
[+] [-] pdkl95|6 years ago|reply
(which cron? Many cron daemons are available. While the traditional Vixie cron was popular with distros for historical reasons, it wasn't difficult to switch to another cron variant or any other job scheduler)
If that feature or other components like journald were designed as an independent package instead of being unnecessarily coupled into systemd, we could all simply choose which tools we want to use.
[+] [-] stuaxo|6 years ago|reply
As someone that has gone through Redhat, SuSE, Debian and Ubuntu over the years having something that works (efficiently) on all these platforms is great.
Trying to work out the init scripts in some distro when you are used to another is a fun way to spend an evening, I don't have the free time for that any more.
[+] [-] unknown|6 years ago|reply
[deleted]
[+] [-] enriquto|6 years ago|reply
[deleted]
[+] [-] m0xte|6 years ago|reply
The net gain is close to zero. Somewhere between sysv and systemd was the sweet spot.
Edit: I know my point is unpopular, perhaps mostly with RH staff browsing HN late at night, but this is experience from running systemd in production over 4 years on CentOS 7. What was not a concern before is now a concern and is actually costing me time, money and friction regularly. Add the Linux boot process, all the FreeDesktop crud to this and it's a nightmare of a system to look after. Windows/FreeBSD/OpenBSD are far far far easier to manage from this perspective.
[+] [-] Nextgrid|6 years ago|reply
Systemd might have its flaws but I'm so grateful that a service/unit file will work on pretty much any distro and that my knowledge of it will serve me on pretty much any modern Linux system, as opposed to years ago where every distro had their own unique way of managing services.
[+] [-] turbinerneiter|6 years ago|reply
HOWEVER - the Linux world has lived with these problems for ages and I deem it also a strength. You can switch around components, mix and match and it will mostly work. You can run KDE apps on GNOME no problemo. I think this is something we should consider a positive. If we can unify around a common service file language, we can swap out service managers easy.
[+] [-] saagarjha|6 years ago|reply
This doesn’t have to be the case; there can be multiple implementations of one standard (like we have it the web).
[+] [-] mongol|6 years ago|reply
[+] [-] raxxorrax|6 years ago|reply
True about the knowledge part, but that often leads to the adoption of suboptimal solutions. I know that the quest for absolute purity is also a problem for a lot of devs but many newer "consolidated" operating systems, especially in the mobile segment, should serve as ample warnings. Yes, those are successful, but they are also basically shit. And that is an objective assessment.
[+] [-] viraptor|6 years ago|reply
This was the motivation behind snap / flatpack / appimage. We're getting there. Not in the way I'd prefer, but for end-user apps it works.
[+] [-] sildur|6 years ago|reply
[+] [-] LessDmesg|6 years ago|reply
Just provide a single source and get on with your day. It's Linux after all. No need for huge monolithic binary piles of crap from Poettering to start your system.
[+] [-] miloshadzic|6 years ago|reply
[+] [-] jakeogh|6 years ago|reply
Follow the handbook, it's worth it. Once that gets too tedious, checkout https://github.com/jakeogh/sendgentoo
[+] [-] enriquto|6 years ago|reply
[+] [-] unknown|6 years ago|reply
[deleted]
[+] [-] jcelerier|6 years ago|reply
[deleted]
[+] [-] gwd|6 years ago|reply
Everything wrong with pro-systemd crowd in one sentence. Namely, ignoring real issues and focusing on strawmen.
Look, systemd as such seems like a decent idea. The real problem I have with systemd is the attitude of the people who run it.
Off the top of my head, issues I've seen with systemd:
* At some point there was no way to say, "bring up this service once the network is up". I mean, there was technically a "network" target, but it considered "localhost" as a network. So if, say, you have automounted NFS, the automounter starts running before your main interface has DHCP. This setup been a widely-used configuration for decades; the systemd maintainers didn't care.
* At some point, if you typed "reboot ; exit" in an ssh session, the "reboot" would hard-kill your ssh session and your shell before the "exit" would be run; so your ssh connection would then hang until the machine came up again and refused a TCP resend request.
* The whole thing with systemd reading the kernel's command-line, deciding that "debug" was meant for it, and spamming the logs making it completely unable to boot; and forcing the kernel to introduce a work-around to hide "debug" from systemd.
* The whole interface renaming thing that's happening in Debian now; every time we've upgraded our test systems from jessie to stretch, and then stretch to buster, we've had to spend dozens of man-hours figuring out why our network configurations aren't working.
The problem here isn't so much that there are these sorts of bugs; the problem is that there seems to be an attitude of, "Well my set-up works; yours doesn't matter." That's not the attitude such a core piece of infrastructure should have.
And your response has exactly the same attitude. "systemd is fine; anyone who doesn't like it must be a raving lunatic and can be safely ignored."
Nobody should be threatened with violence over a piece of software, and the comment you responded to is absolutely out of line. But the reason people are becoming raving lunatics is because they're not being listened to.
[+] [-] JdeBP|6 years ago|reply
[+] [-] LessDmesg|6 years ago|reply
[+] [-] n0rbwah|6 years ago|reply
It was still a Linux distribution and back then, no one had ever thought of systemd.
Saying using systemd turns Linux into Lindows just shows how ignorant you are of linux history, of that "systemd" thing you've just heard of and of what makes Linux and Windows different.
Being a Gentoo user doesn't make one into a Linux guru. In fact, starting your comment by stating you're a Gentoo user as if it will give more weight to what follows is just plain arrogant. It shows that you're definitely not a linux guru, what distribution you use/have used don't matter at all for that.
I feel for Gentoo users, people like you make them look bad.
[+] [-] miloshadzic|6 years ago|reply
[1]: https://www.shlomifish.org/humour/by-others/funroll-loops/Ge...