ᅠ
Supporting accessibility
in your distribution
Some feedback from Debian
Samuel Thibault
Slides & stuff on http://brl.thefreecat.org/
http://liberte0.org/
1
Outline
● Introduction to accessibility
● Hardware
● Software interfaces
● Discussion
● Guidelines
4
Gnuplot
Color blindness: 8
% male, 0.5% female
5
Gnuplot 5!!
Color blindness: 8
% male, 0.5% female
6
What is accessibility?
AKA a11y
Usable by people with specific needs
● Blind
● Cognition (dyslexia, attention
● Low vision
disorder, memory, ...)
● Deaf
● Motor disability (Parkinson, ...)
● Colorblind
● Elderly
● One-handed
See Accessibility HOWTOs
● You
“Handicap” depends on the situation
and is not necessarily permanent
7
10% handicapped – 20% limited
Hardware
8
Hardware
● Braille input/output
● Speech synthesis
● Joysticks
– Basically replace mouse
● Press button
– On-screen virtual keyboard
● Eye-tracking
● ...
9
Don't focus on one technology
Even for a given disability
● Braille is not perfect
– A lot of blind people can't read brail e
– Braille devices are very expensive (several k€)
● Speech synthesis is not perfect
– Noisy environments
– Tedious for spelling issues
10
Piezo braille cell
● Usually 8 dots ~= one character
● Piezoelectric effect to move up/down
11
Braille devices
● Serial, USB, bluetooth connection
● 12 / 20 / 40 / 80 cells, price ~= 150*n €
12
Software interfaces
13
Why making GUI accessible?
(when textmode seems so easier to make
accessible)
● A lot of stuff is not available in textmode
– e.g. real javascript support
● Business applications
● Non-tech people need to get help from non-
tech people around
14
Dedicated software?
● e.g. edbrowse, a blind-oriented editor/browser
● Generally a bad idea!
– Oriented to just one disability
– Lack of manpower
● e.g. Web browser
– javascript/flash/table/CSS support?
● e.g. An office suite
– MSOffice/OpenOffice compatibility?
– Disabled & non-disabled working together
● Better use the same software
15
➔ Better make existing applications accessible
Design principles
● Same software, made accessible
– Understand each other, get help, etc.
● Synchronized work
– Just alternate input/output
– Being able to work together
● Pervasive
– Shouldn't have to ask for software installation /
configuration
16
Status in a few words
● Text mode is generally quite well accessible
– But not so well suited to beginners
● Gnome quite accessible
– Gnome 3 was however almost a restart-from-
scratch
● We're late compared to the Windows world
– We started less than a dozen years ago
– They started a couple of decades ago
● We're Stone Age compared to the Apple world
17
– Really good and integrated support
Generic methodology
Accessibility device
Application
Screen reader
Abstract representation
Accessibility
Registry
bus
Visual Rendering
43
X accessibility, AT-SPI
X server
braille, speech, ...
pixmap
Orca
pango
text AT-SPI
gtk
atk
(bonobo/dbus)
gedit
48
Abstract representation
● Window
– Vertical container
● Menu bar
– File Menu
●
Open Menu Item
●
…
– ...
● Horizontal container
– Text area
– Ok button
51
Technically speaking
● A lot of applications are already technically
accessible
– Console
– GTK
– KDE-Qt4/5 (“Real Soon Now”)
– Acrobat Reader
● A lot are not
– KDE-Qt3
– Xt
52
– Self-drawn (e.g. xpdf)
Text applications
● Usually work really great for braille output
● Always provide such equivalent of graphical
applications, e.g. based on same shared lib
– Useful for servers via ssh too!
● The default output of screen readers is what the
cursor is on
– Works great with shell, editor, etc.
– Doesn't work so great with semigraphical apps
➔ Put the cursor appropriately!
59
– Even when invisible, e.g. mutt, aumix
Graphical applications
● Design your application without gui in mind first
– Logical order, just like CSS ☺
● Use standard widgets
– e.g. labeled text fields
– Avoid homemade widgets, or else implement atk
yourself for them
– Always provide alternative textual content for
visual content
● Keep it simple!
– Not only to make s
creen reading easier, but to 60
make life easier for all users too!
Discussion
66
This is all about freedom #0
“The freedom to run the program, for any
purpose”
What about being able to use the program?
● RMS said a11y was just a “desirable feature”.
– “Desirable” only, really?
● RMS said “this is free software, you can modify
it” (freedom #1)
– Can. Not. Happen.
67
Why is accessibility so hard?
● Vint Cerf asked in Communications of the ACM
November 2012:
“Why is accessibility so hard?”
Issues are mostly not technical, actually
69
A question of priority
● Should be prioritized
– Just like internationalization
71
A question of who doing it
● Concerns only a small fraction of population
– Already a hard time using computers...
– Almost nobody with both disabilities and
programming skil s
– Almost nobody with awareness and
programming skil s either
→ “This is free software, you can modify it”
can not work.
● Support has to be integrated
– Distributed among maintainers themselves
72
– Not borne by the tiny a11y community
The
specialized distribution trap
There shouldn't be specialized distributions
● Accessibility is orthogonal to any other concern
– It's orthogonal to blends and tasks
– Users should be able to choose blend&task
● All (music, medecine, teaching, …) distributions
should be accessible
● Specialized distros tend to be specific
● Specialized distros are interesting testbeds,
though
73
Graal:
accessibility everywhere
● Using a computer at the library, the airport, the
university practice room, etc.
– First ask admin to install & configure
software?!
→ Installed by default, ready for use
– Requires very close integration
– E.g. support in Debian Installer
74
So, what to do?
75
Software Distribution
Text-based distribution
Installation, configuration, ...
A plethora of software, often text equivalents
ogg123, mc, o3tohtml...
Please continue packaging those!
Accessibility-related packages
Brltty, AT-SPI, Orca, ...
76
Testing it
Make sure that it works
● In textmode
– readers access VT & soundcard, before login
● /dev/vcsa
– they simulate keypresses
● TIOCSTI
● uinput
77
Testing it
In both dm then “joe” user GUI session
● at-spi-bus-launcher, at-spi2-registryd running as
the proper user (dm then joe)
● session dbus gives user's AT-SPI bus address:
dbussend session dest=org.a11y.Bus printreply
/org/a11y/bus org.a11y.Bus.GetAddress
● and xprop root AT_SPI_BUS returns it
● “accerciser” tool seeing applications
● Orca runs and speaks
It needs to be enabled!
● GTK2
gconftool2 get
/desktop/gnome/applications/at/screen_reader_enabled
● GTK3 schema
gsettings get org.gnome.desktop.a11y.applications screen
readerenabled
gsettings get org.mate.interface accessibility
● KDE4/5
echo $QT_ACCESSIBILITY
● XFCE
Xfconfquery c xfce4session p StartAssistiveTechnologies
More bits
Some applications need more
● GTK2: libgail module
● KDE4: qt-at-spi plugin
● Open/LibreOffice: GTK frontend
● Java: Java-atk-wrapper
– problem with multi-threading :(
● Typing from braille device: xbrlapi
● 32bit apps: 32bit equivalents!
How to bootstrap?
82
How to bootstrap?
Entering a cyber café, how to access computers?
● Autodetection
– USB braille devices
● Shortcuts
– Existing: XAccess (standard shortcut), Compiz
zoom.
– Speech synthesis?
● Accessibility panel
– Needs to be accessible itself!
83
How to bootstrap? (2)
Accessibility installed by default
● You never know who will need it
– At home
– At workplace
– At library
– ...
● Ready to be easily enabled
● GPII: e.g. a USB key with a config file
How to bootstrap? (3)
Brand new computer, let's install Linux!
● Same issues and potential solutions
● Nowadays: “accessible” installation CDs
– e.g. start speech synthesis by default
● But all installation CDs should be accessible!
– Including e.g. all Debian forks for various uses
● Debian installer
– USB braille auto-detection
– High contrast or hardware speech by hand
85
– Software speech synthesis (s <enter>)
Installer TODO
Details available on http://brl.thefreecat.org/
● Switch to text mode
– and run brltty (udev script) or speakup
● Graphical accessibility
– AT-SPI & Orca
● Color themes
● Enable same accessibility features at reboot!
● Being able to pass parameters for tuning them
– Kernel cmdline or preseed
86
Has to be testable
By all maintainers
● Debian installer: wiki page documents testing
● Part of the regression tests
● No need for specific hardware
– Qemu has virtual braille device
87
What about the bootloader?
Mostly not accessible nowadays, but improving
● Beep to tell that the menu is shown (done)
● Keyboard shortcuts (done)
● Beep to tell which item is selected
● Pre-synthesized ogg files saying entries
– Sound drivers in the bootloader!?
● Screen reader
– For the core, just another alternative terminal
89
About bugs
● Take users suggestions into consideration
– E.g. bracketed links in text web browsers
● Be patient with disabled people
– It's not easy for them to use your software
– It's even more difficult for them to explain their
problems in an understandable way
● e.g. “brail e doesn't fol ow”
➔ Discuss!
90
About bugs (2)
● Try to keep in mind their disability and their
consequences
– Yes, blind users don't care that the framebuffer
doesn't show up properly!
● You could even contact your local institutes for
disabled people, to discuss directly with users
91
More general ideas
Getting people involved
Subscribe to foo-accessibility
Make sure yourdistrib.org is accessible
Add an “accessibility” chapter to the installation
manual
Add an “accessibility” chapter the Maintainers'
guide
Add an “accessibility” tag to bugs
Cc-ed to foo-accessibility
92
Discussions
Foo-accessibility mailing list
● Good to centralize user knowledge
● Shouldn't become a “side-park”
– Discussions should happen on main lists
– Cc foo-accessibility
Discussing is essential
● Find compromises so it can be mainstream
● Involve other maintainers
●
93
Sustainability
Conclusion
● Quite a few of your distribution users need
accessibility
● Right from the start
– Yes, blind people do reinstall their PC at 2am
too :)
– No, they don't necessarily have a sighted
sibling near them at 2am either :)
● In any situation
– Library, practice rooms, etc.
● Please help us making accessibility
102
mainstream!
Document Outline