Before we can even think about some kind of desktop spin, there are massive infrastructural issues preventing me from using Linux as my primary machine. I run several Linux servers, so my experiences are based on my experiences running those, and my experiences stripping desktops out of Linux machines that had them when I didn't want them to.
Sound never, ever works: Alsa, pulseaudio, pipewire...some apps require one, some apps require the other, and they don't work together at all well. Plus sound is considered part of the userland desktop environment. So if there is some problem preventing the GUI from launching and dropping me into a shell, I can forget about having any accessibility what-so-ever. We're what feels like decades away from having the advanced features that CoreAudio on mac or WASAPI on windows offer (audio ducking, first-class support for multiple soundcards and routing audio from different apps to different outputs easily, per-app volume adjustment, loopback recording, low latency, any kind of spatial anything, etc.).
Similarly, all of systemctl's targets are set up really, really badly for accessibility. If one of the drives in fstab can't mount, even though no core services depend on it, SSH won't come up, sound won't come up, networking won't come up, meaning I have absolutely no recourse other than "get a sighted person to come to my house and fix it" because I did something as simple as swap a drive. These days, mac systems can launch a full screen reader during system recovery. Windows isn't quite as slick, but it's close; it'll do the best it can to boot and get me a screen reader, no matter how badly things are broken. Linux will just give up and die, assuming I can read the screen and type on the keyboard to fix whatever happened. I need the system to require, at least, sound support and a console screen-reader no matter what; if those things don't exist, it's the equivalent of the machine just showing a sighted person a black screen with no further info.
The primary console screen reader, speakup, still requires a kernel module. If apt updates my kernel, it can (and does) kill the screen reader entirely.
Linux has no comprehensive, standard, accessibility API that will work cross-window manager, cross-desktop, and cross-platform. In Windows or mac, there are clear guidelines that developers need to follow to create accessible apps. If an app is inaccessible to me, I can refer a developer to first-class, well supported and understood, API documentation telling them what they need to do in order to better interact with my screen reader. On Linux, that's not so easy, meaning apps just never get fixed, because developers working for free just can't be expected to figure it all out themselves.
Until some of these basic problems get fixed, creating a fancy new desktop spin is just walpapering over basic design issues that will keep blind folks third-class users on Linux well into the foreseeable future.
Preface: I'm not blind. I'm aware you've not asked for solutions, I just can't help myself. Sorry!
I'm running Gentoo and have switched to pipewire+wireplumber and have had no issues. Probably because my needs are simple. What I do want to point out, though, is that I'm launching pipewire and wireplumber from my shell rc file before my window manager. I've tried playing sound from a tty and it worked, although that was the limit of my testing.
I'm using OpenRC, but in terms of fstab breaking boot it works the same. All you need to do is add a nofail option to the volumes you don't need for boot to succeed.
I cannot say what's going on with the kernel module breaking and apt does not appear to support hooks. All I can suggest is create a wrapper script that runs
apt-get update
apt-get upgrade
rmmod speakup
insmod speakup
systemctl restart speakup
No comment about API, that's beyond my understanding.
I do wonder if creating a Gentoo distro focused towards accessibility would help get some more feedback from the most technical and courageous users.
I have no problems with solutions. Thanks for helping me, and for helping blind searchers in the future who want to give Linux a try. My point here, really, was that the defaults are bad. When you configure drives to mount via the GUI, it doesn't set nofail. I wasn't even aware that was a thing. But never the less, a drive that mounts only to serve as a fileshare for Samba shouldn't prevent everything from coming up by default if it can't mount. The assumption behind every design decision made by the entire Linux boot process assumes that if something fails, you can see the screen. Similarly, when you initialize sound from your shell RC file, it means blind folks can't log in via the TTY, because we don't have sound at that point. Sound needs to be moved out of userland if we're ever going to have a fully blind accessible Linux. Not only do I need sound to get logged on in the first place, without sound, the system can't tell me about any errors until after I log in.
I've only used it to browse briefly, so I don't know if it's fully accessible. But for what I've needed it for, it's worked. "Blind" would be the appropriate name.
Yes a kernel module sucks, these never work. This would be a point for immutable distroa though.
If you dont know the concept, here is what it looks like
on a regular Linux System, your package manager fetches the resources from a repo and updates your system on its own. This gives the easy freedom to mod everything how you want, but like you mentioned, things can break
on an immutable System, most namely Fedoras Atomic spins (the new name including all Desktop variants and hopefully soon a blind variant) the system is maintained on a server, built there and many people can look at it and see if something breaks
your local system can update automatically, and copies the exact system on the server. This is done using OSTree, basically git for your filesystem
if an update prevents your system from booting, you can reboot and choose the previous version. Poorly this is not default on Fedora for "flickerless boot" (as the screen would go black and then show the grub menu) which is completely useless and should need to be deactivated on a blind Edition.
so you can roll back to a working system, if problems like these would happen. Always one previous version is kept.
but often the system on the server (ostree remote) would not build successfully, as its controlled using CI tools and all, so you simply wouldnt get an update until that is fixed.
In such an edition a community could get together, include all the software that works best, preset all settings, and manage a distro that works.
I dont know how well Flatpak and other things work though, which seems to be a good solution to have a not-breaking system.
To your point of sound being bound to a working userland: this is very bad of course. It may be circumvented by using a stable release of some Desktop that never breaks, like GNOME. But this sounds like needing a bigger solution.
To the systemctl thing, I experienced something similar. You may add the "nofail" tag to every drive, to avoid that boot error. It sucks a lot, true.
Standardisation has its value, the same with paid software, thats true.
The issue here would be that no two blind people have exactly the same needs. It sounds like this would prevent any customization at all. We all use different speech voices, at different speeds, etc. So a system where no settings can be changed just wouldn't work.
Hello,
a daily Linux blind user for several years here. @fastfinge I would like to respond to some of your points, as I find them somewhat misleading.
Sound never, ever works: Alsa, pulseaudio, pipewire…some apps require one, some apps require the other, and they don’t work together at all well. Plus sound is considered part of the userland desktop environment. So if there is some problem preventing the GUI from launching and dropping me into a shell, I can forget about having any accessibility what-so-ever. We’re what feels like decades away from having the advanced features that CoreAudio on mac or WASAPI on windows offer (audio ducking, first-class support for multiple soundcards and routing audio from different apps to different outputs easily, per-app volume adjustment, loopback recording, low latency, any kind of spatial anything, etc.).
My experience is quite different. Regularly tracking the blind Linux mailing lists and guiding newcomers on getting their systems accessible, problems with audio are actually very rare these days. Mainstream distros like Ubuntu come prepacked with a bunch of drivers, ensuring great compatibility. From time to time someone appears with sound problems, but most of the time it turns out to be a corrupted installation image rather than actual audio issue. I don't remember anyone who wouldn't be capable of installing the system because the audio wasn't working.
Alsa is a kernel module responsible for playing sound, PulseAudio is a software mixer built on top of Alsa providing more civilised audio interface for applications, PipeWire is a drop-in replacement for PulseAudio bringing some fresh wind to the field, mostly improving bluetooth headphones/speakers compatibility, but also improving latency etc.
I don't see how these could get in comflict. PW and PA shouldn't occur on a single system installation, while both are designed to work with Alsa.
For applications, it doesn't really matter, most of them had been developed in times of PA, and PW is backward compatible with it.
I've fiddled with many applications through the years, and didn't see a single-one that would have audio problems.
As for audio effects, there are very popular PulseAudio modules, PipeWire modules you can use for various effects like noise cancellation, audio filtering etc. I didn't play with them too much because I didn't see any added value also in Windows audio effects. I once applied a noise-cancellation tweak trying to improve the quality of my laptop's internal mic, but well, that thing has so bad sound I eventually decided to stream the microphone from my smartphone to PulseAudio through ADB, and it worked really awesome!
And it's remained working also after switching from PA to PW not needing any changes. So much for audio flexibility and compatibility.
Even more interesting effects can be achieved with systems like Jack, but being just an average user in audio terms, for me it's been never worth setting up.
The things you mention like working with streams of specific apps are perfectly possible. Perhaps a more straight-forward interface wouldn't hurt, but other than that, it works, whatever. :D
There had been some controversial topics indeed in the past, like when Alsa devs decided it would be funny to make the audio volume 0% by default and having it muted as well, what didn't get really appreciated by the blind community. :D But then, on Windows screenreaders are applying workarounds for years to prevent soundcards from auto-sleeping, otherwise the effects are really crazy, with the funniest part being they don't even work 100% of the time, I had computers where I needed silenzio anyway.
So, these things are by no means unique for Linux, I see it just as the general kind of things we're used to be dealing with.
meaning I have absolutely no recourse other than “get a sighted person to come to my house and fix it” because I did something as simple as swap a drive.
As a blind student using Windows, I was regularly calling my classmates to read me the screen, because I did something as simple as trying to turn my computer on. Actually, Windows got the ability to activate the screenreader during system installation just few years ago with Windows 10, Linux could do this long before.
And while on Windows I had been pretty stuck, Linux seems way more flexible to me in this regard, at worse I can boot up a live distribution and fix things from there, I don't remember the last time I booted a Windows Live image. :)
That's not to negate your point, the situation indeed could be better and there are distributions like Slint trying to achieve this.
Though, I think it's also worth mentioning this is a wider topic than Linux, just for how long have we been discussing UEFI accessibility, grub accessibility etc. These problems are related to all blind people, and of all the systems we have today, Linux gives you the most power to do something about them if necessary.
Linux has no comprehensive, standard, accessibility API that will work cross-window manager, cross-desktop, and cross-platform. In Windows or mac, there are clear guidelines that developers need to follow to create accessible apps. If an app is inaccessible to me, I can refer a developer to first-class, well supported and understood, API documentation telling them what they need to do in order to better interact with my screen reader. On Linux, that’s not so easy, meaning apps just never get fixed, because developers working for free just can’t be expected to figure it all out themselves.
Linux has at-spi, that's the universal accessibility standard equivalent to MSUIA on Windows. It's pretty well developed, works on any setup that has DBus, another standard thing you find basically anywhere, even sandboxing software like Flatpak or Snap respect atspi interfaces, meaning it's not some random thing supported by few demo apps, it's a full-fledged accessibility standard used by GTK, QT, web engines, Java, etc.
It does have documentation, and even software for helping developers evaluate the accessibility trees of their apps.
The argument that apps don't get fixed because devs don't understand atspi is something that... is not really the cause of the problems.
Just compare with Windows. When was the last time you discovered an inaccessible app, you wrote the developer "Hey, your app is inaccessible, but there is this great, well-documented MSUIA thing you can implement and get it working", and the developer was like "Awesome, thanks for your feedback!" and made the app accessible?
I wouldn't like this to sound rude or anything, because it's not meant that way, I just want to point out this is very lowlevel stuff that noone but accessibility experts understand, and it's a work beyond one person or even a small team without relevant expertise to make applications accessible using these APIs.
Not even highly popular GUI libraries managed to implement it properly. Consider Java and QT, GTK never even bothered.
While, that should exactly be the way for app developers to support accessibility, to use correctly their GUI frameworks, which should be responsible for handling MSUIA stuff. Many of them didn't really.
That's why Matt Campbell started the AccessKit project, which is really promising in terms of cross-platform accessibility, he already improved atspi quite a bit and other changes are planned, see your other linked post.
That's why I would say Linux not only has universal accessibility API, it's also one of the most open APIs we have these days.
Btw, quite a lot of Linux GUI environment is already accessible, as I mentioned I'm a daily user and things are really on a decent level, but things are just starting to move. It's not so long ago that KDE selected accessibility to be one of their main goals, and there's going really a lot of work into making that determination true. Cosmic desktop, the new environment of PopOS written in Rust, is building on top of GUI frameworks working on implementing AccessKit, and System76 committed itself to support the accessibility of the environment.
A lot of development is happening in Orca, we're getting a lot of new features, refactors and bugfixes, improving the experience really significantly. Redhat has hired two people I'm aware of specially for accessibility positions, to work on improving GTK 4 and GNOMe DE accessibility, the work done by the accessibility teams has already shown up in both the environment and the framework.
Wayland is a common scarecrow in the whole Linux world, not just the accessibility-one. But the reality is not that bad, there are few annoying minor things we're workarounding just now, like clipboard being available only to applications that have a window, making flat review copy not working (Orca come up with a feature similar to the Jaws' virtualisation to fix this).
On one hand it's true it is annoying, right. But on the other, when I realise any Windows program is capable of freely reading the clipboard without any special privileges, and this has already been misused in the past for stealing money by swapping crypto adresses, I'm not sure it's that clear what's actually the inconvenience.
Ok, so much I guess for this post. :D Sorry if it got somewhat exhaustive, Linux is, like many environments unfamiliar to people, subject to a lot of myths and false information, so I thought it may be a good idea to clarify them before discussing where to move next.
I shall do that in another post, actually getting to the question of the OP. :D Sorry again.
Perhaps one last thing to address, people writing Linux has not been developed for desktop use... well, it's true, Linux has been developed as a generic purpose operating system, for any use one can imagine. We have really fancy desktops, we have awesome web interfaces, server running folks can enjoy the power of containers, actually not just them, Vanilla OS brought up many interesting and innovative concepts from immutable desktop (what's sort of a misleading name in certain sense, but whatever), to the principles of their apx manager, leveraging containers to unify software from different Linux distributions and integrating them into the OS.
The flexibility is something that other systems can hardly compete with, so yes. We're not just desktop folks, we have much more in the stack!
P.S. I almost managed the character limit! 300 characters, what a pain, I hate these restrictions. :D
Regularly tracking the blind Linux mailing lists and guiding newcomers on getting their systems accessible, problems with audio are actually very rare these days.
And this, right here, is the issue. I don't need guidance on either Windows or mac. I turn it on, and it works. I can install either Windows or Mac, by default, with a screen reader. The recovery partitions created by both Windows and Mac support screen readers, so I don't need to keep a thumb drive with a live image around. Windows and Mac updates don't break audio. They don't require me to hack around with environment variables to get audio working, or to set accessibility options. I have a machine right beside me that I use as a home server, running the latest Ubuntu LTS. It has standard intel onboard audio, and when I tested just now with the TTY, even though the audio drivers seem to be installed, audio isn't working. The only way I can use the TTY at all is with an ancient dectalk hooked up with a USB to serial port adapter, and even that took an hour of messing around with modprobe and other nonsense. I have no idea why; as this is a server, I don't really care, but if it was my desktop (meaning I probably wouldn't have SSHD going) I'd have no way to fix anything. I can only even test it because I happen to be old enough that I have dusty ancient DecTalk hardware in the cupboard. I can say that of the seven or eight Linux systems I've worked on, I have never one single time encountered a system with working audio. There's probably some special thing I have to do to enable it, but without another computer I can use to look up what that might be, and the awareness of where and how to look, I'll never know what it is. I'm sure you can tell me. But that's not the point. The point is that by default, Linux systems are unusable by screen readers, unless you know exactly what to do and how to do it. How many thousands of hours did you spend figuring out how to get Linux systems working for you?
Perhaps a more straight-forward interface wouldn’t hurt, but other than that, it works, whatever. :D
And this kind of dismissive response to getting easier interfaces is another reason why Linux won't be used by most people. I do complex presentations for work, that involve anywhere from three to five audio sources, and I need to change how they're routed at least once or twice mid-presentation. This needs to be frictionless, as I need to do it while speaking, in less than 15 seconds. My use case isn't that unusual, especially for blind people with screen readers presenting on Zoom or similar.
screenreaders are applying workarounds for years to prevent soundcards from auto-sleeping,
And these can be configured easily, usually work, and are fully supported and understood. None of that seems to be so on Linux, though as I've never found a Linux system with working audio, I can't speak from direct experience.
As a blind student using Windows, I was regularly calling my classmates to read me the screen, because I did something as simple as trying to turn my computer on.
On Windows 11? Press control+windows+enter and narrator will launch. Even if you're at the system recovery prompt. As long as you're out of the BIOS, narrator will run.
Just compare with Windows. When was the last time you discovered an inaccessible app, you wrote the developer “Hey, your app is inaccessible, but there is this great, well-documented MSUIA thing you can implement and get it working”, and the developer was like “Awesome, thanks for your feedback!”
On mac? Last week. On Windows? A couple months ago. I was able to explain to them how the interfaces in Objective C or C# or whatever they're using support accessibility, and point them at resources to work with it. On Linux, most things still are QT or GTK, and neither system properly supports accessibility without a bunch of hackery.
Yes, improvements are happening. But they're at least 10 years behind mac and Windows, and they're going to require similar types of redesigns of basic building blocks that Windows and Mac required.
Besides the interesting discussion on the fundamentals of Linux for accessibility, I think it’s also worth examining some of the points raised.
I’d say the biggest risk in this line of reasoning is that creating purpose-built systems for a specific group of users often leads to a lack of support for relevant apps and even for the OS itself, since it’s not self-sustaining.
The underlying principles and best-practices are there to make apps and the web accessible, and stripped-down versions are often limited in functionality and support, even if they’re easier to make accessible.
CLIs and things like Markdown can be super accessible, but they’re also intimidating to lots of users. They’re also often harder to get help with.
Anyway, this discussion on Stack Exchange will tell you most of what you need to know about blind-focused Linux: abandoned and discontinued.