Mozilla Grant Progress Report
It is drawing towards the end of the year for which the Mozilla Foundation provided a grant to NV Access to employ me to work full time on NVDA. This post examines the grant goals and summarises our progress for each goal. It is important to note that the original grant goals were written for a three year period, whereas this grant was for one year.
1. NVDA Core Development
* General core improvements: This includes speed improvements, memory usage optimisation, fixing memory leaks and improvements to user experience.
We have made many considerable improvements to the performance, stability, accuracy and reliability of NVDA throughout the year. We constantly strive to ensure that the NVDA code is efficient, optimal and reliable. The user interface has also evolved to better serve its users.
* Debugging and testing: Improvements to the debugging facilities in NVDA will assist in finding and fixing problems. In addition, an automated testing system needs to be developed to allow for faster discovery of problems and to prevent unnoticed regressions in functionality.
NVDA's logging code was refactored to be more flexible and simpler for developers to use. The log viewer was introduced to facilitate quick viewing of the log file for the running copy of NVDA. The Python console, which provides an interactive Python interpreter inside NVDA, has vastly simplified and expanded the possibilities of debugging, research and testing. Unfortunately, an automated testing system has not yet been developed.
* IAccessible 2 support: IAccessible 2 is an emerging accessibility API that has the potential to vastly improve the accessibility of many applications and is thus very important for NVDA's success. It is already used by a growing amount of important applications, including such applications as Mozilla Firefox, Mozilla Thunderbird and Chatzilla which use Mozilla Gecko / XUL.
Since early 2007, NVDA has had comprehensive support for IAccessible2 and uses it wherever it has been implemented in applications. Particularly worthy of note is NVDA's use of IAccessible2 in Mozilla applications, where the rich accessibility provided by IAccessible2 is especially benefitial. In 2008, as well as general enhancements to this support, we implemented support for text attributes, which enables NVDA to read formatting information, spelling errors, etc.
2. Braille Output Support
NVDA should support dynamic output of both contracted and uncontracted braille on various popular refreshable braille displays.
Braille display support has now been implemented, including support for cursor routing. Users have been extremely impressed by the speed and responsiveness of this implementation. Some noteable features are still missing and some polish is required, but this initial implementation is very useable already. NVDA attracted the attention of the braille display manufacturer Handy Tech, who participated in the initial design and prototyping of NVDA's braille support and provided a driver for their displays.
3. NVDA Customisation for Applications and Web Pages
There was little significant change to NVDA's support for application specific scripting. The code documentation and design were improved slightly. However, there has been no request or need for enhancements or changes to this functionality, although there is definitely room for improvement concerning documentation for new developers. NVDA has no functionality to facilitate customisation for specific web sites. Again, there has been no request or need for this in NVDA from our users so far. The WebVisum Firefox extension has facilitated some page customisation. WebVisum is independent of the screen reader used and its page modifications are automatically shared by its user community. Due to its popularity with NVDA users, we made some changes to NVDA to better support WebVisum.
4. Static Web Support
I will address only Mozilla Gecko 1.9 (used in Firefox/Thunderbird 3.x) here, as this is what concerns Mozilla. It is worth noting that NVDA's early support of Gecko 1.9 meant that it was able to work with Firefox 3.0 out of the box as soon as it was released.
* Fast, efficient access to basic html content in a flat representation
NVDA renders most pages presented with Mozilla Gecko such that no additional delay is perceived by the user. Some highly complex pages involving many nodes may incur a noticeable delay, but these tend to be the exception rather than the rule. Pages are rendered into a flat representation which can be read and navigated like a normal text document. Once rendered, navigating the page is instantaneous. The first official release to include this functionality was 0.6p1 in March 2008.
* Support for dynamic updates to a page resultant to JavaScript events
Dynamic updates are automatically reflected in the flat representation of the page (the virtual buffer).
* Synchronicity between the flat representation and the actual controls to provide access to forms, and to facilitate navigation of a page using a hierarchical structure
This synchronisation has now been achieved. Users can choose to interact with a control from within the flat representation, and the cursor position within the flat representation will be updated appropriately when a control receives focus. In addition, object navigation can be used to hierarchically navigate a page, with the review cursor moving to the appropriate position in the flat representation.
5. Research and Development of New Accessibility Concepts
These concepts included:
- Accessible drag and drop
- Custom accessible widgets
- Mathematics accessibility
- Diagram accessibility
Accessible drag and drop is already possible through the use of ARIA drag and drop. This has not yet been implemented in NVDA. (See below for more details.) There is not yet a complete specification or application implementation for the remaining three items. We have been participants in working groups concerning the development of these specifications and plan to participate to a larger extent in future work.
6. Web Application Support
* ARIA widgets
NVDA now has very useable support for ARIA widgets, although some polish is required in certain areas. In strong commendation of this support, NVDA has featured in several presentations by Yahoo developers about ARIA widgets; see this blog post for one example.
* Rich text editing in rich internet applications
NVDA does have some support for this. However, it is buggy and incomplete. Improving this to a satisfactory level will be quite a large, difficult undertaking.
* Live regions
NVDA has very limited, unsatisfactory support for live regions at present. Implementing better support is quite difficult under Windows. (Technically, this is due to the need to go in-process for efficient handling of events.)
* ARIA drag and drop
This is not currently supported, although we have investigated this and have some idea of how it will be implemented.
* HTML 5
This requires more work in web browsers before it can be considered in NVDA.
7. XUL Application Support
As already mentioned, NVDA has comprehensive support for IAccessible2 and the Gecko 1.9 rendering engine, which means that accessible widgets in recent XUL applications should be accessible.
* Thunderbird
NVDA has excellent support for Mozilla Thunderbird 3. Many users, including us, use Thunderbird as our email client of choice.
* Komodo
This is untested.
* Songbird
This is untested. We have reason to believe that more work may be required in Songbird to make it accessible.
* Miro
This is untested.
* Popular Mozilla extensions; e.g. Adblock Plus
Popular Mozilla extensions are far too numerous to test and report upon here. Noteably, NVDA works very well with Adblock Plus and WebVisum.
8. Mozilla Accessibility Community Interaction
* Filing bugs for Mozilla issues
At the time of this writing, we have filed 32 bugs related to Mozilla accessibility. Additionally, many more have been communicated to the Mozilla accessibility team (primarily Aaron Leventhal and Marco Zehe) for filing by them.
* General interaction with the Mozilla accessibility community
We regularly participate in discussions with both users and developers in the Mozilla accessibility community via its mailing list and IRC channel.
* Involvement in and Contribution to the development of accessibility frameworks and standards
We have participated in and contributed to the development of the IAccessible2 accessibility API. We have also provided feedback on ARIA issues such as landmarks.
9. NVDA Community Development
The development of the resources described below has encouraged a strong, diverse community of both users and contributors supporting the NVDA project, which continues to grow steadily. The NVDA web site received a major overhaul in mid 2008. All of our web services were integrated into one site based on Trac, which allows for seemless referencing and interaction between services, greater community collaboration and ease of maintenance, among other benefits.
* Development documentation
Some development articles are provided on the NVDA wiki. Much of NVDA's code includes documentation and comments, although there is still quite a bit of undocumented code. Further development articles are probably required to assist new developers who wish to contribute to NVDA.
* Issue database
An issue database was established in 2007. People can report and view issues in this database. Although the system was always used to some degree, we began to use it to a much greater extent in 2008 and strongly encouraged both users and other developers to use it as well. This has been quite successful and has greatly improved the management of the project, as well as increasing community contribution.
* Community resources; e.g. mailing lists, wiki, blog, etc.
- The Community page provides information about mailing lists and the NVDA IRC channel, as well as links to other sites related to NVDA that have been created by the community.
- The NVDA web site is largely based around a wiki. The Documentation page provides links to categories of wiki articles relevant to users and developers.
- The NVDA blog is regularly updated with news and progress updates.
10. Assisting Application Developers to Implement Accessibility
* Promoting application accessibility
We constantly strive to promote application accessibility through our strong participation and presence in various accessibility communities, as well as our work with application developers such as Mozilla. We seek to improve accessibility in general by assisting in the development of new accessibility technologies such as IAccessible2. We encourage interest and open participation by regularly keeping the community up to date through our blog. We have filed or contributed to accessibility bug reports and enhancement requests for several products, and have made similar requests for other products via other means. Through the recent grant from Microsoft, we will provide a public case study of the emerging UI Automation API from the perspective of a screen reader and will implement support for UI Automation in NVDA, as well as testing and providing feedback on accessibility in Windows 7.
* Documenting strategies, techniques and examples for implementing optimal accessibility
Although we have certainly participated in discussion about such documentation, we have not written any ourselves at this time.
* Providing tools and consultation to assist application developers in implementing accessibility
NVDA itself serves as an invaluable tool which assists application developers in implementing accessibility. The blog post about Yahoo developers using NVDA cited above is just one example. Integrated tools such as the Python console and the display synthesiser (which displays text that would normally be sent to a synthesiser in a window on the screen) have been very useful to application developers. We have provided advice to developers of software such as foobar2000 seeking to improve accessibility.
Conclusion
With regard to success criteria, the grant proposal stated:
The success of this grant will be determined by the progress of NVDA in general, with particular emphasis on the goals described above, especially those related to Mozilla software. As noted above, due to the new territory being explored, some of these goals may change. However, these goals should be mostly completed, allowing for deviations as appropriate.
Most of the important goals were achieved with great success. Two noteable exceptions are satisfactory support for live regions and rich text editing, both extremely complex undertakings. Some goals were unachievable due to the lack of complete specification or application implementation. In addition, it must again be emphasised that the original grant goals were written for a three year period, rather than the one year covered by this grant. The benefits that NVDA has had for the community are evident in the rapid growth in NVDA's popularity. NVDA 0.6p2 has been downloaded over 18000 times since its release in August 2008. NVDA has also received considerable Recognition, including an article in the press, reviews, testimonials and an award. Given all of these factors, we believe that this grant has been very successful.

rss
NVDA is developed by