Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Any distro could have flipped the switch and easily reverted to preserve backwards compatibility, but none did.

No, many of them did. The problem is that this is not the only such issue, and distribution maintainers don't have unlimited time and resources to re-evaluate every individual default chosen by upstream, so most of the upstream defaults end up in the distributions. The distributions can fix this once you identify the problem, as e.g. Debian has done, but "you can change it" is no argument for a bad default, because changing it is work in the meantime things are broken.

> Again, you don’t need to fork systemd to change this behavior. If that was the case I would understand the criticism. But that is not the case. The alternative workflow is perfectly well supported. All we’re arguing about is the defaults.

If the defaults weren't important then why are you arguing about them?

> Systemd developers go out of their way to not break things.

Yet tmux and screen are broken on the distributions that use upstream's default.

> You’re arguing for making up some abstraction layers for plug-n-play components that no one is demanding, and would probably never be used. Modularity has a cost, and not only that, but you also have to know where to draw the line between core and addon.

You say that as if it wasn't the way everything works in many other init systems. The init system doesn't typically have a DNS server, you can use dnsmasq or BIND or unbound or djbdns or whatever you like. It doesn't have its own cron, there are many choices and you can choose any of them.

And just drawing any hard lines would help. Even if you had to replace two modular components to replace one thing, or one component that does two things when it should be one, that's certainly a lot more feasible than having to understand and touch thirty integrated pieces to replace one component.



> The problem is that this is not the only such issue, and distribution maintainers don't have unlimited time and resources to re-evaluate every individual default chosen by upstream, so most of the upstream defaults end up in the distributions.

Well they should. Otherwise, what’s the point of them?

> Yet tmux and screen are broken on the distributions that use upstream's default.

Of their own volition. And btw, distributions could patch them to work with systemd. None of this is systemd’s fault. Since when is it upstream’s job to make sure downstream properly integrates their software?

> The init system doesn't typically have a DNS server

There’s no DNS server in systemd core. It just lives under the same umbrella. Do you know FreeBSD has DNS server in the same repo as kernel? Does it mean it has a DNS server in the kernel? You know perfectly well that this is just plain false.

> It doesn't have its own cron, there are many choices and you can choose any of them.

Why would you need “many choices” for a simple timer? What are you going to do, invent new type of time?

Anyway, you’re completely ignoring the other perspective on this. Because old style init did so little and so poorly, cron used to be a de facto service manager. Also don’t forget inetd. So you had duplicated, poorly implemented, but nevertheless, redundant functionality in several separate systems. How is systemd’s approach not both less complex and much more sane?

> And just drawing any hard lines would help. Even if you had to replace two modular components to replace one thing, or one component that does two things when it should be one, that's certainly a lot more feasible than having to understand and touch thirty integrated pieces to replace one component.

Why? If you can’t point to where the line is then what’s the point. It’s like saying you want cars to be more modular, so let’s just arbitrarily invent a “motor carriage[1].”

You could replace the engine without the coach, wouldn’t that be swell?

Anyway most of systemd’s components communicate over a common system bus. You could provide alternatives just by speaking the same API.

[1] Sorry, I’m not a native speaker; I mean this: https://en.wikipedia.org/wiki/Coach_(carriage) but with an engine instead of horse


> Well they should. Otherwise, what’s the point of them?

If the distribution is supposed to micromanage everything from upstream then what's the point of upstream?

> Of their own volition. And btw, distributions could patch them to work with systemd. None of this is systemd’s fault. Since when is it upstream’s job to make sure downstream properly integrates their software?

Since when does everything have to integrate with the init system at all?

> There’s no DNS server in systemd core. It just lives under the same umbrella.

It isn't a matter of which repository it's in, it's a matter of how much work it is to swap it out. Can I just run dnsmasq or dnscache and change an IP address somewhere, or do I actually have to change the code because it's expecting something more than a general purpose DNS resolver?

> Why would you need “many choices” for a simple timer? What are you going to do, invent new type of time?

An existing implementation has poor code quality and I can do better, but my new implementation is less feature complete, so some people prefer the one with more features while others prefer the one that has fewer bugs and uses less memory etc. etc.

> Because old style init did so little and so poorly, cron used to be a de facto service manager. Also don’t forget inetd.

Which they still are, because they're still there and there is nothing stopping people from using them in that way as ever.

But runit et al don't require that either, so let's not pretend that there is no third way.

> Why? If you can’t point to where the line is then what’s the point.

Your argument was that it's hard to know where to draw lines. But it's more important that you draw them somewhere than the specific place where you choose to draw them. Otherwise everything mushes together into a single piece of spaghetti that can't be disentangled from itself.

> Anyway most of systemd’s components communicate over a common system bus. You could provide alternatives just by speaking the same API.

Where are the RFCs for these APIs, so that I can write my application against the spec and be assured that it will continue to work against future versions of the software on the other end?


If you don’t like systemd so much then write something better. I mean you’ll find literally anything to dislike about it, I don’t get it. You can still use cron or rsyslog if you like. Or don’t use systemd. This is stupid. I’m done. The default makes sense for 99.99999% of users, literally the only point I was trying to make.


> If you don’t like systemd so much then write something better.

Writing something better doesn't get rid of the dependencies other projects now have on pieces of systemd, which pieces then have dependencies on other pieces until you need the whole thing.

> I mean you’ll find literally anything to dislike about it, I don’t get it.

This thread is about one specific complaint: It has too many interdependencies without well-specified stable interfaces between them, and actively encourages things to take on more of them, as with replacing SIGHUP handling with systemd-run.

> The default makes sense for 99.99999% of users, literally the only point I was trying to make.

This doesn't make any sense. Most applications don't handle SIGHUP and are terminated by the default handler. Applications that do handle it continue to run. If they used systemd-run instead they would also continue to run. Where is the benefit from forcing applications to do something systemd-specific and breaking existing things that don't?




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

Search: