Anne van Kesteren

ARIA, role, and W3C politics

ARIA is the hopefully short-term, stopgap, solution to accessibility of widgets typically found in “Web 2.0 applications” build using HTML, CSS, and JavaScript. It’s a stopgap and hopefully short-term solution, because accessibility (universality if you want) is not an integral part of the widget, such as with <input type=date>. Rather, authors have to do quite some additional hacking to ensure that the widget type (checkbox, password field, et cetera) and widget state (checked, open, closed, et cetera) are properly exposed. Especially without proper debugging this is likely to do some harm. On top of that comes the copy and paste authoring cloud that doesn’t notice any bad side effects from improper usage as that only becomes evident once you use assistive technology, such as a screen reader. In other words, this solution is a lot like longdesc, headers, axis, and dare I say, alt. Although, to be fair, alt is shown as a tooltip in Internet Explorer which gives people using that browser some feedback. So there are definitely issues. Although as outlined in an earlier post on ARIA the “better” alternatives are not ready yet.

The role attribute was first introduced as part of XHTML 2.0 and is now being backported as a module for the XHTML Modularization effort. (Sidenote: XHTML Modularization is more or less made obsolete by (X)HTML5, but still exists because the XHTML2 Working Group still exists it seems. W3C politics is a lovely game where the real world does not matter and we have e-mail fights over who owns the opaque string for instance.) The role attribute is designed as a way to add semantics to an element. This is better in some twisted way because it keeps the amount of new elements down while it increases the amount of opague strings (actually, CURIEs (no chemistry involved), which are worse in several ways) that go into the role attribute value. For a while I thought this was something that could be safely ignored like other Architecture Astronaut inventions, but then the ARIA people picked it up. Admittedly, for too long I have thought ARIA could be ignored too. I suppose I am in some way responsible for the outcome, although it should be noted there is no ARIA standard yet. It is mostly driven by the Firefox implementation and when I heard about that most code already landed.

On top of the magical role attribute which was XHTML 2.0 only in the very beginning they started building a widget system supposedly to be used by applications that don’t come even close to using XHTML, let alone XHTML 2.0. ARIA is becoming relevant now. Firefox 2 has some of it. Firefox 3 will have the new stuff. We, Opera, want the new stuff in Opera 9.5. I’m just scared that building this on top of the already overloaded role attribute will give us a new <object> (failure). On the other hand, maybe role can be hijacked for ARIA and we leave the framework for distributed extensibility on the drawing board. Or maybe for some other attribute to take over.