Project of the Month, March 2011

NonVisual Desktop Access (NVDA)

NonVisual Desktop Access (NVDA) is a free and open source screen reader for the Microsoft Windows operating system. Providing feedback via synthetic speech and Braille, it enables blind or vision impaired people to access computers running Windows for no more cost than a sighted person. Major features include support for over 20 languages and the ability to run entirely from a USB drive with no installation.

Although screen readers for the blind have existed for many years, they have usually cost hundreds to thousands of dollars to purchase. NVDA today is the only open source screen reader for Windows. NVDA is also the only free screen reader providing blind people with unrestricted access to many of today’s main-stream applications including popular web browsers, email clients and word processors.

NVDA is developed by NV Access, a non-profit organisation based in Australia. However, as NVDA is open source, it receives many contributions from the community.

Why and how did you get started?

Being blind himself, Michael Curran always believed that he should not have to pay an extra cost to access the Windows Operating System than his sighted peers. However, he also believed that it was not the job of the state or charities alone to fund the needs of blind people.

Having participated in the open source world in the past, Michael thought it would be both useful and fun to try writing a free and open source screen reader for Windows. He figured that perhaps if he made a start, other blind individuals would also take an interest and volunteer their time. There were already free and open source screen readers for Linux, so he didn’t think it would be impossible. On April 28th 2006, Michael released the very first code for the screen reader (at that point, it did not yet have the name NVDA).

Starting out with roughly the same functionality as the built-in screen reading tool for Windows called Narrator, the screen reader slowly improved over the next few months. James Teh, a long-time blind friend of Michael’s, took some interest in the project, and although a little skeptical at first, decided to get involved. Very quickly, things took off, with other blind people becoming more interested in testing, translating it into other languages and even starting to use it as their screen reader of choice. Large organizations (most notably Mozilla) started taking an interest in the project, as they could see how a free and open source screen reader on Windows could help the accessibility of their own applications (such as Firefox).

Who is the software’s intended audience?

NVDA is useful for both totally blind and vision impaired people. As it is free, it first and foremost tries to fulfill the needs of the home user. However, it has certainly become very popular with blind people in the IT field. It may be useful in the workplace, though it does not focus heavily on enterprise applications, as in these situations, another screen reading solution can generally be afforded which would be better tailored to their needs.

What are a couple of notable examples of how people are using your software?

The Aotearoa People’s Network, which provides public internet access in public libraries right across New Zealand, includes NVDA in the  software installed on its computers.

Yahoo! uses NVDA for screen reader web accessibility testing and demonstration, particularly in relation to rich web accessibility technologies.

What are the system requirements for your software, and what do people need to know about getting it set up and running?

NVDA runs on both 32-bit and 64-bit editions of Microsoft Windows XP or later. NVDA has no additional hardware requirements beyond those of the operating system and requires less than 50 mb of disk space.

There are two different packages of NVDA available from the NVDA website. One allows you to install it on your system so that it is accessible from the Start menu and also gives the ability to run automatically at start-up, including while on the Windows logon screen. The second package is a portable version, which can be extracted to any directory on your system, or even on to a USB thumb drive so that it can be carried around and used on the go. The NVDA user guide contains useful information on how to set up and run these packages.

What gave you an indication that your project was becoming successful?

It was probably in about January 2007 (around 8 months into the project) when Mozilla contacted us interested in forming a partnership with the aim of having NVDA become compatible with Mozilla Firefox. In addition, they offered a fully sponsored trip for Michael to CSUN (a major disability technology conference held each year in California) so that he would have a chance to network with others in the industry and hopefully gather more momentum for the project.

What has been your biggest surprise?

The biggest surprise was probably for James, when at 6 am one morning, he woke up to an SMS from Michael asking him if he would be willing to quit his current job and come to work full-time for NV Access and the NVDA project. This was made possible through the generosity and belief of the Mozilla Foundation, who provided major funding to allow James to work full-time along side Michael.

What has been your biggest challenge?

There are many challenges when it comes to writing assistive technologies such as Screen Readers. This is due to the fact that the screen reader must gather as much information programmatically from the OS and applications as it can in order to then present it in a suitable way to the blind user. In some cases, there are well designed and safe APIs that can be used to gather this information, but in others, rather dangerous, hacky and sparsely (if at all) documented solutions must be found. Some examples are:

* Injecting code into other processes to allow for the interception of API calls from that process (e.g. detecting text written to the screen), and faster access to information (avoiding many cross-process calls)

* Supporting many separate accessibility APIs, platform APIs and toolkits in order to gain access to the widest array of applications

* Working around floors in the accessibility implementations of applications. These floors usually exist due to poor knowledge of standards, flaws in those standards and/or lack of testing.

Why do you think your project has been so well received?

NVDA fills a strong need that has existed for a long time. Today, access to technology is important for everyone, perhaps even more so for blind people given their inability to read print media. Because Windows is inaccessible to blind people out-of-the-box, blind users require add-on screen reading software, which has traditionally been quite expensive. This cost is often prohibitive, especially when the unemployment rate for blind people in many countries is 60% or more. NVDA has provided access to technology for blind people who were previously unable to afford it.

In addition, application and web site developers often need to test their work with a screen reader to ensure its accessibility. The cost of commercial screen readers is often prohibitive for these developers also. NVDA has allowed them to test the accessibility of their work without this cost, which in turn means that more applications and web sites are likely to be accessible.

