Ask Slashdot: How To Handle Unfixed Linux Accessibility Bugs?
dotancohen (1015143) writes "It is commonly said that open source software is preferable because if you need something changed, you can change it yourself. Well, I am not an Xorg developer and I cannot maintain a separate Xorg fork. Xorg version 1.13.1 introduced a bug which breaks the "Sticky Keys" accessibility option. Thus, handicapped users who rely on the feature cannot use Xorg-based systems with the affected versions and are stuck on older software versions. Though all pre-bug Linux distros are soon scheduled for retirement, there seems to be no fix in sight. Should disabled users stick with outdated, vulnerable, and unsupported Linux distros or should we move to OS-X / Windows?
The prospect of changing my OS, applications, and practices due to such an ostensibly small issue is frightening. Note that we are not discussing 'I don't like change' but rather 'this unintentional change is incompatible with my physical disability.' Thus this is not a case of every change breaks someone's workflow."
The prospect of changing my OS, applications, and practices due to such an ostensibly small issue is frightening. Note that we are not discussing 'I don't like change' but rather 'this unintentional change is incompatible with my physical disability.' Thus this is not a case of every change breaks someone's workflow."
Somebody has already narrowed the problem down to specific patch:
Comment 7 Peter Hutterer 2014-01-16 05:43:43 UTC
bisected to this commit:
commit 11319a922575f1da1d3c5774728c0dee12bab069
Author: Peter Hutterer
Date: Thu Oct 11 16:03:33 2012 +1000
xkb: ProcesssPointerEvent must work on the VCP if it gets the VCP
It would help if that number was a link to the git log.
They might not have implemented that bug yet.
I think it's reasonable to believe that an Accessibility feature continue to work. And I think it's in the best interests of the Linux community for that to happen.
Oliver's law of assumed responsibility: If you're seen fixing it, you will be blamed for breaking it.
Basically what you want is to escalate this issue so that it gets more attention. As this affects people with disabilities I suspect you may get some results if you try to contact the Linux Foundation, who may then be able to twist a few arms or throw some resources at the problem as needed. You could, for example, point this very thread out to "pr@linuxfoundation.com" and let them know that this is a bit of a black eye against Linux.
So far, we know that Peter caused the change, Peter knows that, and Peter knows how to put it back. Peter isn't sure that it's broken since it now follows the written spec. Ideally, we'd like Peter to fix it, but for that we need to convince Peter that the new behavior is wrong and it SHOULD be reverted. If he chooses to, it will take many seconds to revert the change.
What I'd do next is find the written documentation of the behavior in earlier versions, in Windows, and OSX. YOU said they all work the other way, but the spec says otherwise. So prove your case by linking to written documentation. When you post the links, mention "the principle of least surprise", a term meaning that users should not be surprised by the behavior of the software.
Also, right now ONE person on the planet has said they don't like the new behavior. If EVERYONE in a large group is having a problem with it, a few could post saying so. I'm sure there are forums and such related to accessibility, so ask around. Find out for sure, are other people reall having great difficulty with it? If so, will they post in the ticket?
Then mail Peter and request that he look at it. You could ask how much would be a fair contribution for his time spent looking into it. (Answer - about $20 - $50).
If Peter doesn't respond, email the project maintainer, mentioning that Peter seems to be unavailable and asking that the maintainer look at it.
If those two options fail, that single-line change is so small that any Linux programmer could compile a copy for you with it reverted. It would only take a minutes. Two years from now, if an important update comes out, someone could easily do the same with the new version. Obviously that's less desireable than getting the upstream source fixed, but it fixes YOUR problem.
I agree. Last I heard, we *wanted* people to use Linux on the desktop.
That's just a rumor that the Gnome guys would take issue with.
XML is a known as a key material required to create SMD: Software of Mass Destruction
The open source community is pretty cool. Simply getting together in the right forum would likely get the right people interested in helping you. Hell I'd start with posting to Slashdot... hey... WAIT A MINUTE WE'VE BEEN HAD!!!
Read the bug report. The accessibility feature works. The submitter (who also happens to be the bug reporter) found a fairly minor subfeature (the ability for sticky key modifiers to act as lock keys) has been broken recently. I say fairly minor, because the only key this might be critical for in certain use cases is the Shift key, where a separate Caps Lock is already available. Exaggerating the issue by claiming it makes accessibility on Xorg unusable and bitching on slashdot because its been a whole 11 weeks since he found the problem and noone has released a fixed version yet is just grandstanding.
IF they have a disability that requires them to use sticky keys AND if sticky keys don't work THEN exactly how do you expect them to code the fix?
rewriting history since 2109
The sad part is that it is a known bug, that got introduced breaking a perfectly working feature, and is still not fixed. It is not a new feature they're asking for, just to retain something that was always there.
This is programmers not doing their job - and it being FOSS that is distributed for free is irrelevant as it's more than a hobby-level tool we're talking about. It's production-level software, and essential to the operation of a large number of computer systems.
Read the bug report. The accessibility feature works. The submitter (who also happens to be the bug reporter) found a fairly minor subfeature (the ability for sticky key modifiers to act as lock keys) has been broken recently. I say fairly minor, because the only key this might be critical for in certain use cases is the Shift key, where a separate Caps Lock is already available.
The bug is asking for the wrong fix
Different modifiers have different combinatorial effects. Caps Lock is not necessarily Caps Lock, in other words. I know that most Linux people hate them because they are cheap, and you have to do a "disable secure boot" dance to install Linux on them, but ChromeBooks, in particular, lack a Caps Lock key. Caps Lock is achieved by hitting both shift keys simultaneously.
If that isn't convincing enough, consider Alt-Gr vs. Right-Alt behaviour on international keyboards that report a USB HID country code of 00h.
While I was working on ChromeOS at Google, there were a number of obvious usability issues for the OS, but the majority of them stemmed from the need to upstream support into Linux, and the difficulty of doing this without involving an Alan Cox, Ingo Molnar, or similar personage when you were dealing with things which crossed area boundaries. Input is one of these areas, and it was rather difficult and roundabout to get support for non-adjusted raw system time stamps in evdev inputs, even as a non-default option.
Exaggerating the issue by claiming it makes accessibility on Xorg unusable and bitching on slashdot because its been a whole 11 weeks since he found the problem and noone has released a fixed version yet is just grandstanding.
I agree the issue is exaggerated, but mostly because I disagree about where in the input stack usability issues should be addressed. The usability belongs in the input stack, as does the internationalization, below the point at which events are reported to the console, or to X (or Wayland or whatever display server is handling the apps and forwarding the input events).
It's pretty easy to see where this breaks down by enabling "programmer mode" (meaning: disabling "secure boot mode") on a ChromeBook, and enabling root or other console logins. It's easy to see the shift-shift (or Caps Lock, if you plug in a standard USB keyboard) and internationalized input don't work the same on the console as they do in the graphical environment.
In general, the input stack in Linux has a *lot* of problems. A fun experiment to try is plugging in 3 or 4 USB keyboards, and playing with the Caps Lock; the light goes on or off on whatever keyboard you're playing with it on, but the actual Caps Lock state depends on whether you've hit the Caps Lock key on an even or odd number of keyboards, and the keyboard Caps Lock lights very quickly become desynchronized from the actual Caps Lock state (i.e. turning Caps Lock on on keyboard A lights the light on A, and hitting it on B turns it on on B, rather than off on A, even though the state is that Caps Lock is no longer in effect).
Similar issues occur when using sticky modifiers for usability, and when moving between virtual consoles with various modifier/Caps Lock/etc. states in effect.
I understand the idea that you may wish to explicitly allocate resources in a multihead environment, but the input stack really doesn't do that very well, either - these modifiers should happen in the input stream above a stream join as a resource allocate by a virtual console or display server, and not in the display server or the underlying driver.
Windows doesn't support multihead well (at all, for multiple sessions, without something like Citrix intermediating the process), but it also doesn't screw up on where it put the internationalization translation tables and the dispatch routines and the usability.
PS: In case you care, AFAIK, there are zero vendors who put the correct internationalization keyboard code type in the USB
Small tweaks are doable, but even then you will get a lot of hassle. You will spend a good amount reading source code, setting up the build environment and after that maintaining your own fork if the upstream didn't accept your change.
For anything larger, you will also need to acquire a large amount of understanding how the particular system works before you can make the proper change. For example, good luck fixing a graphics driver bug (even if it looks like a simple glitch) if you do not know how graphics drivers work. Getting familiar with the bigger picture will take weeks or months.
Now, that does not mean that open source is not useful. The people familiar with graphics drivers (for example, Freedesktop and Mesa guys) can collaborate using open source. But they are experts in their field. If you are outside of this specific expertise, your best bet is usually writing accurate bug reports. You cannot go there and fix everything that is broken just because you have the source.
Try this sometimes. When you find a bug in open source software, take the responsibility of fixing it properly and sending the patch. Doooo it, walk the walk. The point is that you will notice how much work it all involves.
Kudos to RMS for believing accessibility is a human right, and taking action personally to promote accessibility in Linux. Fixing accessibility in Linux is a mess, but if we can get enough people involved, it's doable. This is the mission of multiple efforts, and the one I'm involved in is the ACF (Accessible Computing Foundation). The free software movement, and the goal of people with disabilities taking control of their computing environments are well aligned. GNU/Linux provides a platform where at least in theory any and all accessibility issues can be corrected, unlike Windows and Mac OS X.
Unfortunately there are considerable obstacles to "fixing" accessibility in Linux. I believe they can be overcome if enough people come together to make it happen, but there are huge challenges. There are also people who devote a lot of their lives to improving the situation, often for free or very low financial incentive. I spearheaded the 3.0 release of Vinux, which is Linux for the Vision Impaired. I fixed a dozen or so accessibility bugs, but the right fix in many cases would involve major changes to GNU/Linux. I'll list a few.
The accessibility API in GNU/Linux, atk/at-spi, should have shared more functionality with Windows. For typical corporate and FOSS anti-Windows reasons, the accessibility stack was built intentionally in a Windows incompatible way. The result is that accessibility in Firefox and many other major applications never works as well in Linux as it does in Windows. It simply is not reasonable to make every software vendor do all their accessibility coding N times for N operating systems. There is even an effort called Iaccessible2, which is basically a FOSS accessibility stack for Windows, which the creators seemed to hope could also work for Linux. The code was even donated to the Linux Foundation. However, there was never any money or motivation in FOSS land to actually port the software to Linux, SFAIK. Building a single accessibility API that works in Windows, GNU/Linux, Android, and Mac OS X would go a long way towards fixing accessibility in all of those places, but especially in GNU/Linux, since it is usually the OS vendors put the least effort into. As it stands, few GNU/Linux distros are able to keep FireFox and LibreOffice accessibility working.
Then there's the problem of Linux being a multi-headed Hydra monster with no one in charge. At Microsoft, Bill Gates took a personal interest in accessibility, and that's all it took for the entire company to take accessibility seriously. In GNU/Linux land, RMS also takes a strong personal interest in accessibility, but it's not like most of the devs work for the guy. RMS can make his case, but when your boss is asking for prettier GTK+ widgets in Gnome 3 and you're late delivering, accessibility fixes fall by the wayside. When we are lucky enough for a patch to be developed, many times the GNU/Linux authors refuse to include them, because the "fix" is not perfect. For example, I added accessible descriptions to pixmaps in GTK+, which enabled blind users to hear 'star' for a star icon in a table containing pixmaps. The devs could not decide if pixmap was the right place for this accessible description, enabling them to justify doing nothing, and the continued lack of support for accessible icons was the result. It saved them a few hours of work in testing, which was their real priority. Multiply this asinine situation 100X, and you begin to understand why making Linux accessible is hard. GNU/Linux land seems to take pride in making it hard to fix accessibility, because we make it almost impossible to override any given stupid author's decision not to support accessibility. I should be able to patch GTK+, and have that patch automatically distributed to every user of every distro who believes my accessibility patches are something they want. Instead, we've built a system where patches have to be accepted by the authors, and then distributed slowly over years to the stable distros. Stupid, stupid, stupid...
Celebrate failure, and then learn from it - Nolan Bushnell
put this patch in /etc/portage/patches/x11-base/xorg-server/
stickykeysfix.patch
It simply reverts the problem causing commit and now sticky keys are released after a mouseclick on my system. I don't know if this introduces other bugs though.