Hello everyone, In consideration of the removal of ORBit from Gnome 3.0 I thought that a more detailed analysis of the status of AT-SPI D-Bus was necessary for all involved.
All of this e-mail has also been placed on the Wiki at http://linuxfoundation.org/en/Accessibility/ATK/AT-SPI/AT-SPI_on_D-Bus. I'll try to keep the wiki updated as my work progresses. I haven't put any time estimates to these tasks, that perhaps something to do this week. The one task that I am currently undertaking is refactoring / improving the DeviceEventController. John Carr has also started some debian packaging work. Thanks Mark ------------ AT-SPI D-Bus is a translation of the AT-SPI interface originally specified in CORBA idl. The project implements a number of ORBit based libraries and programs in D-Bus. These modules are: - atk-bridge - cspi - pyatspi - registryd - loginhelper I will go through the status of each of these as well as work required on the D-Bus interface itself and infrastructure work needed outside of the AT-SPI D-Bus project. atk-bridge ---------- The atk-bridge is a GTK module that exposes a tree of ATK objects over AT-SPI D-Bus. It is the server / provider library for ATK. Most interfaces have been completed, and a number have unit tests associated with them. - The 'Collection' and 'StreamableContent' interfaces still need to be implemented. Some code has been written but is currently not built and has not been tested. registryd --------- The registry daemon has two distinct tasks. 1) Keeping track of all the accessible applications on the desktop. 2) Dealing with and forwarding X events over AT-SPI D-Bus. The registry of accessible applications is relatively simple and has been fairly well tested. - DeviceEvents are given non-valid D-Bus message names. - The DeviceEventController object that handles X events needs to be re-factored. - Possibly XEVIE code should be removed as this will not be available in future X.org releases. pyatspi ------- A client side library, in python, for access to AT-SPI accessibility information. - All D-Bus method calls in python are synchronous and are not re-entrant. This can cause deadlock. Need to make a re-entrant D-Bus method call available in python and change all synchronous calls over to this. cspi ---- A client side library in 'C' for access to AT-SPI accessibility information. It is unknown how much work is required to complete this library. It has been working and tested previously, but has not been updated with protocol changes and has never been heavily tested. loginhelper ----------- An extension for enabling accessible login. Unsure D-Bus specification ------------------- As well as the libraries using the AT-SPI D-Bus specification some work may still be required on the specification itself. The D-Bus specification has been written in Telepathy D-Bus XML. - Investigate the correctness of the 'Collection' and 'StreamableContent' interfaces. This goes along with implementing these interfaces in the atk-bridge. - Write XSLT to convert Telepathy XML into readable documentation. - Possibly re-write the specification in in a yet-to-be-decided D-Bus IDL. - Create new interfaces for management of large or infinite spaces. As well as this additional interfaces may be required for the management of accessible object life-cycle within infinite or very large containers. In the Bonobo / ORBit specification accessible objects were remotely reference counted and this was used as the method to manage their life-cycle within very large containers. Remote reference counting has been removed, meaning that new interfaces may be required. The importance of this is possibly over-stated. Firefox exposes the entire DOM and does not have this problem. Open office exposes only the objects visible on-screen and therefore sidesteps this issue. Infrastructure -------------- In this section I will look at the work that may be necessary outside of the D-Bus AT-SPI code-base. Multi-user accessibility ------------------------ It is a requirement of the D-Bus AT-SPI system that applications running as other users, most importantly the root user, are made accessible on the desktop. D-Bus does not have a multi-user bus, meaning some work will be required to make D-Bus AT-SPI work in the multi user case. D-Bus session busses are not, as sometimes imagined, per-X-session. The session bus is per-X-session, per-user. AT-SPI D-Bus would prefer an 'X session' D-Bus bus, as this would allow applications to run as root within the same X session and remain accessible. This will require liaison with the D-Bus community, to make our case for an X session bus. If this isn't possible D-Bus AT-SPI should create its own, exclusive, D-Bus bus that is tied to the X session. This would still require some core D-Bus work as the D-Bus bus program currently won't allow connections from a different users. This would have to be turned into an optional feature. Remote Accessibility -------------------- This is the requirement to load a program remotely and have it accessible on the local desktop. The multi user work is a prerequisite for this. Possibly the best solution is to have an ICE transport for D-Bus. GtkTreeView ----------- GtkTreeView widgets currently declare themselves as 'Manages descendants' indicating that the accessible objects are not referenced by their parent widget. This is related to the infinite space issue in that a GtkTreeView acts as-if it were a very large or infinite container and requires remote reference counting. We believe that this is an implementation issue related to GtkTreeView. GtkTreeView only creates widgets for items in the tree when they are requested. The space is not neccessarily large and it should be possible to expose the entire tree in most / all cases. This may involve creating accessible objects for the TreeModel rather than the TreeView. Hopefully this problem will only require additions to Gail. GNOME Priorities ---------------- This is a list of thing that I personally believe need to get done for inclusion in Gnome 3.0. High Priority ------------- Multi-user accessibility - Required for accessible system administration. Cspi - There has been alot of discussion about whether to complete cspi, or a subset of cspi. I think that there is enough programs currently using it that we would preferably complete it. There is no guarantee that LDTP will have moved over to pyatspi by the transition. If we do not complete cspi we will need a new 'C' interface that may be a similar amount of work to complete. Pyatspi - Not a-lot of work. Need to create re-entrant method calls. atk-bridge. - Need a solution for the collection interface and for the streamable content interface. registryd - Need to refactor the DeviceEventController, and ensure that without XEVIE we can meet all requirements for device events. GtkTreeView - This needs to be solved, it makes GtkTreeViews either inaccessible or causes us to hold lost references to accessible objects. Low Priority ------------ Readable documentation / specification for the D-Bus interface. Accessible remote applications. Infinite space containers Packaging and Gnome integration ------------------------------- Some packaging work will be required. At least provide debian packages as an example of preferred package structure and dependancies. The git repository has a branch 'debian' that has a debian/ folder for building some initial debian pakages. Gnome integration will be required, a jhbuild module and tests building AT-SPI D-Bus using jhbuild. Thanks for your attention, (Surely no-one made it this far) _______________________________________________ Gnome-accessibility-devel mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-accessibility-devel
