Re: GNOME Accessibility on by default, and Firefox



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]