What advice would you give to a project that’s just starting out?

* Don’t be scared to write that first line of code; You must start somewhere.

* Don’t be scared to rewrite code; Many parts of NVDA have been written and rewritten at least three times.

* Read reference documentation.

* Carefully consider the sustainability of the project; Just because it’s open source does not mean that it can’t pay your bills.

Where do you see your project going?

There are certainly many features and improvements that we can think of for NVDA. However, with regard to sustainability, we must continue to investigate ways to ensure that the current developers can continue to devote their full time to the project. This may mean pushing harder for donations, focusing on features that are interesting to those providing funding, and providing paid technical support and/or customization services for those organizations with specific needs.

What’s on your project wish list?

* Improved support for Microsoft Office

* Support for input in Asian languages

* Enhanced braille support (including presentation of text formatting)

* More developers! :)

What are you most proud of?

We are proud to have gotten this far, from NVDA’s humble beginnings as a small, voluntary pet project with vast dreams to the well-known and usable Screen Reader that it is now. We are proud that our work has earned both the project and ourselves considerable respect in the accessibility industry. We are of course most proud that we are able to offer a free solution to those who could not have otherwise afforded it.

If you could change something about the project, what would it be?

Quality assurance would be much easier if we had implemented an automated testing framework early in the project. Doing this now that the project is much larger is somewhat more difficult and it is a job that we never seem to find time to begin. This would allow us to identify regressions in functionality very quickly and probably would have saved us quite a bit of time already.

Rather than being a proper Python package, NVDA has always been a collection of top level Python packages and modules. For the most part, this is okay for NVDA, as it is always executed as a stand-alone application, rather than being imported by other applications. However, this causes problems with regard to code separation, namespace conflicts and external tools such as Epydoc. Fixing this now is not at all trivial, though it is a topic that keeps returning to bite us.

How do you coordinate the project?

The project is led by both Michael Curran and James Teh. Michael and James speak frequently over the phone, on Skype and via IRC to work out priorities and to generally solve code problems. Although Michael and James make all high-level decisions about the project and produce and commit the majority of the code, others may gain commit access based on quality and appropriateness of past patch submissions.

Bug reports and enhancement requests are managed by the Trac ticketing system. Other features of Trac such as milestones and timeline are frequently used. Internationalisation is managed by Peter Vágner.

How many hours a month do you and/or your team devote to the project?

As employees of NV Access, Michael and James both devote all of their working hours (and more besides) to NVDA itself, except when doing administration for NV Access, which usually relates to NVDA in some way.

What is your development environment like?

We develop NVDA using the Windows Operating System. The core developers tend to use simple text editors for coding rather than complex IDEs. As most of the code is Python code, we make use of the Windows build of Python (currently 2.7). As small parts of our code are in C++, we also make use of the Microsoft Windows SDK, including the MSVC compiler. We manage the entire build using the SCons build system.

Milestones:

Date Version / Milestone
2007-05-25 NVDA 0.5
2008-03-13 NVDA 0.6p1
2009-08-07 NVDA 0.6p2
2009-02-14 NVDA 0.6p3
2009-11-24/td>

NVDA 2009.1
2010-03-29 NVDA 2010.1
2010-10-29 NVDA 2010.2

How can others contribute?

The development page at http://www.nvda-project.org/wiki/Development lists all the ways people can contribute. These include contributing patches, testing development snapshots, contributing documentation and of course donating money to the project.

Our future goals page at http://www.nvda-project.org/wiki/FutureGoals lists some high-level enhancements that we wish to be completed in the near future but haven’t started yet due to time or funding constraints.


More projects of the month
nvda_100x100white

Project name: NVDA

Date founded: May, 2005

Project page: http://www.nvda-project.org/

Project Leaders


Michael Curran

Michael Curran

Occupation: President/software developer – NV Access, Inc.

Location: Gold Coast, Australia

Education: Victorian Certificate of Education (2002) and Certificate 3 in Information Technology (2002)


James Teh

James Teh

Occupation: Vice president/software developer – NV Access, Inc.

Location: Brisbane, Australia

Education:Bachelor of Information Technology, Queensland University of Technology (2005)

Key Developers


Peter Vágner

Occupation: Work as a customer support representative at an internet service provider, and develop software outside work

Education:Bachelor of Natural Science, University of Matej Bel (2008)

Location: Banská bystrica , Slovakia


Aleksey Sadovoy

Occupation:Software developer

Education:Currently completing a Bachelor of Computer Science, Kyiv Mohyla Academy

Location: Kyiv, Ukraine


Why did you place the project on SourceForge.net?

Previously, we hosted all of our project resources on our own server. However, as NVDA grew in popularity, the amount of downloads began to exceed the bandwidth we had available. We also wanted to utilise SourceForge’s large number of mirrors for faster, more reliable downloads.

How has SourceForge.net helped your project succeed?

Our downloads are now faster and more reliable for our users. In addition, SourceForge’s download statistics are invaluable and something that wasn’t available to us before. In particular, the statistics by country give us a fair idea of where NVDA is being used across the globe.

The number one benefit of using SourceForge.net is:

The excellent downloads service, especially the mirrors and statistics.