FAQ of Accessible Mozilla on Linux/UNIX
Jay YanAnswer frequent asked questions about the accessible mozilla on UNIX/Linux, which will come soon......
Questions:
- What is accessibility?
- How to make mozilla accessible (in all the platforms)?
- What is the mozilla's accessibility architecture in Unix/Linux?
- What have we done to make mozilla have accessibility feature in Unix/Linux?
- What features does the coming Unix/Linux's accessible mozilla have?
- What major components are effected if we release accessiblility feature on Unix/Linux?
- Is there any new component?
- Is there any UI modification?
- What platforms are affected after accessibility on Unix/Linux is implementated?
- What is the difference of accessibility feature of mozilla on Windows and Unix/Linux?
- Which bugs track the development of this project?
- What are next milestones and what are the potential risks to achieve the goals?
- If we want to release Netscape7.0A as an accessible browser, from where should we branch the source code?
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:
- OS/Desktop offers an accessibility architecture. Windows and Gnome are in OS/Desktop layer.
- 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.
- 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:
- Crossplatform code, please see the IDL file: http://lxr.mozilla.org/seamonkey/source/accessible/public/nsIAccessible.idl
- 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:
- 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/
- 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/
- 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/
- 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:
- 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
- User interface of browser is accessible, that means xul page is also accessible.
- Some vital event information is accessible.
What major components are effected if we release accessiblility feature on Unix/Linux?
For source code:
- We added code and modified a lot of code in http://lxr.mozilla.org/seamonkey/source/accessible/ to extend crossplatform code
- We modified and added code in http://lxr.mozilla.org/seamonkey/source/layout/ to extend crossplatform code
- 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..
- We modified http://lxr.mozilla.org/seamonkey/source/widget/src/gtk2/ to hook up MAI code and port mozilla to GTK2
For binary file:
- No new component is added.
- 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:
- 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.
- 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.
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.
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:
- Become Accessible.
- 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