The Audio Stack Is a Crime Scene

134 points by alterae


david_chisnall

It started simple. ALSA was the kernel-level driver layer: Advanced Linux Sound Architecture.

That’s not where it started, that’s where it started to go wrong. Originally, there was the Open Sound System (OSS). OSS was developed by a small company. Their business model was simple:

This wasn’t working very well, so they decided that OSS 4 would be proprietary (this worked even less well, but that’s a much later and irrelevant bit of the story).

The FreeBSD reaction to this was to take the last BSD-licensed version of OSS 3 and fork it. They extended it to support the newer OSS 4 APIs (which were nicer, but mostly backwards compatible), to have multiple virtual channels, per channel volume controls,

The Linux reaction was to have a temper tantrum, rip out OSS, and replace it with ASLA, which had a half-finished OSS compatibility layer but required rewriting your software to properly use ALSA.

For some reason, the kernel that has a reputation for not breaking userspace is Linux. Meanwhile, software that plays or records audio written for FreeBSD 4 has worked unmodified with every version of FreeBSD since.