I am very curious and want to help to make Linux more accessible.
I wrote with some people and got some insights:
- everything text, like a read-mode-only browser or a plain Terminal is best for TTS engines.
- TTS engines are difficult, some are really good but need many resources, some are worse but save resources
- TTS needs to be optimized to be really fast in some cases, to keep up with the speed
- some apps are better, some are worse, but probably most apps dont really suit blind people, as the whole GUI concept makes no sense
I am really curious. How would it be best for you, braille vs. voice, voice input vs braille vs. gestures?
What apps do you find best, how do you browse the web, find media to listen, how do you use Document editors and what purpose do they have for you?
Thanks a lot!
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.
Thanks a lot for the details!
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.
Totally fair. Thats why Immutability on Linux, apart from the Steamdeck, is never locking down the system fully.
You can install (layer) and uninstall as many apps as you want. It also gets easier and easier to create custom images, universal-blue.org is a good example for that.
Only thing is that all installed packages need to be RPMs, no installing from source/into the system using some scripts here. This is all due to traceability.
So if the system fits your needs, leave it, but smaller or bigger changes, overrides, removals, replacements, are always possible. Simply that
- updates are atomic, if it fails you have none, but no broken system
- with a single “rpm-ostree reset” you can revert back to a certainly working system
- it will not break through upgrades or rebasing (changing the system entirely), as it clones their setup
- certain directories are read-only. /var /etc /var/home etc. are excluded from that.
So configs should be always possible, as well as changing packages. But I think maybe unlike sighted people, first priority should be to have a reliable system, that will never stop talking.
Or perhaps, better to rephrase as “first priority should be to have a system that’s as reliable for blind people as it is for sighted people”. In practice, that means that whenever text is printed to the screen, there needs to be a way for a blind person to know about it. Text to speech systems like espeak can run in kilobytes of memory and storage. The primary problem is sound support.
The second problem is maintaining this system. Right now, Linux is caught in a vicious circle. The system isn’t accessible enough for a blind person to use, so why would a blind person put in a bunch of work on it? The NVDA screen reader on Windows is an open source screen reader entirely created by blind users. But that only works because Windows is accessible enough that the tools blind people need to create and maintain software are accessible enough for us to use. What are the tools for creating these types of systems like on Linux? You mentioned CI tools. Currently, the leading providers of these tools don’t provide decent screen reader access to them, as far as I am aware. So now the tools for blind people on Linux need to be built and maintained by sighted people. From a practical standpoint, this just isn’t going to happen. Open source only works when people are scratching their own itches. It’s power is when people can build solutions for themselves. In the long term, an accessible Linux built for blind people by sighted people just isn’t sustainable.
This is a very good point. So the basic issues should be fixed, creating the foundations for blind people to easily improve it.
For example espeak would need actually understandable voices, sound would need to work always even if everything breaks, Wayland support would need to work somehow.
But to be honest, I have no idea how a blind person works on translating something to speech/braille that is not accessible? Like, how do they know its even there?
It happens in a few ways. First, by examining the sourcecode when available. However, blind programmers talented enough to do this generally have paid, closed source work they’re busy with. Second, when a platform has accessibility API’s, it’s at least easy to get the outline of a system, and determine what’s not working. Third, of course, commercial grants for paid work. In the case of Windows, many corporations pay a lot of money to make sure Windows is accessible, so it can be used in schools, governments, and workplaces. This kind of money just hasn’t been invested in the Linux desktop ecosystem. As well, in a centralized closed-source system, it’s easier to force everyone to follow various coding requirements. In the case of Linux, who has the power to push through the infrastructural changes we’re talking about? Oracle/Gnome, I guess? But there’s a bunch of work the distros also need to do. Unlike in Apple or Microsoft, it’s not just a matter of getting the “CEO of Linux” (not a real position) convinced that accessibility matters and she should invest in it.
Very true.
Do you know alternativeto.net ? Is it accessible? I would like to request a “blind” category, or would you prefer a better name?
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.
Thanks!