⡙⠑⠃⠊⠁⠝
ᅠ 
Thanks for maintaining a desktop environment
But is it accessible?
Samuel Thibault
Slides & stuff on
http://wiki.debian.org/accessibility-maint
http://liberte0.org/
http://hypra.fr/
 
 
1


⡙⠑⠃⠊⠁⠝
Outline
● Introduction to accessibility
● Accessibility stack
● CHECKME list for desktops
 
 
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


⡙⠑⠃⠊⠁⠝ 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.
 
 
8


UNO rights of
⡙⠑⠃⠊⠁⠝
persons with disabilities
"Discrimination on the basis of disability" means any 
distinction, exclusion or restriction on the basis of 

disability which has the purpose or effect of impairing or 
nullifying the recognition, enjoyment or exercise, on an equal 
basis with others, of all human rights and fundamental 
freedoms
 in the political, economic, social, cultural, civil or 
any other field. It includes all forms of discrimination, 
including denial of reasonable accommodation
"Reasonable accommodation" means
 necessary and 
appropriate modification and adjustments not imposing a 
disproportionate or undue burden, where needed in a 
particular case, to ensure to persons with disabilities the 
enjoyment or exercise on an equal basis with others of all 
 
 
12
human rights and fundamental freedoms;


⡙⠑⠃⠊⠁⠝
A question of priority
● Should be prioritized
– Just like internationalization
 
 
13


⡙⠑⠃⠊⠁⠝
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 (and very difficult to work)
– Even fewer people with awareness and 
programming skil s
→ “This is free software, you can modify it”
can not work.
● Support has to be integrated
– Distributed among maintainers themselves
 
 
14
– Not borne by the tiny a11y community


⡙⠑⠃⠊⠁⠝
Hardware
 
 
15


⡙⠑⠃⠊⠁⠝
Hardware
● Braille input/output
● Speech synthesis
● Joysticks
– Basically replace mouse
● Press button
– On-screen virtual keyboard
● Eye-tracking
● ...
 
 
16


⡙⠑⠃⠊⠁⠝ Don't focus on one technology
Even for a given disability, e.g. blindness:
● 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
 
 
17



⡙⠑⠃⠊⠁⠝
Piezo braille cell
● Usually 8 dots ~= one character
● Piezoelectric effect to move up/down
 
 
18



⡙⠑⠃⠊⠁⠝
Braille devices
● Serial, USB, bluetooth connection
● 12 / 20 / 40 / 80 cells, price ~= 150*n €
 
 
19


⡙⠑⠃⠊⠁⠝
Software interfaces
 
 
20


⡙⠑⠃⠊⠁⠝ 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
 
 
21


⡙⠑⠃⠊⠁⠝
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
 
 
22
➔ Better make existing applications accessible


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
 
 
23


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
 
 
24


⡙⠑⠃⠊⠁⠝
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
 
 
25


⡙⠑⠃⠊⠁⠝
Now the real stuff
Status, how it works, CHECKME
 
 
26


⡙⠑⠃⠊⠁⠝
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
 
 
27
– Really good and integrated support


⡙⠑⠃⠊⠁⠝
Generic methodology
Accessibility device
Application
Screen reader
Abstract representation
Accessibility
Registry
bus
Visual Rendering
 
 
53


⡙⠑⠃⠊⠁⠝ X accessibility, AT-SPI RPCs
X server
braille, speech, ...
pixmap
Orca
pango
text AT-SPI
gtk
atk
(bonobo/dbus)
gedit
 
 
58


⡙⠑⠃⠊⠁⠝ X accessibility, AT-SPI RPCs
X server
braille, speech, ...
pixmap
Orca
pango
getText
AT-SPI
gtk
atk
(bonobo/dbus)
gedit
 
 
59


⡙⠑⠃⠊⠁⠝ X accessibility, AT-SPI RPCs
X server
braille, speech, ...
pixmap
Orca
pango
change-notify
AT-SPI
gtk
atk
(bonobo/dbus)
gedit
 
 
60


⡙⠑⠃⠊⠁⠝ X accessibility, AT-SPI RPCs
X server
braille, speech, ...
pixmap
Orca
pango
text AT-SPI
gtk
atk
(bonobo/dbus)
gedit
Only on request from screen reader
 
 
61


⡙⠑⠃⠊⠁⠝
Abstract representation
● Window
– Vertical container
● Menu bar
– File Menu

Open Menu Item


– ...
● Horizontal container
– Text area
– Ok button
 
 
64


⡙⠑⠃⠊⠁⠝
Technically speaking
A lot of applications already technically accessible
– Console
– GTK2/3
– KDE-Qt4 sketchy, Qt5 improving
– Mono?
– Acrobat Reader
A lot are not
– KDE-Qt3
– Xt
 
 
65
– Self-drawn (e.g. xpdf)


