You are viewing information archived from Mozilla.org on 2015-08-05.

FAQ of Accessible Mozilla on Linux/UNIX

Jay Yan

Answer frequent asked questions about the accessible mozilla on UNIX/Linux, which will come soon......

Questions:

What is accessibility?

Accessibility is "Accessing Ability", that means to add the end-user's ability to access an software.
Accessibility is not only for disable people, but also for all the "normal" end-users,  to enhance the usability of an software for all "normal" end-users also belongs to accessibility project.
If not noted explicitly, this documentation is only talking about accessibility for disable people, whom accessibility project is mandatory to.

How to make mozilla accessible (in all platforms)?

To make an application accessible in a platform is a complicated process which a lot of layers get involved in. Althought different platforms have different methods to make an application accessible, they can be summerized into three layers in genreal:

  1. OS/Desktop offers an accessibility architecture.  Windows and Gnome are in OS/Desktop layer.
  2. Application resides inside the architecture which OS/Desktop offers, the application's task is to expose its information (content and event) to OS/Desktop. Mozilla is in this layer.
  3. Accessibility Technology applications (AT application, usually from the 3rd party) get the information (the content and event) from OS/Desktop, end-user can get the information via these AT-applications. Some examples in this layer are screen reader, screen magnifer, onscreen keyboard, etc.

What is the mozilla's accessibility architecture in Unix/Linux?

For detailed info, please see: http://www.mozilla.org/access/unix/architecture

What have we done to make mozilla have accessibility feature in Unix/Linux?

