Hacker News new | ask | show | jobs
by craigsmansion 2503 days ago
Don't forget to thank him for `avahi' too.

Avahi is a fun whack-a-mole game where your computer hides the network connection. You win the game by remembering to kill processes and setting up stuff manually, like most games produced by LP studios.

edit: Other popular games include:

SystemD: hack your way through a blob of intractability. Try it on Nightmare mode, where you're only given access to a empty bootscreen, for a real challenge.

Pulseaudio: Experience the sound of no hands clapping, in a forest where trees are falling with no one there to witness it. Also, the forest is on fire!

2 comments

Lennart Poettering is a dev who has contributed massive amounts of code most people in this thread use every hour of every day. Code which, for most people, does work.

It's not like free software has a shortage of talented contributors that people hate for a variety of reasons. At some point you have to actually point out the issues productively, rather than the boring character assassination, or just randomly saying "the software's broken it sucks!" like this is the Best Buy tech support line.

I mean, seriously, if you're smart enough to "kill processes and [set] up stuff manually", you're smart enough to disable/remove software you don't like all on your own like a grown adult.

>Code which, for most people, does work.

Working is not the problematic part. There are two interrelated problems: how much complexity is introduced, and how to proceed when something is not working, or is flaky.

You, me, and our fellow posters know very well that Lennart's solutions are complex - in fact, more complex than the problem domain. Accordingly, the ability to narrow down, fix, or work around problems suffers. Systemd and PulseAudio aren't UNIX applications [1]; they are entirely new, rather opaque, sub-systems unto themselves. Thus they require separate knowledge, separate intuition, and separate skills.

All so I can seamlessly play music on TWO bluetooth speakers while also browsing logs without learning regex.

>Lennart Poettering is a dev who has contributed MASSIVE AMOUNTS OF CODE

Massive amounts of code is a clear and present problem. Why is the solution more complex than the problem domain? Why is the success being measured by magnitude of effort, rather than by barriers removed, and standards adhered to?

--

[1] what makes an UNIX application? small POSIX applications tied together with shell scripts, communicating via pipes, exposing services as files, following the `Worse is better' and `Do one thing, and do it well' principles.

> Why is the solution more complex than the problem domain?

So, where's your solution? If it's so simple, where is your contribution?

The fact is, he did it. You haven't. I can't even begin to imagine how much crap Lennart gets everyday by people who think they know everything and yet never actually seem to write any code.

Have some respect for the guy even if you disagree with the way he works, because you know.. his code is being used.

openrc, runit, s6, upstart*

dmix, jack, pipewire

* now maintained at https://gitlab.com/chinstrap/startup

I mean, if anything your list proves my point. They're not used at all. Also, I was asking parent for his implementation - I'm assuming he hasn't written any actual code though.
> I was asking parent for his implementation

This is not a valid argument, invalidating discussion of merit of thing based on not having personally created incarnation of said thing would remove 99% of debate of FOSS to no ones benefit.

Jack is actually really useful for music production, far superior to pulse audio, so yeah, people do use those programs.
Being popular doesn't make you right.
Jack does not overlap with PulseAudio. Pipewire does, but it came later and has the explicit purpose of unifying Jack and PulseAudio.

Upstart is decidedly inferior to systemd; the event-based architecture is much harder to understand and apply than the target/dependency architecture of systemd. And systemd is in use in distros ranging from embedded (LibreELEC) to enterprise server, it must be doing _something_ right...

Regarding the event driven architecture: it is far easier to understand than systemd's dependency system. But it is indeed more difficult to apply, particularly because it is a departure from how most systems work currently and in the sysvinit past.

I enjoy the architecture, and hope to continue developing Upstart/startup or at least work with a similar model.

And yet none of those init systems are really being used in any significant way. It doesn't detract from them, but then they don't detract from systemd.
> All so I can seamlessly play music on TWO bluetooth speakers while also browsing logs without learning regex.

