IMPORTANT: This article is being preserved for historical purposes and likely no longer reflects the state of AT-SPI over D-Bus.

Problem

AT-SPI currently uses ORBIT for its inter-process communication, which is a deprecated component of GNOME and unused on the KDE desktop. ORBIT has also been found to use excessive amounts of memory, and as such is not suitable for embedded devices based on GNOME technologies. The OLPC accessibility wiki explicitly mentions that CORBA and Bonobo are too large to fit comfortably on their device. This means that no applications on the OLPC device, or perhaps any others with a similar hardware footprint, will be able to use AT-SPI while a dependency on CORBA remains. The Mozilla browser's ability to remain accessible on small footprint linux devices will be extremely limited until the AT-SPI interface has a new IPC mechanism.

Because ORBIT has long been deprecated in GNOME there are few projects that use and maintain it. Along with AT-SPI, ORBIT is a dependency of Evolution, gnome-panel and gnome-terminal. Evolution Data Server has already been ported to D-Bus for use in the Nokia 770/N800 by OpenedHand and it is intended that the D-Bus version will be in use for GNOME 2.22. It is desired for future development of AT-SPI to use D-Bus for IPC, a freedesktop.org specified, simple message bus system.

Background

In the accessibility community there has already been a large amount of discussion about moving the AT-SPI interface over to D-Bus and a good overview of these discussions can be found at the Linux Foundation website.

Developers in both the KDE and GNOME communities have many unanswered questions about moving AT-SPI to D-Bus. Performance worries seem to be a major issue when considering D-Bus, as conversations on the Gnome mailing lists, attest to. However there has not been much quantitative study of the performance of D-Bus when applied to AT-SPI. The Linux Foundation website mentions that "No full benchmark for the AT-SPI context has been made". Alongside this there are architectural problems that remain unresolved. It has been mentioned on a Gnome wiki that the current IDL interface is 'normative' and that any D-Bus interface would have to be compiled from the IDL to ensure that it conforms . There has rightly been concern over the differences between D-Bus and CORBA, related to object lifetime, reference counting, and standardized object references.

A complete analysis of the AT-SPI interface, and its applicability to a D-Bus transport does not seem to be available although Trolltech have already implemented their own Accessibility API, based upon both AT-SPI and IAccessible2 that uses D-Bus as its message transport . We have only been able to obtain an XML description of the API from their QT bridge, and it is unclear whether Trolltech consider this a final version. The interface seems to support a subset of AT-SPI objects. The objects that have been implemented are obviously similar, but modified enough so that it may not be possible to provide a compatible python API. For example the Accessible::Text object is well represented by the org.freedesktop.accessibletext interface described in the source code for the QT bridge. The XML described interface is a subset of the IDL, and is probably a simplified version.

Accessibility/Documentation/GNOME2/ATSPI2-Investigation/Background (last edited 2011-07-21 18:14:01 by JoanmarieDiggs)