[Kde-accessibility] Some AT-SPI questions
Bill Haneman
Bill.Haneman at Sun.COM
Fri Dec 16 16:43:21 CET 2005
Hi Gary;
I'll try to give some initial thoughts on your points (#1 through #3)
below. They seem right on target to me.
The only thing that strikes me as possibly a little odd is the
continuing use of the term "KDE developers" in the context of AT
clients. I would prefer to just say "developers" in this context; in
what sense are they "KDE" rather than some other sort of developer, or
perhaps new developers without such a strong "brand loyalty" ?
In the context of making KDE applications (apps that are part of KDE, or
are built with Qt, etc.) accessible, the notion of "KDE developer" makes
a lot of sense. But of course assistive technologies can be built
without using either gtk+ or Qt, and they may use a mix or libraries and
services traditionally considered part of Gnome and/or KDE.
Perhaps the question, from the _client_ point of view, is "how can I
write AT clients which use Qt", and "how can I write AT clients which
use gtk+"? Ideally the interfaces those two kinds of AT clients use to
talk to the AT-SPI subsystem will be the same - if not immediately, then
certainly eventually.
Rather than make a "Gnome screenreader" and a "KDE screenreader", which
IMO dilutes our efforts, I would hope that our AT development efforts
would try to combine forces where possible. I think that this is
already happening and I am very glad to see it. For instance the orca
screenreader doesn't currently present any GUI at all, and although it's
hosted at cvs.gnome.org, about the only gnome-ish thing about it is the
use of the pyOrbit bindings to AT-SPI. So I don't see why it can't talk
to, for instance, a Qt-based magnifier service or SpeechDispatcher or
KTTSD if that makes sense.... just to give some examples.
Okay, enough rambling, I'll make some comments inline...
Gary Cramblitt wrote:
>Thanks Bill.
>
>It would be nice if someone fully knowledgeable about the KDE plan could
>update the accessibility.kde.org website and explain all this so we
>developers can have a better understanding. I'm sure the following exposes
>my ignorance, but as they say, there are no stupid questions..
>
>I *think* it breaks down to 3 possible scenarios:
>
>1. How can KDE developers write KDE 3 AT clients today (using ATK bridge)?
>
>
The ATK bridge isn't needed by the AT client; it is used to 'export'
accessibility info from ATK-implementing applications to AT-SPI. So an
AT client using the KDE 3 libraries would need, at present, to speak the
AT-SPI "interface protocol", the simplest way is to link to libspi
(which for the time being pulls in ORBit2) or to use other bindings such
as the pyOrbit bindings.
>2. How can they develop AT clients with KDE4 libraries in conjunction with
>Gnome libraries?
>
>
Are you sure you are talking about AT clients here? The existing AT
clients should work with KDE4 applications, because the KDE4 apps will
export AT-SPI information via (if I understand Harald's work correctly)
ATK and the atk-bridge. The clients won't "see" the bridge, but they
will need one of the AT-SPI bindings in order to "communicate" with the
AT-SPI subsystem. So in KDE4, the big change will be that ATs will be
able to work properly (disregarding, for the moment, bugs) with KDE
applications.
>3. How will KDE devs develop AT clients when the AT-SPI DBUS version is in
>place and how do we get there?
>
>
This is an interesting question and a tough one. Ideally we don't want
to have to re-write existing ATs or break interoperability, so we want
the AT-SPI interfaces as seen by ATs to change as little as possible.
At the same time, we want them to be as "generic" as possible, which
from a KDE perspective probably means reducing the dependency on Gnome
libraries as much as possible. I don't think this is because of an
anti-Gnome sentiment, at least I hope not, but rather it reflect the
fact that nobody wants to pull in a lot of new dependencies which they
are not otherwise using, and I respect this.
I agree however that it's not trivial to do. Two approaches that come
to mind:
1) IDL compiler generates new client stubs whose API signature, at least
in C and Python, matches the existing C and Python CORBA stubs; ATs then
only need to re-compile in order to work using the new backend (which
would presumably use DBUS as its IPC transport).
2) Keep ORBit2, but change its internals so that an "ORBit2-lite"
implementation which doesn't use IIOP is available, and replace the IIOP
wire protocol with DBUS. This would eliminate most of the stuff in
CORBA which people think is broken IMO, except for the ugly C bindings
(which might be unavoidable, C being the non-OO language that it is).
If we "fix" the C bindings, then we break compatibility and have to
re-write apps, so that's not an attractive idea anyway. The pyOrbit
bindings look the same, so apps like orca don't really have to do
anything, it "just works".
I suspect #2 is the more feasible way to go, but it would mean that the
"shell" of ORBit2 would end up living on as part of the accessibility
infrastructure. Some people might be unhappy with this, but it seems
more practical to me than writing an IDL compiler, unless there are
other good reasons for doing so. Perhaps the combined Gnome+KDE forces
have enough interest in making DBUS more programmer-friendly that this
bigger job will happen anyway. I have heard rumors of IDL compiler work
going in in the DBUS space but I don't know any hard facts about it.
Best regards
Bill
>The IDL compiler approach strikes me as the most plausible way forward for #3.
>I say this because very few people in the KDE community understand
>Bonobo/ORBit2 enough to do the port. Is anyone working on such a compiler?
>How difficult would it be to do that and how would one get started if one
>were inclined to work on it?
>
>If anyone wants to write this up (whatever format you like), I'd be happy to
>post it on the website.
>
>
>
More information about the kde-accessibility
mailing list