Accessibility/ATK/AT-SPI/AT-SPI on D-Bus

contents last updated 17 November 2008

Contents


Introduction (skip to main contents) AT-SPI technologies are currently migrating to D-Bus for their transport technology. As such, this document serves as a tutorial, design document and project update page for the AT-SPI D-Bus project. Document Revisions

Page Contributions: Instructions & Requirements



Background AT-SPI was originally designed for, and is currently implemented by the GNOME project using CORBA, an object-based IPC/RPC technology. CORBA is very portable but somewhat heavier weight than D-Bus.The AT-SPI specification itself is tied to CORBA as it is defined in CORBA IDL. ORBit as an inter-process communication technology has many problems going forward, is deprecated in the Gnome project. CORBA does not exist in the KDE project and is generally resisted in embedded developments.

In an effort to move AT-SPI forward, a D-Bus project was started in November 2006. This took the form of a performance and design review available on the GNOME wiki. Work began on the implementation in May 2007.

Work is on-going and the project code is currently hosted at git://git.codethink.co.uk/git/atspi-dbus.


AT-SPI D-Bus design Remote reference counting is not being implemented for performance and complexity reasons There is a new caching mechanism where data accessed most often is transferred with accessible objects and will be cached by the AT-SPI bindings to avoid the need to make unnecessary round-trip calls. Wherever possible, including application events, synchronous method calls have been replaced by asynchronous D-Bus signals.

In other aspects the protocol is essentially the same as the current, IDL specified, at-spi interface. The two are intended to be completely compatible. This is so that API compatible bindings may be generated and ATs may be re-used with minor modification. AT-SPI D-Bus Project Status The code is currently under heavy development and is not expected to be able to replace the CORBA based AT-SPI until 2009. Completed work

ToDo

Instructions For Testing Assume that when configuring the project:

GTK_MODULE_DIR = /usr/local/lib/gtk-2.0/
pythondir = /usr/local/lib/python2.5/
libexecdir = /usr/local/libexec/

Then the registry daemon executable will be installed as:

/usr/local/libexec/at-spi-registryd

The ATK Bridge library will be:

/usr/local/libexec/gtk-2.0/modules/libspiatk.so

To use AT-SPI D-Bus a normal 'make install' can be used with the following caveats:

Multiple Applications To make multiple applications accessible or test the DeviceEvent functionality and registry daemon:

> /usr/local/libexec/at-spi-registryd  &                               (Load registry daemon)
> gcalctool --gtk-module=/usr/local/lib/gtk-2.0/modules/libspiatk.so & (Make an application accessible over D-Bus)
> export PYTHONPATH=/usr/local/lib/python2.5/                          (Ensure new pyatspi is found)
> orca                                                                 (Load an AT using pyatspi library)

Single application AT-SPI D-Bus can be used without the registry daemon for testing the core AT-SPI interfaces. AT's will not be made aware of only a single application and DeviceEvent functionality is not enabled.

> gcalctool --gtk-module=/usr/local/lib/gtk-2.0/modules/libspiatk.so & (Make an application accessible over D-Bus)
Application registered on D-Bus path :100
> export PYTHONPATH=/usr/local/lib/python2.5/                          (Ensure new pyatspi is found)
> export ATSPI_TEST_APP_NAME=:100                                      (Tell pyatspi the D-Bus path)
> orca                                                                 (Load an AT using pyatspi library)

Accerciser issues Accerciser seems like the ideal AT to use to test the AT-SPI D-Bus software. Unfortunately it is difficult to use with PYTHONPATH. Accerciser modifies the python search path on startup, so only libraries in default python install directories are used. Accerciser can be loaded in-place from its source directory without this problem.

Assume we are in the accerciser source directory, to load with a single app:

> gcalctool --gtk-module=/usr/local/lib/gtk-2.0/modules/libspiatk.so & (Make an application accessible over D-Bus)
Application registered on D-Bus path :100
> export PYTHONPATH=/usr/local/lib/python2.5/                          (Ensure new pyatspi is found)
> export ATSPI_TEST_APP_NAME=:100                                      (Tell pyatspi the D-Bus path)
> cd src/
> python accerciser

Future Plans & Releases An initial release of D-Bus AT-SPI will take place once we are convinced that Pyatspi and the ATK Bridge are functionally complete. They should pass the Orca test cases. The initial release will probably not include Cspi or QT accessibility. Questions & Queries from Developers