Before this project started, mozilla was already accessible in Windows, and the implementation of accessibility of mozilla on windows is divided into two parts:

  1. Crossplatform code, please see the IDL file: http://lxr.mozilla.org/seamonkey/source/accessible/public/nsIAccessible.idl
  2. Windows specific code, it is to bridge nsIAccessible into MSAA(Microsoft's Accessibility Kit), main implementation file is http://lxr.mozilla.org/seamonkey/source/widget/src/windows/Accessible.cpp

What we did in this project is divided into 4 parts:

  1. Extend the crossplatform interface to make mozilla expose more information, we added 8 addtional interface and extended nsIAccessible, please check: http://lxr.mozilla.org/seamonkey/source/accessible/public/
  2. Write Unix/Linux specific code to bridge these interfaces to ATK(Gnome's Accessibility ToolKit), the main implementation is located in http://lxr.mozilla.org/seamonkey/source/widget/src/gtk2/mai/  and there is a little hookup code in http://lxr.mozilla.org/seamonkey/source/widget/src/gtk2/
  3. Because ATK has library dependency on Gtk2/Glib2, so the graphics toolkit of accessible mozilla in Unix/Linux is GTK2, when this project started, mozilla(gtk2) was not mature, we did much job in help porting mozilla to gtk2. the code is located in http://lxr.mozilla.org/seamonkey/source/widget/src/gtk2/
  4. At the same time, we are working with module owner and peer on component "Accessibility API" to fix crossplatform accessibility bug.

What features does the coming Unix/Linux's accessible mozilla have?

The coming accessible mozilla has only accessiblity feature for browser, mail/news is planed for the next stage, composer is the in the final stage. For browser, it has these accessibility features:

  1. Content page of the browser will be accessible, end-users can get the information of the html(or other doc types) displayed in the content pane. What is more, it is enhanced much comparing with Windows version
  2. User interface of browser is accessible, that means xul page is also accessible.
  3. Some vital event information is accessible.

What major components are effected if we release accessiblility feature on Unix/Linux?

For source code:

  1. We added code and modified a lot of code in http://lxr.mozilla.org/seamonkey/source/accessible/ to extend crossplatform code
  2. We modified and added code in http://lxr.mozilla.org/seamonkey/source/layout/ to extend crossplatform code
  3. We newly created a directory http://lxr.mozilla.org/seamonkey/source/widget/src/gtk2/mai/ to implement Unix/Linux specific code: to bridge the interfaces to ATK..
  4. We modified http://lxr.mozilla.org/seamonkey/source/widget/src/gtk2/ to hook up MAI code and port mozilla to GTK2

For binary file:

  1. No new component is added.
  2. For now, a library is added, it is for http://lxr.mozilla.org/seamonkey/source/widget/src/gtk2/mai/ directory,  because it is seperated from gtk2 module for the time being, whether MAI will be integrated with gtk2_widget components and the way of integration is still under discussion.

For runtime status:

  1. For normal user, there is nearly no performance or footprint overhead if the accessibility feature is not activated except a very little hooking up code.
  2. For the users who will use accessibility feature, accessibility library will be loaded into memory and performance and foorprint will be worse than mozilla with accessibility not activating.

Is there any new component?

No, only one library is added for newly created directory http://lxr.mozilla.org/seamonkey/source/widget/src/gtk2/mai/, and whether MAI will be integrated with gtk2_widget components and the way of integration is still under discussion. If  they are integrated together, there will be no new compoent nor new library.

Is there any UI modification?

No.
One potential possible modification is to add a preference seting to switch on/off the accessibility feature. No decision yet now. There is one bug tracking it, please see: https://bugzilla.mozilla.org/show_bug.cgi?id=159306

What platforms are affected after accessibility on Unix/Linux is implementated?

Of course, Mozilla is affected on Unix/Linux in 2 aspects:

  1. Become Accessible.
  2. Has to use gtk2 as graphics toolkit.

If end user does not activate accessibility feature in Unix/Linux, there is nearly no performance and footprint overhead.
Mozilla is also affected on Windows becasue it is possible to bridge from additional interfact to MSAA to make mozilla more accessible on Windows, no other issue or risk.
Mozilla guys can can take advantage of better crossplatform code to make mozilla accessible in other platforms.

What is the difference of accessibility feature of mozilla on Windows and Unix/Linux?

Since new inferfaces are added in crossplatform part and these interfaces are bridged to ATK in Unix/Linux, but the additional interfaces have not yet been yet brideged to MSAA on Windows (because of MSAA?), the coming accessible mozilla on Unix/Linux will be more accessible than that on Windows.

Which bugs track the development of this project?

It is a meta bug tracking crossplatform code and Unix/Linux specific code:
https://bugzilla.mozilla.org/showdependencytree.cgi?id=136315
It is a meta bug tracking gtk2 porting code: (it includes above dependency tree)
https://bugzilla.mozilla.org/showdependencytree.cgi?id=92033

Besides above work, we are also working with  Aaronl and John on the components "Accessibility API" to fix accessibility API bugs and add the usability of mozilla. this URL can track our work: Other genreal accessibility bug fixing




What are the next milestones and what are the potential risks to achieve the goals?

We are aiming at the August 5, we hope that at that time all the crossplatform code, Unix/Linux specific code and gtk2 porting code can be checked into mozilla trunk, then we will start a QA cycle them beta process.
Up to now, all the crossplatform code and Unix/Linux code is checked into mozilla trunk, the biggest difficulity to achieve next milestone is to land our gtk2 porting patch in trunk, we are working with Chris Blizzard on it, but this process is very slow becasue Chris is busy with other stuff now.
After next milestone, we hope to get a stable gnome2(with stable gtk2 and stable AT-applications) ASAP, now a lot of crash happen on Gnome2 of not only linux but also Solaris, and we have not got runable AT-applications yet. It is the biggest potential risk.

If we want to release Netscape7.0A as an accessible browser, from where should we branch code?

Becasue work for this project is regarded as new feature and our project started nearly at the same time when mozilla 1.0 branched, nearly all the code has not been checked into mozilla1.0branch, they are only allowed to be checked into mozilla trunk, and after mozilla1.0 branched, a lot of code modification happened,  so it needs a lot of work to port these patches from trunk into 1.0branch even if we get the approval. From this point, we wish to start to branch code from mozilla trunk.
But Netscape7.0 is branched from mozilla1.0 branch.
........



If there is any question, please feel free to ask us, we will update the documentation. Thanks a lot.

Maintained by browser-china-atf@sun.com