Are you suggesting that the alternative is to choose to just not support these features at all? (Which isn't implausible as a suggestion; OpenBSD doesn't support Bluetooth at all, for example. But in an ecosystem where everyone is building software to scratch their own itch, and then adopting the software that gains traction...)

I do not know about the person you are responding to, but I particularly take issue with how PA abstracts the hardware and does not allow low latency applications or servers such as Ardour, JACK, or other professional audio recording software to access it in an efficient manner.

So you end up with this weird situation where pulseaudio reroutes itself when JACK appears and no longer takes control of the sound card.

Why do we need to support two sound servers to take care of all the necessary features? I really hope pipewire fixes this use case and allows pro audio applications to work directly on top of pipewire while still supporting consumer friendly use cases like bluetooth speakers.

Just how loudly do you think people would complain if PulseAudio decided to link in JACK and replace it, instead of getting out of the way (and becoming a JACK client itself, I believe).
If PA was actually capable of half of what JACK does, they would be fine with it. These people just needs to record music without latency. But PA does not do what they need, so they would indeed complain.
> [...] aren't UNIX applications

What kind of argument is that - so what?

All major Linux distributions are doing very well with systemd and it makes sense to have some kind of supervizor service (or collection of tools) on top of `init`. You can still tie together your applications with shell scripts and not run systemd. Since systemd it is simpler to admin different linux boxes - at least that is my personal experience - before that every distribution shipped their own shell scripts.

Systemd is fine and if it is so inferior to simple POSIX applications glued together, people should provide a better alternative. The grieve that people have against Lennart is overblown - we should thank him for his contributions.

The problem is the fundamental shift away from the long accepted design philosophy of software doing one thing and doing it well.

This means "grown adults" can't uninstall the software components that they like, because they aren't individual components anymore.

Systemd would probably not be hated on as much if it was only a "better" init. But instead it is an opaque and centralized system that is replacing a growing list of tooling ( init, ntp, cron, syslog, network config, to name a few)

You mean the myth of the UNIX way, never followed upon commercial UNIXes and somehow became a cargo cult on FOSS community only thank to a book of UNIX idols?
Right, the only true Unix philosophy which ever described reality was "worse is better."

Just look at the GNU coding guidelines, it explicitly mentions that GNU tools are not to use static buffers and silently truncate long lines. Why? Because that's what proprietary Unix implementations were doing at the time! Silent truncation of long input lines! Is that "doing one thing and doing it well" (DOTADIW)? Hell no!

DOTADIW is an ahistorical description of Unix. A humble-brag with little basis in reality.

As I'm new to this could you give a reference to those very gnu guidelines so I could see for myself?

And also where those guidelines say that silent truncation of long lines should occur?

thanks

Sure, no problem:

>"Avoid arbitrary limits on the length or number of any data structure, including file names, lines, files, and symbols, by allocating all data structures dynamically. In most Unix utilities, “long lines are silently truncated”. This is not acceptable in a GNU utility."

https://www.gnu.org/prep/standards/standards.html#Semantics

So perhaps DOTADIW is a GNU philosophy, because it's one of the reasons GNU became so popular. Proprietary unix tools often did one thing and did it poorly, making GNU tools a breath of fresh air.

https://www.gnu.org/prep/standards/standards.html#Semantics

I think you misinterpreted parent’s statement, though, and/or they mistyped. The GNU Coding Standards says to not use static buffers, nor should GNU programs silently truncate long lines.

Not to mention the mess with glibc and their war against anyone who wants to do static linking. There's a long history of user-hostile behavior on various commercial and open-source Unices, usually to serve some outside agenda.
I notice you make a claim then don't give any backup. Could you expand on this, for me as a unix naif? thanks
This aspect of the community is one of the biggest turnoffs to me. There are a lot of people who formulate these really over the top narratives about everything, which lead to (for example) writing long seething angry personal rants about people like Lennart (Miguel de Icaza was another lightning rod back in the day). The sheer emotion expressed invalidates whatever point they're trying to make, but at the end of the day nobody forces anyone to use anyone's software, and nowhere is that more true than in the Linux world.

