PulseAudio requirement breaks Firefox on ALSA-only systems
bugzilla.mozilla.org
bugzilla.mozilla.org
There is real cost to supporting features, and very often, the decision basically amounts to having to choose which feature scarce resources is used for. So you have to be prepared to defend having to divert resources for pet features--keeping in mind that sometimes the other feature is "making sure it builds tomorrow."
From what I can tell, the ALSA backend has been poorly maintained for some time. When the present state of affairs is deficient, and probably retarding code quality in other areas. If it's in a poor state for a long time, it's hard to argue that it is necessary to maintain support--or even that desupporting it will make a huge impact.
If you want to convince me to support something, offering help would be a great start. It could be as little as offering to test and QA a feature, or as much as providing an implementation patch and offering to maintain it for the foreseeable future. Insulting my intelligence and issuing threats for noncompliance are just going to result in me ignoring you, perhaps after laughing at you for a bit.
And remember, if you're not familiar with the relevant code, you're not really qualified to say how hard it is to actually do something. Code architectures may not be implemented the way you expect them to be, so what seems like it should be an obvious minor feature may turn out to require thousands of lines of changes (that was exactly how my first open source contribution turned out--what I thought should have been a five-line patch or so was really 1000 or so lines of changes).
SDL for example supports outputting to OSS, ALSA, PulseAudio, ESD and with a patch, JACK. What you want to output to can be easily configured at runtime. You as a developer write the least code possible and only have to do the job once, your users get the benefit of picking any output system they please.
I believe Gstreamer offers a similar system too which Mozilla already uses for video decoding on Linux.
Additionally the same code can be used across other platforms entirely, not just Linux.
Back in 2013 I had a lot of issues with Steam games not running correctly with PulseAudio (lots of static instead of sound half the time I tried to start a game). Sometimes doing a killall on the pulseaudio server would help, sometimes it would not. On that machine, I added a -pulseaudio USE flag in Gentoo and removed it entirely.
On my current machines, I do use Bluetooth audio and find PA easier to deal with. I also no longer play games on my Linux boxes.
I'm also old enough to remember the horrors of ESound and the KDE one (whatever it was called) and how audio would constantly be out of sync.
Pulse is a lot better and seems to do well today. Still Pulse has some huge limitations. Run two X servers and use either consolekit or systemd? Good luck trying to get audio to continue playing on both X servers at the same time. It won't. Want to run MPD as a system daemon? You'll need to figure out how to enable TCP in Pulseaudio.
I don't run SystemD, but I do run Pulseaudio. Those are my choices. Gentoo still gives me that choice, which is why I use it as my home and work distro. Void is another great Linux distribution that gives you such choice as well.
Like I started with, Firefox has to support a ton of audio backends for various operating systems. We're not talking about maintaining OSS support. Pulse still depends on ALSA in the Linux kernel for it to work, so ALSA isn't going away any time soon. There's no reason for Firefox to need to depend on that intermediary layer and remove direct access when that already exists.
module-native-protocol-tcp auth-ip-acl=127.0.0.1
You could also use auth-anonymous=1 but if you're not careful with that, people can play stuff on your speakers. We use to mess with each other at work doing that. :-PPhonon? Wasn't that just a layer on top of pulse and/or alsa?
artsd (part of https://en.wikipedia.org/wiki/ARts)
If you actually read the details you'd note that the code to support ALSA wasn't removed, it was simply put behind a configure option (--enable-alsa). Most of the people complaining in the bug are running builds from a distro that provides Firefox builds, doesn't ship PulseAudio, but didn't bother building Firefox with that option. Their distro shipped them a broken build so of course they come to complain in Bugzilla.
Mozilla has complained for quite a while that their ALSA backend hasn’t been supported or updated in years, and they don’t have the manpower to do so. (Especially with their marketshare falling below 8%).
So, after calls for people to support it, this is the end result.
It’d be delusional to expect them to support two audio backends, and completely rewrite both of them for multiprocess support, when ALSA is used by less than 1% of users (as seen by the Mozilla hardware survey results), and the work can be used better for the other 99% of users.
Freedom has a high cost - attention, maintenance, and constant vigilance. This is something we are learning all too well in this current political climate in the US. It's something Open Source maintainers are learning as they climb in years and experience and their time becomes more and more precious.
We used to tell people like these folk "Patches welcome," but then we learned that they give us those patches... and literally never maintain any aspect of them, so now we're stuck supporting their useless, broken, out of date features for years on end.
Worse, some of them come with baked in security vulnerabilities, and still get left on by default because next to nobody knows what it actually does. But we sure as hell get yelled at when we try to remove those broken features - it becomes an uphill battle, every time. We've seen it for Linux device drivers for super obscure hardware, we've seen it for features in desktop applications and entire desktop environments, we're seeing it again in web browsers.
If you aren't using PulseAudio, you have fully accepted that you are willing to be on the fringe <0.01% of Linux installs[1], and so you get to keep all of the pieces of your special configuration. Feel free to maintain your patches out of tree, and stop robbing the vast majority of users progress and the maintainer's time. It's your freedom to have the code and do what you want with it - they don't have to merge it into their code and support you for free. Forks welcome.
Mozilla made the right call. Freedom has a price.
[1]: by measure of software that I maintain on Linux - last I checked less than 100 installs reporting usage information use the non-Pulse backend, albeit I accept those same folk are likely the folk that would disable usage reporting, so we can never know with absolute certainty. I can't imagine Mozilla's numbers are greatly different than what I'm seeing.
What an utterly ridiculous argument. You're implying that everyone using software has to keep track of every single upstream project, their mailing lists and requests. That doesn't even remotely scale on a personal level. There just aren't enough hours in a day to be able to read all those mailing lists, and that's assuming every end user even remotely has the skills to understand what is being discussed anyway.
As an argument, this makes no more sense than "Well it's an open source project, fix it yourself".
This kind of scenario is always going to end up happening.
Well when they keep alienating their existing user base by chasing after Chrome's tail, and keep spending effort on marketing in the developing world (shades of SJW meddling/signaling in the management, anyone?), while at the same time seem to treat anything but OSX as second fiddle, yeah their market share will tank, and tank hard.
But part of moving on requires that we look at PA's problems. Everytime a PA thread comes up, people disregard and yell at everyone who has a problem with PA. PA has a bad reputation for a reason, and it's not just Pottering hate (though that's likely part of it). It's that PA is not good software. It needs to be fixed. And until it is, you'll have people wanting to go back to software that "just worked".
So not supporting it is akin to not supporting audio output on Linux.
Dropping PulseAudio is fine if they want to reduce maintenance load, as it is optional, unlike ALSA.
EDIT: Also, arguing that Firefox needs to support ALSA instead of PulseAudio because "PulseAudio cannot output to sound devices to ALSA" is similar to saying Firefox should be able to issue SATA commands directly because filesystems would not work without that.
This is more similar to removing all support for files and requiring everyone to install MySQL.
However, like systemd, PulseAudio large and opinionated so it's not everyone's cup-of-tea.
It’d be preferable if for Linux there was an audio server closer to what JACK is (although both JACK and JACK2 aren’t ideal either).
(That said, I mix hardware mixing and pulse for my purposes)
In my case, I use 3 audio cards, an internal one for speakers, a Behringer Xenxy Q502 for headphones and microphone, and a backend streaming to my phone (in case I wanna walk around the house listening to music via headphones).
Mixing audio into streams for recording, live stream, headphones, etc isn’t easy even with hardware cards unless you spend a LOT of money.
The trade-off for latency in PA is lower power usage. I think most consume users are pretty happy that their sound system does not suck tons of energy just to offer sub-10ms of audio latency.
> JACK
AFAIK, PulseAudio and Jack 2 can work pretty seamlessly together thanks to a new dbus API (https://wiki.archlinux.org/index.php/PulseAudio/Examples#Pul...).
Ehh...... I'll disagree with that. I have ~50% success rate of it working on my devices in the past 5 years.
Most modern distros come with pulseaudio by default, which means I'd guess that over 90% of linux users use pulseaudio successfully. I've run workshops helping people install linux on their machines and I've never run into a system where pulseaudio did not work that alsa did.
Which means they almost certainly include libasound.so, because PA still depends on ALSA in the kernel. Even in the case of distros that only use the ALSA emulation interface for PA, the traditional ALSA interface is still provided. Lots of software would break without that support.
It's more accurate to say most distros support both PA and ALSA by default.
> use pulseaudio successfully
Note that "successfully" doesn't imply "enjoyably" or "preferentially". I still hear complaints regularly from people that hate newer (PA-focused) distros that introduced a lot of latency problems. Movie audio sync became inconsistent (hundreds of ms latency, very high variability), and UI audio cues playing up to 3s (3000ms) after the visual changes.
This is what bothers me so much about discussions about PA. There are legitimate problems with it, and whenever someone mentions them, everyone else chimes in to say that they are the minority, that they are doing it wrong, etc etc. This is how polarization happens.
I've had a much higher success rate with alsa ootb.
i think the biggest genius was making a pulseaudio alsa backend so most legacy apps just work
You haven't been acquainted with asoundrc/dmix/alsamixer. ALSA is to Pulse as XFree86 is to Xorg, I feel no nostalgia for it at all.
No it is not. X.org is a fork of XFree86. Pulseaudio is a sound daemon built on top of ALSA.
For example, debian switched from ffmpeg to libav and eventually back to ffmpeg again because the libav maintainers have consistently slow to act on bugs and security holes whereas ffmpeg was anything but despite having a much smaller team looking after it. Debian's own security team called the switch because it is not worth the manpower to maintain both codecs.
If they cannot find a developer to maintain ALSA backend, they must really be out of money and skill. Yes, pure ALSA is harder, but not that much harder.
A browser dropping below 8% (except for Germany, which is the only country where Firefox is still leading at 43%) surely has different problems than catering to the 1% pure ALSA users of their Linux users, when the Linux users are already 1% of their overall user share.
Especially when funding is dependent on market share...
I haven't used Linux as my daily driver for years but I've been looking at switching back recently. It seems a lot harder to avoid PA than it used to be.
As someone mentioned elsewhere in the thread, by being an ALSA user you're already in a tiny minority of the Linux world. You might as well be using an OS where your values in are the majority - it's nice to not have to fight against the defaults.
How hard is it to upgrade major versions? I seem to remember that this was a pain at some point, but this was so long ago that my memory is fuzzy.
Also, have you had any problems with hardware support? The machine I'm thinking of putting this on doesn't exist yet, so if there is a way I can avoid stupid hardware problems up front it would be useful to know about.
To apply security patches:
freebsd-update fetch
freebsd-update install
To upgrade to a new version of the operating system: freebsd-update -r 11.0-RELEASE upgrade
To install software: pkg install chromium
You can still use the ports system if you want to, but pkg is so much easier.Hardware support is like Linux a few years ago. That, and a few (esoteric or proprietary) packages that I've found missing are about the only downsides IMO.
FreeBSD has run fine with little to no configuration on all the desktops and servers I've tried, but laptops are a different story. OpenBSD has a better reputation there. My guess (and understand this is based on just my limited perspective) is that the biggest thing to be aware of is video cards (in particular the Intel integrated graphics are one or two generations behind).
Here's the offical word on drivers in general: https://www.freebsd.org/relnotes/CURRENT/hardware/support.ht...
this doesn't look good. thanks for the post.
guess I'll be using Chromium when that day comes, as I'd rather not run PulseAudio.
That’s what caused this, because Mozilla doesn’t have the manpower to rewrite two backends, and so had to choose one (with the pulse backend being preferred, as the pulse maintainers help mozilla and fix bugs on their side, while mozilla reports getting no assistance or anything from the ALSA maintainers).
Sad reality is that they are trying to not hire competent people while having features implemented well. Mozilla is vastly understaffed for the magnitude of the project.
https://git.archlinux.org/svntogit/packages.git/tree/trunk/P...
line 97 for reference
I need both. So I'm permanently on 51.
Mozilla: You are making a mistake, revert both of these decisions!
For example see: http://www.kongregate.com/forums/1-kongregate/topics/716510-...
Edit: the downvoting on this site is goddamned baffling sometimes. What about my comment has you guys offended today?
Is it something prepackaged or something you've crafted by stripping yourself?
It's prepackaged but I kind of lost track how it's different. It used to be that it didn't support flash but that might have changed.
https://www.srware.net/en/software_srware_iron.php
It's gone from "broken on most sites" to "pretty much totally usable" since about October.