Welcome gla11y, the user interface accessibility checker!

LibreOffice is designed with great attention to accessibility, to make the suite convenient and comfortable to use, and to cater to users with special needs. Last year The Document Foundation published a Tender to Implement Accessibility Improvements regarding user interface widgets that are added to the suite but which have accessibility shortcomings.

French company Hypra, which works on accessibility improvements in free and open source software, was awarded the tender. Today they are announcing the tool that they have developed – note that this tool is not targeted at end users of LibreOffice, but rather at developers. Of course, all users who have experienced accessibility issues in LibreOffice can benefit from it. Let’s hear what Hypra has to say…

Making LibreOffice usable by everybody, including disabled people, is a must so that anyone can work on documents for their own uses or their daily job. Accessibility concerns happen to be very diverse, and fixing or even just detecting them can be complex. Some of them can actually be detected automatically, and this is the goal of the “gla11y” tool, which is the result of the tender.

Gla11y (Glade accessibility) is a Python script which takes .ui files (Glade graphical interface description files), and reports the accessibility issues which can be found with static analysis. This includes mostly the missing labelling relations, which happens to be a very frequent accessibility issue. If, for instance, a dialog box contains several GtkEntry widgets to be filled in by the user, and several GtkLabel widgets to describe them, but with no relations between the two series, a blind user would have to remember the different parts, thus considerably reducing usability. This will show up in gla11y warnings as:

     myfile.ui:5 WARNING: 'GtkLabel' 'label1' does not specify what it labels within 'GtkFrame' 'frame1'
     myfile.ui:9 WARNING: 'GtkLabel' 'label2' does not specify what it labels within 'GtkFrame' 'frame1'
     myfile.ui:12 WARNING: 'GtkEntry' 'entry1' has no accessibility label while there are orphan labels within 'GtkFrame' 'frame1'
     myfile.ui:14 WARNING: 'GtkEntry' 'entry2' has no accessibility label while there are orphan labels within 'GtkFrame' 'frame1'
     4 new warnings 

Adding relations between each widget and its label will allow screen readers to tell users exactly when to type what.

Running a basic version of gla11y alongside compilation of LibreOffice was integrated on February 21; It only checked for broken relation links. It turns out that there is currently no such bug, so it didn’t raise any warning, but now we are sure that no such bug will be introduced in the future (as happened in the past).

Gla11y runs in all compilation cases, except when using the old version 2.6 of Python and python-lxml is not available, so it will be running in mostly all development scenarios, thus catching issues as early as possible. It is useful to have the python-lxml library installed, or make sure that it is built automatically by LibreOffice, so that the analysis can be done faster and warnings get displayed better.

An initial version of more advanced analysis, which actually finds some existing issues, was merged on February 28.

As of today, the tool reports a total of 2155 warnings in 434 .ui files (out of the existing 981 .ui files). Of course, we do not want to overwhelm developers with all of these existing issues, so a suppression mechanism has been implemented, so that only warnings for new issues will be emitted; warnings for existing issues will be silenced by rules in suppression files.

In this way, to start with we will prevent the introduction new accessibility issues, while existing issues are progressively fixed. Also, for now only very basic warnings are enabled, and we will enable the complete set progressively. That will allow us to observe how developers react to some warnings, and fix heuristics and documentation on the
for them, before enabling more warnings.

Regarding fixes for existing issues, gla11y reports both labels and widgets which don’t have relations (“orphaned” labels and widgets). Very often, it is very easy to find which relation is missing and remove the warnings (actually, remove the suppression rules) with a few lines of .ui files. Working on this could thus be part of “Easy Hacks” for new contributors.

Fixing warnings raised by gla11y will hopefully greatly improve usability in LibreOffice for disabled people. Of course, there remain many other accessibility issues which can not be detected by static analysis, but gla11y will helps to cover a fair bit of the work, and leave time to concentrate on the more difficult issues.

Thanks to Hypra for their work on this tool! Learn more about how TDF uses its tendering process to improve LibreOffice and share knowledge with the community.