I hate to use the possibly overloaded term 'virtue signaling', but I definitely see a lot of this as a form of virtue signaling within the communities that posters sometime imagine exist, or imagine that they're part of. I've seen so much of it over the years that it almost has a smell to it. A very vocal and bitter personal hatred towards Lennart and Lennart-related projects is sometimes a leading indicator, especially when it's presented not in the context of meaningful discussion of technology, but simply as "init was perfect and never needed to change and people who think otherwise don't understand what makes Linux Linux", stated as a truism.

I think a lot of people really like the community aspect of Linux, reading and posting to forums all the time, and latch on to certain mindsets as being the mindsets of who they imagine the insiders to be- you're supposed to love this person unconditionally, you're supposed to hate this person unconditionally, this company is good, that company is evil, this software is good, that software is evil, and if you're a true insider in the community you'll parrot all the same lines as everyone else. But when I see it, no one involved appears to be an insider. It comes across more as teenagers arguing on Reddit about iOS vs. Android, where basically they've decided that whatever phone their mom got them is the best thing ever, and the other thing is terrible, and it's their duty to go online and spew vitriol about it. They think they're arguing stuff that's much much deeper and more technical than what they're actually arguing about, and no one involved has any actual understanding of the technology or industries or communities or histories of the things they're screaming at each other about. It's almost like vitriol for the sake of vitriol, and people just let it seep out as a demonstration of their in-groupness.

Which is not to say that there are plenty of valid reasons and places and ways to argue about the merits of Lennart and his software, as one example. I'm really not talking about Lennart in particular though. I'm not talking about people having valid arguments about valid issues. What I'm talking about the FLOSS equivalent of those teenagers and their "the phone my mom got me is better than the phone your mom got me, and that makes me a good person and you a bad person" sorts of arguments. It just all seems very petty and immature sometimes, and that is not a positive aspect of the community.

Well stated description of the culture around this. I find it hard to take technical critiques of systemd seriously because the well was poisoned from day 1 by personalizing this to such a great degree.
Miguel has given an interview somewhere where he states creating Xamarin felt like a breath of fresh air, finally targeting a community that welcomed his ideas.
Completely agree. I can't stand how many people have such a strong opinion on some open source software. I find it amazing that there's so many negative blogs about the guy but no one has actually written a good (their version of good, not mine) init system that distributions will use.
> At some point you have to actually point out the issues productively, rather than the boring character assassination, or just randomly saying "the software's broken it sucks!"

But that's not the real problem here! Free Software was always about the freedom of choice. With systemd millions of users worldwide were forced to switch just because the architecture was designed in this way. Among these users were sysadmins who have to deal with many different machines and hardware/software problems. Before the systemd era diagnosing and fixing them was easier. We had survived quite a few revolutions in the past and it's not like we are unable to learn new tools, but this time the change made certain things unnecessarily complicated and gave users no choice.

> Code which, for most people, does work.

That doesn't mean other stuff couldn't have been better. Here's the problem the systemd argument: it's motte-and-bailey. Systemd is a huge collection of tools, not just an init system: it's got resolved, journald, logind, tmpfiles, bootctl, networkd, and more. However, whenever it's criticized, proponents fall back on "but it's a great init system!" I agree that the unit files are better than rc scripts in many ways. However, there's so much other baggage that comes with systemd. Many people who use systemd in serious production systems have to replace many of these parts: journald -> rsyslogd, tmpfiles -> scripts, bootctl -> grub, networkd -> networkmangaer (or other), systemd-timesyncd -> chrony. Systemd does the "PID 1" stuff fine, but isn't so good at the other stuff. The project has gotten to big for its britches, so to speak: there are ~70 total systemd binaries.

