Hacker News new | ask | show | jobs
by DrillShopper 602 days ago
1. By fixing ALSA or PulseAudio instead of writing pipewire

2. Because writing something new is easier than trying to understand something already written. Maintenance is not sexy. Writing new things is.

1 comments

1. PulseAudio needed a redesign, there was no fixing to be done. It was utterly impossible to support low-latency audio, the protocol was not right, the client API was wrong, the backend was not right etc.. Also, ALSA is the wrong place to add more things, it should just be a driver abstraction.

Also note that PipeWire reuses the most complicated/fundamental part from PulseAudio: the device probing and mixer management. This code took 10 years to tweak and is taken directly from PulseAudio.

As a side note, there was a lot of investigations if things could be written on top of JACK2 but that also was infeasible (mostly the IPC protocol and API needed a rework, no security with memory sharing, support for Video. The scheduling ideas were taken right from jack2, though).

2. This is true but PipeWire is not just a random new rewrite. It was written with a deep understanding of both pulseaudio and JACK (later in the developments) internals and design. Many (of the good) ideas from those projects survived in PipeWire. This is actually a perfect example when a rewrite is a good thing.

Now, what is even easier than writing PipeWire is not understanding why things are done the way they are done and then complaining about it.