February 16, 2012

Accessibility Leaders in Linux

Accessibility to computers for people with vision, hearing, or physical impairments needs to be a part of fundamental design, and not an afterthought. Progress in the proprietary world is slow, and even slower in the Linux/FOSS world. But thanks to some dedicated people some significant work has been accomplished, and the groundwork laid for a common platform for all Linux distributions to build on.

What is Accessibility?

OrcaA lot of people have rather negative attitudes towards accessible design, and dismiss it as a lot of bother for a tiny percentage of users. Some are even hostile to the whole concept, like it's conferring special privileges on the undeserving. I had a rather spirited discussion with a building contractor once upon a time who went out of his way to park his equipment on the handicap parking spaces when there was abundant regular parking closer to the work site. (The older I get the less I understand humanity.)

It's expensive to retrofit old buildings, sidewalks, public parks, and other structures to be friendlier to people who can't navigate heavy doors, stairs, narrow crowded store aisles, or walk any distance. My number one peeve is tiny restroom stalls with doors that open inwards. Not everyone is agile enough to climb on the darned seat in order to open the door. Car design is pretty much unchanged from the Model T. Public transit is often a contest of the fittest.

I can't think of a single good reason to write off our fellow humans and say "Well they'll just have to accept limitations" when so many limitations can be conquered because they're just engineering problems. Something I run into all the time is "Oh but there aren't many disabled people, why should I go out of my way for one or two percent of the population." Not only is this heartless, it's blind to reality because something like 50 million Americans have some kind of physical impairment, and the number is growing.

A bonus of accessible design is it's good design for everyone. It's absurd that houses, to give one prominent example, are still built with the same inadequate floor plans as they always have. Narrow doors and hallways are unfriendly to everyone, not just wheelchair users, but to anyone who has to move furniture, or carry laundry baskets or bags of groceries. Bathrooms with grab-bars and sit-down showers are safer for everybody, and kitchens always suck because they are designed by people who never use them. Electric outlets are placed as though we will plug things in only once and will never change our minds, so it's all right to make them inconvenient. What does it take to open a window? Can you arrange furniture sensibly and with good flow? And so on...take a look around your own house; chances are it suffers from a legacy of decades of bad designs mindlessly repeated.

There may not be a lot that FOSS can do about such problems, but one arena where we rule is computing, and that is the essential starting point. Being computer-literate and connected means tapping into a universe of information and essential services, and being able to program and design devices. We have a golden opportunity in FOSS to change people's live simply by writing code.

Who Will Write It?

Let's think about this a for a moment. The most-misused saying in FOSS is "Scratch your own itch," and the context is usually some variation on "Users are annoying and I don't want to think about them." Here is the quotation in context from Eric Raymond's The Cathedral and the Bazaar:

"1. Every good work of software starts by scratching a developer's personal itch.

Perhaps this should have been obvious (it's long been proverbial that "Necessity is the mother of invention") but too often software developers spend their days grinding away for pay at programs they neither need nor love."

Raymond also said, "I sent chatty announcements to the beta list whenever I released, encouraging people to participate. And I listened to my beta-testers, polling them about design decisions and stroking them whenever they sent in patches and feedback.

So a personal itch isn't just something that matters only to the programmer, but rather is something he or she has a strong interest in, and is interested in having actual real people use it. My interest in accessible technologies is fueled by two things: I've always been for the underdog, and some people close to me have had unnecessarily difficult lives because of a lack of helpful technology and rational design, and a lack of interest in developing any.

It is a large and complicated problem: impaired hearing, impaired vision, can't type, reading disabilities, can't use a mouse, low stamina for sitting at a computer, and any combination of these. How to translate images and audio, how to compose music or edit photos or draw pictures? Maybe someday we'll have something like Braille displays that display images for people who can't see, and a way to translate music into a form for people who can't hear, and tools for people with various impairments to have both input and output in whatever forms they want, and to invent new ones.

The proprietary world is ahead of FOSS in both software and hardware, and it's not all that advanced, but is stuck at turning plain text to speech, and speech to text. Even that is more challenging than it seems, as this interview with some of the GNOME Accessibility developers illustrates.

Accessible FOSS Leaders

The GNOME 2 project has long provided the best accessibility support: complete keyboard control of the desktop, screen magnification, onscreen keyboard, and the GNOME team even invented an open accessibility architecture, the AT-SPI (Assistive Technology Service Provider Interface), because they recognized that it needs to be fundamental part of GNOME's architecture. GNOME 3 accessibility support is incomplete, so stick with GNOME 2. KDE4 aims to support AT-SPI someday, but it's not there yet. KDE4 has its own sets of assistive technologies, but they only work in KDE4.

The Fedora Accessibility Guide makes the case for Linux and FOSS as the logical accessibility leaders:

"While the Graphical User Interface (GUI) is convenient for sighted users, it is often inhibiting to those with visual impairments because of the difficulty speech synthesizers have interpreting graphics. Linux is a great operating system for users with visual limitations because the GUI is an option, not a requirement. Most modern tools including email, news, web browsers, calendars, calculators, and much more can run on Linux without the GUI. The working environment can also be customized to meet the hardware or software needs of the user."

The Fedora Accessibility Guide has a lot of good information and is updated with nearly every Fedora release. Fedora always bundles a lot of accessibility applications.

Vinux, based on Ubuntu 10.10 Maverick Meerkat, is a complete live Linux distribution optimized for blind and visually impaired users. It bundles screen readers, full-screen magnifiers, built-in support for USB Braille displays, and optimized fonts and colors.

The Braille display support is a big deal because it's ready at bootup. It also comes with Compiz, which has some nice magnifying and navigating features using the mouse. Vinux can be installed to a hard drive, but you'll need someone who can see to do it. Vinux is the best and easiest way to get the best Linux accessibility applications working out of the box. Whatever you do, do not ever upgrade Vinux unless the maintainers say it is OK, because an upgrade will probably break the applications you depend on.

The Orca screen reader is the most fully-featured Linux screen reader. It supports multiple speech synthesizers and Braille displays. You need GNOME 2 for Orca to work because there are many glitches in GNOME 3. As GNOME and KDE continue to present moving targets stick with Vinux for best performance and least hassles.

Linux has several text-to-speech readers such as eSpeak and Festival that work fairly well, and Emacspeak, like Emacs, is a self-contained universe that is amazingly functional — inside of Emacs. The only good speech-to-text application for Linux (that I know of) is Julius. Julius is maintained by the Nagoya Institute of Technology and Kyoto University, and is quite sophisticated, though a fair bit of work to set up.

There is much untapped potential in Linux and FOSS for leading the way in accessible and assistive technologies. Perhaps someday a desktop roadmap will look like a journey, a succession of improvements that build on what came before, instead of a series of cliffs and do-overs.