They also didn't do a great job of modularity, and don't use dbus like they should (dbus isn't built to be used with an init system; use a socket already). Rather, they have every thing depending on another. Suddenly, everything must re-tool to work with systemd or stop working. It basically unilaterally declared itself the standard.

Other stuff:

        * I hate binary logs

        * Lennart, Lennart, give me back my cgroups 

        * Stop stealing my cgroups to track processes  

        * Security is not great, nor is code quality.  This comes less from being inherently flawed and more from *sheer volume of code*, which is why you don't put that much code in PID 1.  More attack surface, more potential bugs.
Overall, init ought not to be it's own problem of this scope. Just make a stinkin' init.

Oh, and Lennart Poettering is also a jerk. Not an "I'm brash" kind of jerk (like Linus can be), but an "I'm an insecure person; don't critique my code" kind of way. Also, he thinks he's smarter than every one.

> Oh, and Lennart Poettering is also a jerk. Not an "I'm brash" kind of jerk (like Linus can be), but an "I'm an insecure person; don't critique my code" kind of way. Also, he thinks he's smarter than every one.

I think it's largely due to how the community has treated him. It's frankly disgusting.

He's been that way for a long time; before he ever touched systemd. Same situation around avahi, and later around pulseaudio. I agree some people have behaved unkindly as well, but that doesn't excuse what he does. He also has a nasty habit of forcing his work into places where it is not wanted (especially now that he works for red hat).
I have to admit that avahi has caused me more trouble -- 100% CPU spin loops -- than any other piece of system software, over many years. It does nothing I want done, does it badly, and is inexplicably hard to get rid of.

PulseAudio mostly works, now, but I will be happy to see its low-latency successor displace it.

Systemd's only great sin is using up 100MB in each VM to do what should takevno more than 4M. As memory gets bigger, I run more VMs, so systemd usage grows apace. Maybe I should be running containers instead, but Qubes doesn't work that way.

> PulseAudio mostly works

I regularly kill PulseAudio to get bluetooth headset pairing to complete.

> but that doesn't excuse what he does

It doesn't excuse the community's behaviour either to be fair.

> He also has a nasty habit of forcing his work into places where it is not wanted (especially now that he works for red hat).

I seriously doubt he has such power.

He should take a lead from Drew DeVault. Drew frequently says things people (including myself) disagree with and is working on software a lot of people (including myself) are very skeptical of. Yet if you try to interact with him (as I have), he's a totally reasonable and pleasant dude.
Not everyone has a thick enough skin to deal with situations the best way. The community should take lead as well.
The "community" in this case is in fact not a community at all, merely a loose set of people who's only common characteristic is having an opinion on systemd. A reasonable user of SystemD, like myself, has no power to coerce a complete stranger who sees fit to email Lennart a death threat.

The "community" cannot stop this. Either Lennart should work on how he handles such criticism/abuse, or Red Hat/IBM should hire a communications professional to insulate him from the outside world. Or he can keep the course and suffer the inevitable...

It's not right that he receives death threats, but the response to that unfortunate state of affairs needs to be realistic.

> Also, he thinks he's smarter than every one.

Wow, are we insulting people like we're twelve now?

Again, I have to ask. Why are you not writing a replacement for systemd? Again, another person in this thread seems to think they know everything yet don't seem to have any code to show for it.

Please be advised, I've downvoted your comments asking "if you know better, where's your code?", because I think that line of argument is absurd and has no legitimacy.

To use some analogy, imagine I, a non-cook, have been invited to a restaurant by friends. After the meal I say to the waiter "this food is way too salty!", and he replies, "Oh yeah, then go in the kitchen and replace our cook!".

What, you think we all don't have dayjobs and can just devote our time to...

1) learn to code C/C++ 2) learn about the OS 3) architect, code and debug a replacement

? Please don't be an absolutist and think "everyone can contribute to open source!", in the real world, time is finite.

