Future Goals
All of the following items are significant features which are candidates for funding sources. The time estimates provided are a rough guide based on one developer working primarily on the one goal and are given to assist in determining the amount of funding required.
- Enhancements to Braille Output Support
- Table Navigation and Reporting in Virtual Buffers
- Automated Regression Testing
- Improve Live Region Support
- Support for IAccessible2 Rich Text Editing
- Automatic Language Switching in Virtual Buffers
- Web Page Landmarks
- ARIA Drag and Drop
- General ARIA Improvements
- Improve Support for Adobe Reader
- Add Support for Adobe Flash Embedded in Browsers
- Support Retrieval of Display Information
- Improve Support for Microsoft Office
- Support Java Web Applets
- Improve Support for IBM Lotus Symphony
- Remote Access Support
Enhancements to Braille Output Support
- Rationale: Important for efficient use (and thus uptake) of NVDA by braille users
- Estimated time: 9 weeks
In the previous Mozilla grant, initial braille output support was implemented in NVDA. While quite functional and useable already, several enhancements are required to make NVDA's braille support more useful and comparable to that of some other screen readers. These enhancements include:
- The ability to execute definable NVDA commands using the keys on the braille display; e.g. next line, previous line, move to top of document, etc. (ticket #209)
- Rendering of control and formatting information in braille; e.g. indicating the presence of links, tables, form fields, headings, bold text, subscript text, etc. (ticket #202)
- Indication of selected text in a text control, rather than just the caret
- The ability to split at word boundaries when splitting lines to fit on the display, rather than simply splitting the line when no more text will fit on the display (which can make reading uncomfortable and tedious)
Table Navigation and Reporting in Virtual Buffers
- Rationale: Important for efficient reading of tables in web content, which are extremely common on the web
- Estimated time: 1.5 weeks
- Relevant ticket: #229
NVDA renders web pages from Mozilla Firefox (and other browsers) into a virtual buffer. The content of tables is read, as well as basic table information such as cell coordinates and table dimensions. Basic table navigation commands have also been implemented. However, cells which span multiple rows and/or columns are not handled correctly, row and column headers are not reported, and the table navigation commands handle more complex tables inadequately. This support must be completed in order to provide a logical, user friendly experience when reading tables on web pages. It is an important feature for reading of web content in screen readers and is present in all of the major commercial products.
Automated Regression Testing
- Rationale: Results in a higher quality product (thus improving uptake), reduces time that developers must spend testing
- Estimated time: 8 weeks
All testing of NVDA is currently done manually by its developers and users. This can be extremely time consuming and tedious. Also, there is a high potential for code changes to cause regressions in other (sometimes unforeseeable) circumstances and functionality. To alleviate these problems and to allow for faster discovery of new problems, an automated testing system needs to be developed for NVDA. This system would automatically run tests defined by the developers on a regular basis and report on the success or failure of the tests.
Improve Live Region Support
- Rationale: Necessary for good support for highly dynamic web documents and web applications
- Estimated time: 6 weeks
- Relevant ticket: #246
Live regions are used to enable automatic reporting of changes to specific regions of a highly dynamic web page or application. NVDA's current support for live regions is incomplete and does not perform well in many cases. This support needs to be rewritten using an in-process component to allow for efficient, reliable handling of live regions. The new implementation should satisfy the requirements of the live region specification. In addition, automatic reaction to changes in objects not marked as live regions (e.g. changes in objects resultant to user input events) should be investigated.
Note that this task requires refactoring and unification of our in-process components. The time estimate includes this prerequisite work.
Support for IAccessible2 Rich Text Editing
- Rationale: Important for document editing in web applications, Mozilla Thunderbird, etc.
- Estimated time: 5 weeks
IAccessible2 is used to make rich text editing accessible in products such as Mozilla Gecko (including Firefox and Thunderbird) and IBM Lotus Symphony. Although NVDA implements some extremely limited support for IAccessible2 rich text editing, the support is rather incomplete and does not function in more complex cases. Proper support should be designed and implemented to enable fully functional, efficient, reliable rich text editing in these applications.
Note: Some of this work may also be useful to improve rich text editing for applications which use the Java Access Bridge such as OpenOffice.org.
Automatic Language Switching in Virtual Buffers
- Rationale: Allows for seemless reading of multilingual web content
- Estimated time: 3 weeks
Many web pages contain text in multiple languages. If they are authored correctly, the language of the text is specified using a tag. NVDA should detect language changes on pages rendered in virtual buffers and adjust the speech synthesiser language accordingly if the synthesiser supports the new language. Automatic switching of the braille translation table should also be investigated.
Web Page Landmarks
- Rationale: Improves efficient structural navigation on large/complex web pages
- Estimated time: 2 weeks
- Relevant ticket: #192
The ARIA role attribute can be used to define structural "landmarks" on a web page; i.e. sections of the page which have particular structural significance. Examples include main, article, banner, navigation, search and status. NVDA should provide the ability to quickly navigate to any defined landmarks. Use of landmarks in other situations should also be investigated, such as starting to read text from the "main" landmark instead of the top when a page loads.
ARIA Drag and Drop
- Rationale: Allows for accessible drag and drop of objects in web applications
- Estimated time: 1 week
- Relevant ticket: #239
In ARIA, an element can indicate whether it is draggable (using aria-grabbed) and whether a grabbed element can be dropped on to a given element (using aria-dropeffect). This allows ATs to indicate whether elements are draggable and where they can be dropped. NVDA should retrieve this information and report it to the user.
General ARIA Improvements
- Rationale: Improves potential accessibility of web applications
- Estimated time: at least 2 weeks
- Relevant tickets
There are many different possible widgets and scenarios that might be encountered with ARIA. Any issues encountered with different ARIA use cases should be resolved. There are a growing number of ARIA test cases which might serve as a starting point in this process.
Improve Support for Adobe Reader
- Rationale: Important for optimal access to complex PDF documents
- Estimated time: 1 week
NVDA's support for Adobe Reader has recently been completely rewritten and is now mostly comparable to that of commercial screen readers. However, there are still some areas that require work:
- Support for complex forms: While simple forms are already quite useable, there are likely some complex cases which need to be better supported. Our code should be tested with any test cases that we can find and adjustments made to support them correctly.
- Support for dynamic content: The current code does handle events which indicate changes in document content. However, this has not been tested with highly dynamic documents, as they are somewhat difficult to find. Again, we should test with any test cases we can find and make appropriate changes to support them.
- Support for text attributes: The current code does not currently render text attribute information; e.g. font information.
Add Support for Adobe Flash Embedded in Browsers
- Rationale: Required for access to Adobe Flash content, which is used abundantly on the web
- Estimated time: 4 weeks
Currently, NVDA has no specific support for Adobe Flash. This means that the experience of Flash applets with NVDA is suboptimal at best. NVDA should implement support for Adobe Flash in both Internet Explorer and Firefox. We should investigate the best way for the user to interact with Flash content, which may include rendering Flash into the virtual document representation.
Support Retrieval of Display Information
- Rationale: Allows for reading of text for some controls which do not otherwise expose information, especially legacy applications
- Estimated time: at least 8 weeks
- Relevant ticket: #40
Many UI controls expose information via accessibility or native APIs. NVDA uses these APIs to make these controls accessible to the user. However, some controls, particularly completely custom controls which do not consider accessibility or controls in legacy applications, do not provide APIs to access information. Custom editable text controls often suffer from this problem, as do menu items containing icons. NVDA currently has no way of accessing these controls. However, excepting controls that perform their own graphics rendering, most controls write text to the display using a common mechanism (GDI). Through a technique known as display/video/GDI hooking, it is possible for NVDA to intercept text written using this mechanism and thus provide at least some access to these controls.
Improve Support for Microsoft Office
- Rationale: Important in order for NVDA to be used in business environments where Microsoft Office applications are used
- Need to go in-process for Microsoft Word documents to allow for better performance
- Display hooks required for some controls
Support Java Web Applets
Improve Support for IBM Lotus Symphony
- Prerequisite: Support for IAccessible2 Rich Text Editing
Remote Access Support
- Implement a client/server model to allow NVDA to receive speech and braille from a remote instance


NVDA is developed by