KDE-based AT clients would need to use an ORB either directly or via wrappers, but no stable C
supported and ported platforms]] mentions a big number of unsupported ports and says that porting to BSD would be easy (but not yet done). * KDE developers lack CORBA knowledge, so they are in a bad position to do this porting work.
* TODO: Are there any other obstacles for using omniORB in KDE?
* ORBit2 is quite mature, but no longer actively maintained.
* In Michael's words: "Conversely - there are ~no live / motivated / extant ORBit2 maintainers / developers around, and for better/worse the wave-of-the-future technology is D-BUS as of now." [[http://lists.freedesktop.org/archives/dbus/2006-July/005214.html|[3]]]
* TODO: What is the state of the C++ bindings for ORBit2?
* The [[http://www.gnome.org/projects/ORBit2/documentation.html|ORBit2 documentation]] focusses on technologies not relevant for the AT-SPI case (mainly GNOME and Bonobo). The general ORBit2 introduction contains sentences such as "Caveat: I don't know either". C++ documentation seems to be missing (apart from a link to the OMG spec).
* No other technology uses CORBA and GNOME is making great progress migrating away from it. Running an ORB just for accessibility is redundant if all desktops use D-BUS for communication.
* KDE removed CORBA for KDE 2.0 and replaced the technology with KParts and DCOP. This gave KDE applications interoperability not seen on any other Unix desktop.
===== Possible Migration Szenarios =====
==== Szenario A: Short-Term D-Bus Move ====
We quickly agree on a D-Bus strategy. Trolltech implements AT-SPI support via D-Bus. KDE4 assistive technologies are coded to D-Bus. In parallel with this effort, the Python-based assistive technologies are modified to support both CORBA and D-Bus. GNOME, OpenOffice and Mozilla migrate to D-Bus at some future date.
Pros:
* Ideal code sharing and interoperability.
* No GNOME dependencies for KDE, even short-term.
* Forward-looking.
* Compatibility with embedded environment.
* KDE accessibility aids can be written with simple shell scripts.
* A single IPC is used for KDE/GNOME interoperability everywhere.
* Smallest amount of required code long-term.
Cons:
* Big amount of required code short-term.
* Possibly a very long lead time, with an untested infrastructure.
* There could be delays in adoption by OpenOffice and Mozilla.
* D-Bus is in an early development stage, so performance problems can be expected short-to-medium term.
* KDE applications are not accessible with GNOME assistive technologies until those are ported.
* KDE assistive technologies don't work with Gtk applications, OpenOffice and Mozilla until those are ported.
==== Szenario B: Medium-Term D-Bus Move ====
We quickly agree on a D-Bus strategy. Trolltech implements AT-SPI support both via atk and via D-Bus, allowing KDE applications to be fully accessible both with D-Bus and with CORBA. KDE4 assistive technologies are coded to D-Bus. GNOME, OpenOffice and Mozilla need a longer time to migrate.
Pros:
* No GNOME dependencies for KDE, even short-term.
* Forward-looking.
* Compatibility with embedded environment.
* KDE accessibility aids can be written with simple shell scripts.
* KDE applications are accessible with GNOME assistive technologies short-term.
* The authors of GNOME assistive technology could wait until the D-Bus version has stabilised.
Cons:
* An untested infrastructure used for KDE Accessibility.
* KDE assistive technologies don't work with Gtk applications, OpenOffice and Mozilla until/unless AT-SPI migrates to a compatible D-Bus protocol.
* Two different IPCs are used for AT-SPI at the same time.
* Two different IPCs are used for KDE/GNOME interoperability (CORBA for accessibility, D-Bus for other things).
* Either the AT-SPI registry must speak both, or two registries will need to cooperate.
==== Szenario C: Long-Term D-Bus Move ====
We decide to postpone the D-Bus migration until everyone is ready to move. In the meantime, KDE-based assistive technologies use CORBA bindings, which can link to either OmniORB or ORBit2 at runtime; the CORBA bindings are hidden behind a higher-level API. Embedded devices use a D-Bus-based AT-SPI fork, which might or might not be compatible with what we agree on later for the desktop.
Pros:
* Full interoperability achieved quickly.
* The proven infrastructure is used until the D-Bus alternative is ready.
* KDE and Qt application APIs remain “native”.
* GNOME libraries are only loaded if available and required for accessibility.
Cons:
* More new code required than with approaches A or B, but less than with D.
* QAccessible must either be bridged twice, or be bridged to ATK.
* Some code for KDE assistive technologies needs to be written twice (for instance, the higher-level API client bindings).
* No compatibility with embedded environment.
* Short-to-medium term, KDE Accessibility requires GNOME libraries at runtime.
* Short-to-medium term, KDE Accessibility requires two different ORBs at the same time. (Note: this need may be avoided if ORBit2 mainloop issues can be solved and the ORBit2 C
bindings are sufficiently complete, in which case KDE can use ORBit2 short-to-medium term. It should be possible for the KDE AT client bindings to be ORB-agnostic).