[Development] Trip report, Accessibility Hackfest, A Coruña

Frederik Gladhorn frederik.gladhorn at nokia.com
Thu Jan 26 16:35:52 CET 2012


Hello,

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 
list.

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 
implementation.
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.


ATK/AT-SPI/Accessibility Hackfest
=================================

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:
http://gitorious.org/qt-at-spi

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.


Cheers
Frederik





More information about the Development mailing list