No, your analogy isn't correct though. You're broadcasting your opinion on an online message board, not just a waiter. Plus, you're paying for the food. It's nothing alike. The parent comment is basically implying that the cook has cooked the dish completely wrong and that he (a non-cook) could do a better job of cooking that dish.

Plus, isn't this the great thing about open source? If someone doesn't like systemd, they can write they're own. Of course, not one does..

> What, you think we all don't have dayjobs and can just devote our time to...

I'm only suggesting this to the people who comment online complaining how the most used implementation isn't up to their personal standards and that they know how it could be done better.

It's easy to complain and bitch online, that's the problem. Everyone seems to know the solution but no one seems to do it.

> Please be advised, I've downvoted your comments asking "if you know better, where's your code?"

Please don't comment about the voting on comments. It never does any good, and it makes boring reading.

I upvoted you because you downvoted me.

I think most people on here prefer–and I often see people asking for–an explanation of why they were downvoted. It seems those explanations usually do good. "Please don't comment about the voting on comments" refers to complaining about other people's downvotes.
> The parent comment is basically implying that the cook has cooked the dish completely wrong and that he (a non-cook) could do a better job of cooking that dish.

I may not know how to cook (insert complicated dish here) but I can tell if it's too salty. Users of systemd / whatever software this man wrote may not have the time to do all the stuff I mentioned, but they know using/configuring the system is a nightmare.

> It's easy to complain and bitch online, that's the problem. Everyone seems to know the solution but no one seems to do it.

I repeat, they might not know the solution, just that the software tastes bad to them. Some of these complainers might be able to come up with a better solution, if they had the 3 things I mentioned before, but sadly, apparently, no one actually does. Otherwise a replacement would already exist. Of course it's another thing to get distros to adapt it.

Their lack of time/ability doesn't mean they're forbidden to say "this thing sucks!". IMO at least.

>> Also, he thinks he's smarter than every one.

> Wow, are we insulting people like we're twelve now?

How is that insulting? It's pretty much true. It's not really nice, but it's not really mean either.

> Why are you not writing a replacement for systemd?

There are already replacements. I use them in several places, mostly openrc. I'm perfectly allowed to grumble that something's bad and pushed into most distros. Plus, I'm generally stuck using it at work.

Next time you complain about, say, your car breaking down, I'll be sure to advise you to go build your own car.

> How is that insulting? It's pretty much true. It's not really nice, but it's not really mean either.

That's the point. It's not insulting and it makes you sound like you're twelve.

> Next time you complain about, say, your car breaking down, I'll be sure to advise you to go build your own car.

No, again. I see you're struggling. When my car breaks down, I ring a mechanic or take it to the garage. I don't go to the mechanic claiming to know exactly why my car broke down and how the manufacturer should change the specification to make it so that it doesn't break again. If my car keeps breaking down, I know not to use that model of car and try something else.

What you're doing is most likely using a piece of software, finding it doesn't suit your particular use case and then going online to insult the creator, and claim that you know how it should have been engineered.

It's completely fine that you don't like systemd. The problem is that a majority of people prefer it and that's pretty obvious from the distributions picking it up.

Stop and think for a while, imagine that's you who's created the software. Do you really think he's an evil genius trying to fuck up your system or is he just a hacker doing what he loves to do?

You also say "They also didn't do a great job of modularity, and don't use dbus like they should (dbus isn't built to be used with an init system; use a socket already). Rather, they have every thing depending on another. Suddenly, everything must re-tool to work with systemd or stop working. It basically unilaterally declared itself the standard.", but don't really have anything to back it up.

For example, Arch Linux reasons for picking up systemd:

    0) it is hotplug capable
    1) we can know the state of the system
    2) it is modular
    3) it allows dbus/udev to go back to doing the task they are meant to do
    4) we can reduce the number of explicit ordering dependencies between daemons
    5) we get a lot of security/sandboxing features for free
    6) systemd service files can be written and distributed upstream
    7) systemd is a cross-distro project
    8) logind will finally deliver on what consolekit was supposed to do
    9) systemd is fast
