Re: GNOME Accessibility on by default, and Firefox
- From: Willie Walker <William Walker Sun COM>
- To: David Bolter <david bolter utoronto ca>
- Cc: dev-accessibility lists mozilla org, Aaron Leventhal <aaronlev moonset net>, Gnome Accessibility List <gnome-accessibility-list gnome org>
- Subject: Re: GNOME Accessibility on by default, and Firefox
- Date: Fri, 24 Oct 2008 09:19:48 -0400
Hi All:
There are a lot of things to think about here. From the internals point
of view, we can think about the following:
1) The accessibility gconf setting: this says whether or not
accessibility has been requested for the session. Right now, this
tends to be used by GTK+ just to say whether or not to load the
accessibility modules and start the AT-SPI registry. We've been trying
for a long time to not require this setting and just always have the
support turned "on". But, there are performance and stability issues
that prevent us from doing this, some of which might be addressed by
making things more dynamic. BTW, I'm not sure about the details of
what the Gecko implementation does, but it would surprise me if it
*always* loaded the accessibility modules regardless of the gconf
setting.
2) ATK and the ATK bridge: the ATK is a utility toolkit for use by
applications and graphical toolkits to create an accessible
representation of widgets: ATK peers are created for
application/toolkit widgets and ATK events are issued for
application/toolkit events. The bridge provides the communication with
the "outside world." That is, the bridge is the thing that currently
speaks CORBA and which we are moving to D-Bus. Note that ATK and the
ATK bridge are not required for an application to participate in the
AT-SPI infrastructure; they merely make it easier to do so. So, GTK+,
OOo, and Gecko all use the ATK and ATK bridge. Java, on the other
hand, currently has its own bridge and speaks CORBA directly (I've
argued that Java should use ATK via JNI to help normalize things
somewhat and make it less dependent upon the AT-SPI transport).
3) The AT-SPI registry. This provides the rendezvous mechanism between
applications and assistive technologies. When an application starts,
it lets the registry know it exists so that assistive technologies can
discover it. An application also issues events to the registry, which
then delivers them to assistive technologies. When an assistive
technology starts, it lets the registry know the event types it is
interested in. Like the ATK bridge, the communication with the
registry is dependent upon the IPC mechanism being used (i.e., CORBA or
D-Bus).
4) GAIL: this provides the accessibility implementation for GTK+,
creating ATK peers for GTK+ widgets and causing ATK events to be
issued. It is designed to loaded as a GTK+ module at GTK+
initialization time and is currently not designed to be
unloaded/reloaded over the course of an application's lifetime.
Modifying it to be more dynamic might be rather difficult, and this is
independent of the IPC mechanism in use. That is, I don't believe its
behavior matters whether we use CORBA or D-Bus.
From the assistive technology point of view, we can think of the
following:
1) Assistive technologies that mostly examine object hierarchies. GOK
tends to be this type of assistive technology. Accerciser fits into
this category as well. These kinds of ATs might work with the "just
wakes up" model, especially if one queries from the top of the object
hierarchy down. However, *something* needs to already be awake so that
an assistive technology can discover the top level application object
in the first place.
2) Assistive technologies that mostly listen for events. Orca tends to
fit into this category. I believe GOK also needs to listen for events,
however, so it knows where to enter text and which UI needs to be
grabbed. These kinds of assistive technologies might be more difficult
to support the "just wakes up" model since they tend to depend upon
receiving events from the application in order to learn that an
application exists.
Given these, I'm not sure it's really feasible to completely shut off
accessibility in an application and dynamically turn it on when an
assistive technology appears. That is, I think something probably
needs to live in the application to at least support a rendezvous with
an assistive technology. I also believe the main performance issues we
face are the ATK peering of objects and event notification: we don't
want unnecessary ATK peers to be created and we don't want unnecessary
events to be issued. As such, I think we at least need the ability for
assistive technologies to discover applications that are already
running and to be notified when new applications start. From there, we
could investigate generating ATK peers and issuing ATK events on an "on
demand" basis.
So...to make a long story short, I'd guess most of the work needed is
independent of CORBA/D-Bus and would live in the AT-SPI implementation
for the toolkit (e.g., GAIL). Li Yuan would be a good person to help
us understand the scope of this problem.
Will
On Oct 23, 2008, at 9:54 PM, David Bolter wrote:
Hi Aaron,
Replying to a message from Aaron which didn't have the lists cc'ed.
As Steve has brought up separately, this might indeed fit into the
D-BUS
AT-SPI migration work. It doesn't seem terribly complex to add this
small thing that will have nice benefit (like what T.V. points out).
@Will Walker, we could maybe touch on this Monday night at 10 ;)
Are there any objections to all this?
cheers,
David
Aaron Leventhal wrote:
In Firefox, there's a lot of code that doesn't need to run, and a lot
of objects don't need to be created, when a11y isn't needed.
Please, add lazy instantiation for accessibility. Would it fit to do
this in the D-BUS AT-SPI migration project?
- Aaron
On 10/22/2008 8:35 PM, David Bolter wrote:
This is a common pattern. I hear it is also true for other things in
FF
like dom mutation events.... only fire if there is a listener...
makes a
lot of sense.
A tree should only fall in the forest if someone is listening.<grin>
D
Aaron Leventhal wrote:
Mario, on Windows we use lazy instantiation. There is no need for an
"enable a11y" flag in the OS. Just the fact that something asks us
for
an accessible object wakes us up. We get a WM_GETOBJECT event -- and
before that a11y is not loaded.
We really need lazy instantiation like that under Gnome. If the AT
is
loaded and starts asking us for objects, then we can wake up.
- Aaron
_______________________________________________
gnome-accessibility-list mailing list
gnome-accessibility-list gnome org
http://mail.gnome.org/mailman/listinfo/gnome-accessibility-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]