[Development] Trip report, Accessibility Hackfest, A Coruña
frederik.gladhorn at nokia.com
Thu Jan 26 16:35:52 CET 2012
in good old tradition I'm sending a trip report, since I'm just back from a Qt
related trip to Spain.
Since we have the Qt project now, I figured, I might just as well write to the
Since we haven't given any status updates about our accessibility (a11y) work,
I'll also summarize some of that to give you a bit of background.
Accessibility in Qt 5
What is that thing anyway?
While a11y is a broad term, in this context it's about exposing semantic
information about the application using some IPC framework.
This enables other programs to assist the user (AT=assisitive technology). An
example of an AT is a screen reader that helps users with low vision and blind
people to use the application.
Of course there are many more things in the field, but for our part this is
what we care about. Other parts such as font and color settings are important
but part of the platform, not enforced by Qt as library.
Currently three people spend part of their time on improving our accessibility
All of us work on improving the general APIs in Qt base and the new parts in
Qt Quick. We are happy that we got the basics for QML integrated in the
beginning of this year. Since then we can make Qt 5 applications written in
QML accessible. Ubuntu actually tested this work for their Unity-Qt and ships
it since the last release as a backported patch to Qt 4.7. This is not
recommended. Anyone who wants to have accessibility working with Qt should use
4.8 and in comparison Qt 5 looks much better still.
For the different platforms we were lucky enough to find one person interested
here in Oslo.
Jan-Arve Sæther started to implement IAccessible2 (Windows) support for Qt 5,
which is about to reach a state where we can review it on gerrit. Currently
there is support for the older MSAA only which is often insufficient.
Morten Sorvig improves the Mac support since we now need to support Cocoa, the
Carbon accessibility we had was falling apart.
I feel most at home on Linux and adapted the qt-at-spi bridge which integrates
Qt applications with the Gnome accessibility framework using DBus.
For accessibility we chose to consciously break even source compatibility in a
few places. This simplifies the APIs in many places and makes it easier for
application developers to extend custom widgets with useful a11y information.
We are relatively sure not to break many applications since the old version
was so fragile that any user would have run into so many bugs that we'd have
heard of them.
The change-log (dist/changes-5.0.0) will list all source incompatible changes
we deemed necessary.
One big example was the removal of an integer parameter in almost all
functions. This was part of the MSAA API (around Win95) where everything is
assumed to have a window handle and maybe if it's a really complex beast, a
few children. We changed it to handle all children as real objects and in the
process of removing this fixed several issues and inconsistencies in behavior.
The event was organized by the Gnome Accessibility team and hosted by Igalia
in A Coruña. I was able to attend thanks to Nokia supporting me.
>From Wednesday to Saturday we discussed the state of Accessibility on Linux.
For Gnome this means lots of polishing and getting the details right. Some big
issues are that it's currently impossible for them to switch on and off the
accessibility framework on the fly.
Qt is currently the newcomer to Linux Accessibility. After researching
different solutions that would be viable to expose our internal QAccessible
framework on Linux, I concluded with advice from others, that the best idea
would be to use AT-SPI 2. AT-SPI 2 is a DBus protocol that Gnome implements
using ATK and which the ATs communicate with using libatspi.
Using ATK would have been one option but not have matched with what we have
internally very well. Implementing just the DBus protocol gives us the benefit
of no additional dependencies.
AT-SPI 2 is the DBus port of the older AT-SPI (Assisitive Technology-Service
Provider Interface). A Qt bridge to this DBus protocol was started before I
picked it up, it can be found here:
For me as a newcomer there was a lot to learn, such as why and when I need to
keep sending accessibility updates. An example is text editing, where it's
important to keep the AT in the know of what text is there, which sections are
selected etc. I will write more detailed explanations and how to make custom
widgets play nice for all of this since it would be great if others joined in
completing this work.
We discussed many infrastructure bits. It turns out that there was much
agreement between the Qt and Gtk people :) Much of the discussions were needed
for us to understand what the screen reader writers need.
I was also happy that José Millán Soto joined. He improved KDE a11y last
summer as summer of code project. Together we worked on some applications.
Amongst them Qt Creator, Kate, Konsole, KMail and KDevelop. Many of the
changes and fixes for one application benefit the others since they could often
be made in Qt itself. It was great to dive into using the APIs we work with
for a change.
I'm personally very happy how fast progress is in this area, since it shows
that our QAccessible framework now reached a state where it is useful and will
get our software into the hands of more users.
More information about the Development