https://bbs.archlinux.org/viewtopic.php?pid=1149530#p1149530

Not sure why it declared itself as standard.

> I know not to use that model of car and try something else.

We weren't using that model of car. Until the mechanic, during routine maintenence[0], attemped to steal our cars and replace them with Pintos.

0: Outside the metaphore: during 'apt-get upgrade' et al.

Aaaand retreat to the bailey. Systemd - the init - is not that bad. I think it does some things well. Most of what you listed is part of all the other junk I described. The "systemctl chunk" - the init itself - is not the problem.

> That's the point. It's not insulting and it makes you sound like you're twelve.

> What you're doing is most likely using a piece of software, finding it doesn't suit your particular use case and then going online to insult the creator, and claim that you know how it should have been engineered.

It's not insulting, but I'm "insulting the creator"? What exactly are you contending?

> It's completely fine that you don't like systemd. The problem is that a majority of people prefer it and that's pretty obvious from the distributions picking it up.

No, "most people" don't necessarily like it. There are things it does better, and things it does worse. How is a piece of software to improve if every one comes out of the woodwork to white-knight for it when some one criticizes it?

> [you] don't really have anything to back it up.

Dbus stands for desktop bus [0]. It's stated purposes are communicating between desktop applications and between the desktop and OS [1]. It is not built to do low-level init stuff during bootstrapping or within the init itself, hence the name Desktop bus.

I stated that systemd has ~70 binaries; I was off by one. It's 69 binaries [2]. Though, that's a 2013 source; it's taken over other things since then, so I'm sure it's more.

With respect to incompatibility: you now have to use journald. You can forward, but that's additional hassle and more potential breakage. See [3] for more.

Over all, I'd appreciate systemd if I could do one thing: remove everything but the actual init stuff. As far as I'm concerned, there are better options for most of the other stuff.

[0]: https://en.wikipedia.org/wiki/D-Bus

[1]: https://dbus.freedesktop.org/doc/dbus-tutorial.html#whatis

[2]: http://0pointer.net/blog/projects/the-biggest-myths.html

[3]: https://www.freedesktop.org/wiki/Software/systemd/Incompatib...

Wait, people are replacing so many components but systemd didn't do a great job at modularity?
I think at this level the complaint (which I share) of all the things systemd tries to do falls more on the distros for handing so many things to systemd by default than on the systemd team giving us options for ways to do so many things.

I like unit files. I like having an optional watchdog for any given daemon integrated with my init. I don't particularly mind hostnamectl. I dislike resolverd but I see how some people could like it. I like having both signed binary logs and plaintext logs.

I wish the distros just made it simpler to pick and choose which systemd components we use at installation time. It would be better IMO than having to manually undo lots of integrations of parts of systemd I don't want and replacing them. So far the distro solution has seemed to be whole hog systemd or baby and bathwater, depending on the distro. Yes, we can set up our own base image and then maintain that, but should it be necessary?

> I wish the distros just made it simpler to pick and choose which systemd components we use at installation time

I think they do a fine job. The only mandatory parts in most distros are pid1, udev, journald, logins and machined.

I have two Raspberry Pis running Debian, one of them uses connman, the other uses systemd-networkd. My desktops use NetworkManager + firewalld, and so on.

Code is code and code is good.
You’re confusing Avahi with NetworkManager, which, IIRC, Lennart should not be blamed for.

Avahi is simply an implementation of the ZeroConf service discoverability protocol, as also used by macOS’s “Bonjour”.

Avahi, in all my experience over many years, does nothing noticeable besides going into 100% CPU spin loops at random intervals. Looking it up online, it is reported and declared fixed every couple of years. I would like to know why it still happens, and the right way to get rid of it, or at least to know why I have to have it.

I don't have any other system daemons that like to drop into 100% CPU spin loops. Should I be happy it doesn't fork bomb? I guess I am.