Stable release |
2.16 / March 23, 2015
|
---|---|
Development status | active |
License | GNU LGPL (version 2) |
Website |
Assistive Technology Service Provider Interface (AT-SPI) is a platform-neutral framework for providing bi-directional communication between assistive technologies (AT) and applications. It is the de facto standard for providing accessibility to free and open desktops, like GNU/Linux or OpenBSD, led by the GNOME Project.
One common nomenclature to explain an accessibility framework is a usual client-server architecture. In that way, Assistive Technologies (ATs) like screen readers, would be the clients of that framework, and computer applications would be the server. In this architecture, client and server need to communicate with each other, usually using the IPC technology of the platform. Ideally the accessibility framework exposes this to the client and server in a transparent way.
Usually the API for both client-side and server-side applications are the same, and the accessibility framework provides a client-side and a server-side implementation of that API. In the case of GNOME, there are two different APIs, one for the client-side (AT-SPI) and a different one for the server-side (Accessibility Toolkit (ATK)) due to historical reasons related to the underlying technologies.
AT-SPI was originally designed for using CORBA, an object-based IPC/RPC technology, for its transport protocol. The AT-SPI specification itself was tied to CORBA as it was defined in CORBA IDL. AT-SPI used the GNOME project own fast and lightweight CORBA implementation, ORBit, and its own framework for creating CORBA components, Bonobo.
AT-SPI provides an ATK bridge, so all those widgets systems or applications that implement ATK will automatically communicate all its events, to AT-SPI. The GNOME widget system, GTK+, or Mozilla applications like Firefox and Thunderbird for GNU/Linux implement ATK, so they communicate out-of-box with AT-SPI. However, it is completely possible to use AT-SPI without implementing ATK. The D-Bus migration made possible that Qt added AT-SPI support. Qt implemented its own bridge to AT-SPI that was released in alpha status in August 2011 for testing purposes and it was integrated into Qt for general use a year later.