⡙⠑⠃⠊⠁⠝
Debian packages
● brltty: braille drivers
● speech-dispatcher: speech drivers
● at-spi2-core: generic server parts of RPCs
● libgail*, libatk*: gtk-ish server parts of RPCs
● qt-at-spi: qt4 server part of RPCs
● Integrated in qt5 core
● gnome-orca: screen reader
 
 
80


⡙⠑⠃⠊⠁⠝
So, what do we want to achieve?
 
 
81


⡙⠑⠃⠊⠁⠝
So, what do we want?
At least, accessibility stack working in all desktops
● A matter of a few tests, see coming slides
– Include them in regular regression tests
● Allows to access applications
● I.e. allows “foreign user” use-case
– E.g. work with the regular user of the desktop
– May not be convenient, but far better than 
nothing!!
Be completely accessible
 
 
82
● More involved, see coming slides


⡙⠑⠃⠊⠁⠝
Accessibility stack working
Goal: user just has to start orca to get speech
● Means the accessibility stack should be ready
● ATM, not enabled by default with gtk2, qt4 and 
qt5 applications

export GTK_MODULES=gail:atk­bridge

export QT_ACCESSIBILITY=1

export QT_LINUX_ACCESSIBILITY_ALWAYS_ON=1
● BTW, time to change that by default?
– Bugs? Need to get fixed anyway!
 
 
83


⡙⠑⠃⠊⠁⠝
Testing accessibility stack
In both dm then “joe” user GUI session
● At-spi-bus-launcher and at-spi2-registryd 
running as proper user (dm then joe)
– /etc/xdg/autostart/at-spi-dbus-bus.desktop
● session dbus gives user's AT-SPI bus address:
dbus­send ­­session ­­dest=org.a11y.Bus ­­print­reply 
/org/a11y/bus org.a11y.Bus.GetAddress

● and xprop ­root AT_SPI_BUS returns it
● and toolkits enable their accessibility layer
 
 


⡙⠑⠃⠊⠁⠝
Testing accessibility stack
See http://wiki.d.o/accessibility-devel
● git clone git://git.debian.org/pkg-a11y/check-
a11y
● source env.sh
● make check
– Checks gtk2, gtk3, qt4, qt5
● ./troubleshoot
● orca -l sees accessible applications
– e.g. geany, gedit, ...
 
 


⡙⠑⠃⠊⠁⠝ How will the user start Orca?
“foreign user” use-case
● Can just ask the regular user to start Orca
● But shortcut very welcome!
– E.g. using a computer at a public library
● Gnome settled on super-alt-s
– How to decide a universal shortcut? See with 
freedesktop?
● Autostart on plugging USB braille display?
 
 


⡙⠑⠃⠊⠁⠝ How will the user start Orca?
“regular user” use-case
● Automatic start, easy to enable
– Icon somewhere in the interface
● Must be accessible!!
– Command-line interface for Debian Installer
gconftool­2 ­­type bool ­­set 
/desktop/gnome/applications/at/screen_reader_enabled true

gsettings set org.gnome.desktop.a11y.applications screen­reader­
enabled true

xfconf­query ­c xfce4­session ­p StartAssistiveTechnologies
qdbus org.kde.kaccessibleapp /Adaptor setSpeechEnabled true
 
 
● Add yours?


⡙⠑⠃⠊⠁⠝
Completely accessible
Desktop environment bits needs to be accessible
● Start menu, panel, task switching, ...
● Gtk/Qt: relatively easy for at least basic support
– Check out orca/accerciser
– Everything achievable with keyboard
● Self-drawn: has to interface with AT-SPI 
(through ATK or natively)
● ATM, only gnome and mate are really 
accessible enough, and xfce and lxde OKish.
 
 
– Having more choice always better!


⡙⠑⠃⠊⠁⠝
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 at-
spi yourself for them
– Always provide alternative textual content for 
visual content
● Keep it simple!
 
– Not only to make s  
creen reading easier, but to  90
make life easier for all users too!



⡙⠑⠃⠊⠁⠝
Test it yourself! (GUIs)
orca -e braille-monitor
● Then work as usual
● Only using keyboard
● Checking text appears there
And crash-test
● Turn on speech, switch off the screen
 
 
92
https://developer.gnome.org/accessibility-devel-guide/stable/



⡙⠑⠃⠊⠁⠝
Test it yourself! (GUIs)
Accerciser
● Sort of debugger
● Tree of widgets
● Properties
 
 
93
https://developer.gnome.org/accessibility-devel-guide/stable/


⡙⠑⠃⠊⠁⠝
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!
 
 
102


⡙⠑⠃⠊⠁⠝
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
 
 
103


⡙⠑⠃⠊⠁⠝
Conclusion
● Quite a few of your desktop users need 
accessibility
● In any situation
– Library, practice rooms, etc.
● Please help us making accessibility 
mainstream!
● debian-accessibility@lists.debian.org
● http://wiki.debian.org/accessibility-maint
 
 
115

Document Outline