# NonVisual Desktop Access

NonVisual Desktop Access (NVDA) ist ein kostenloser, portabler und quelloffener Screenreader, der blinden Menschen die Nutzung von Computern mit dem Betriebssystem Windows ermöglicht.
Das Projekt wurde 2006 vom Australier Michael Curran begonnen, der wie die meisten freiwilligen Mitarbeiter selbst blind ist. Der überwiegende Anteil von NVDA ist in Python programmiert, einige wenige Teile jedoch auch in C++. Von der Version 2010.2 Beta1 an wird der Bildschirminhalt auch mittels Display-Hooking ausgelesen. Jedoch verwendet es standardmäßig Accessibility-Frameworks wie Microsoft Active Accessibility (MSAA), das neuere User Interface Automation oder die Java Access Bridge (JAB). Das Projekt verwendet die GNU General Public License.
NVDA enthält den integrierten Sprachsynthesizer eSpeak und unterstützt zusätzlich weitere Sprachsynthesizer wie u. a. SAPI-Synthesizer. Seit der Version 2017.3 werden jedoch standardmäßig die Windows OneCore-Stimmen verwendet. Die Ausgabe auf Braillezeilen ist von der Version 0.6p3 an offiziell möglich.

## Geschichte

Besorgt über die hohen Kosten kommerzieller Screenreader begann Michael Curran im April 2006 mit der Entwicklung eines Python-basierten Screenreaders mit Microsoft SAPI als Schnittstelle für Sprachausgaben. Er bot Unterstützung für Windows 2000 aufwärts und lieferte Bildschirmlesefunktionen wie grundlegende Unterstützung für einige Drittanbietersoftware und Webbrowsing. Gegen Ende 2006 nannte Curran sein Projekt Nonvisual Desktop Access (NVDA) und veröffentlichte im folgenden Jahr die Version 0.5. Im Laufe der Jahre 2008 und 2009 erschienen mehrere Versionen der Version 0.6 mit erweitertem Webbrowsing, Unterstützung für mehr Programme, Ausgabe von Braillezeilen und verbesserter Unterstützung für mehr Sprachen. Um die weitere Entwicklung von NVDA zu verwalten, gründete Curran zusammen mit James Teh 2007 NV access als gemeinnützige Gesellschaft.
Die Funktionen und die Popularität von NVDA nahmen weiter zu. Das Jahr 2009 brachte Unterstützung für 64-Bit-Versionen von Windows sowie eine größere Programmstabilität im Jahr 2010. Größere Code-Umstrukturierungen zur Unterstützung von Modulen von Drittanbietern sowie grundlegende Unterstützung für Windows 8 wurden 2011 verfügbar. Im Laufe des Jahres 2012 erhielt NVDA verbesserte Unterstützung für Windows 8, die Fähigkeit, automatische Updates durchzuführen, eine Erweiterungsverwaltung zur Verwaltung von Erweiterungen von Drittanbietern, verbesserte Unterstützung für die Eingabe ostasiatischer Texte und führte Touchscreen-Unterstützung ein, die erste ihrer Art für Bildschirmleseprogramme von Drittanbietern für Windows. NVDA erhielt 2013 Unterstützung für Microsoft PowerPoint und wurde 2014 aktualisiert, um PowerPoint 2013 zu unterstützen; im selben Jahr fügte NVDA auch eine verbesserte WAI-ARIA-Unterstützung hinzu. Ebenfalls im Jahr 2013 führte NV Access eine neu strukturierte Methode zur Überprüfung von Bildschirmtexten ein und führte eine Funktion zur Verwaltung von Profilen für Anwendungen ein. 2014 wurde der Zugriff auf Microsoft Office und andere Office-Suites verbessert.
Die Zugänglichkeit von mathematischen Formeln kann für blinde und sehbehinderte Personen ein Problem darstellen. Im Jahr 2015 erhielt NVDA durch MathPlayer Unterstützung für MathML, zusammen mit einer verbesserten Unterstützung für Mintty, einer quelloffenen Terminalemulation, dem Desktop-Client für Skype und Diagramme in Microsoft Excel. Ebenfalls 2015 unterstützte NVDA als einer der ersten Screenreader Windows 10 und fügte experimentell Unterstützung für Microsoft Edge hinzu, das inzwischen jedoch vollständig unterstützt wird. 2016 wurde die Möglichkeit eingeführt, die Lautstärke anderer Anwendungen zu verringern, während NVDA spricht.
Im Jahr 2019 wurde NVDA in einer Umfrage zum weltweit beliebtesten Screenreader gewählt. Diese Umfrage ist jedoch unter anderem aufgrund der zu geringen Bekanntheit und der Konzentration des angloamerikanischen Raums nicht repräsentativ. NVDA ist besonders in Entwicklungsländern beliebt, da es kostenlos heruntergeladen und genutzt werden kann und so vielen blinden und sehbehinderten Menschen zugänglich ist, die sonst keinen Zugang zum Internet hätten.
NVDA kann mit auf Steganographie basierender Software verwendet werden, um eine textliche Beschreibung von Bildern zu liefern.

## Technische Merkmale

NVDA gliedert sich in verschiedene Subsysteme, einschließlich der Ereignisschleife, des Add-On-Managers, der Anwendungsmodule, des Ereignisbehandlers und der Ein- und Ausgabehandler sowie Module zur Unterstützung von Barrierefreiheits-APIs wie Microsoft Active Accessibility. NVDA verfügt außerdem über verschiedene eigene grafische Benutzeroberflächen, die durch wxPython entwickelt werden, wie z. B. verschiedene Einstellungsdialoge und Dialoge für die Setup- und Update-Verwaltung.
NVDA verwendet Objekte zur Darstellung von Elementen in einer Anwendung, wie Menüleisten, Statusleisten und verschiedene Vordergrundfenster. Verschiedene Informationen über ein Objekt wie Name, Wert und Bildschirmkoordinaten werden von NVDA durch Zugänglichkeits-APIs gesammelt, die von einem Objekt offengelegt werden, wie z. B. durch UIA (User Interface Automation). Die gesammelten Informationen werden durch verschiedene Subsysteme, wie z. B. Speech Handler, geleitet und dem Benutzer in Sprache, Braille und über Bildschirmfenster präsentiert. NVDA bietet auch Einrichtungen zur Handhabung von Ereignissen wie gedrückte Tasten, Namensänderungen und wenn eine Anwendung den Fokus erhält oder verliert.
NVDA bietet die Möglichkeit, die Objekthierarchie einer Anwendung zu untersuchen und Möglichkeiten zur Verbesserung der Zugänglichkeit eines Programms zu implementieren. Es bietet dedizierte Befehle, um sich innerhalb einer Anwendung durch die Objekthierarchie zu bewegen, sowie eine interaktive Python-Konsole zur Durchführung von Fokusmanipulationen, zur Überwachung von Objekten auf Ereignisse und zum Testen von Code zur Verbesserung der Zugänglichkeit einer Anwendung, die in ein Anwendungsmodul verpackt werden soll.

## Entwicklungsmodell

Von 2006 bis 2013 wurde der NVDA-Quellcode über Bazaar verwaltet, wobei NV Access 2013 unter Berufung auf die Entwicklungsfortschritte mit Bazaar zu Git wechselte. Die Entwickler nutzten auch die Gelegenheit, den Veröffentlichungszeitplan in regelmäßigen Abständen zu ändern, um Verzögerungen bei der Veröffentlichung einer offiziellen Version zu vermeiden und den Zeitrahmen für die Veröffentlichung vorhersehbar zu machen.
Zusätzlich zu den offiziellen Veröffentlichungen stehen auch sog. Snapshot-Builds zum Testen zur Verfügung. Ähnlich wie beim Veröffentlichungsprozess für den Linux-Kernel sind NVDA-Snapshots in Beta- und Alpha-Zweigen unterteilt, wobei von Zeit zu Zeit spezielle Themenzweige erstellt werden. NV Access beschreibt den Beta-Zweig als eine Chance für Benutzer, frühzeitig Zugang zu neuen Funktionen zu erhalten, den Alpha-Zweig als sehr unstabilen Code für die mögliche Aufnahme in die kommende Version und Themenzweige für die Entwicklung einer Hauptfunktion oder zur Vorbereitung der offiziellen Veröffentlichung (rc-Zweig). Einige Dritt-Entwickler unterhalten auch bestimmte Zweige, einschließlich sprachspezifischer Versionen von NVDA oder um eine öffentliche Vorschau für eine Funktion anzubieten, die sich in aktiver Entwicklung befindet.
Die derzeit federführenden Entwickler sind Michael „Mick“ Curran und Reef Turner mit Code- und Übersetzungsbeiträgen von Benutzern und anderen Entwicklern aus der ganzen Welt.

## Erweiterungen

Seit der Version 2011.1 kann der Funktionsumfang von NVDA mittels sog. Erweiterungen deutlich erweitert werden. Die zahlreichen Erweiterungen werden meistens von der Community entwickelt und auf einer speziellen Website zur Verfügung gestellt. Neben der Erweiterung der Funktionalität und der Menüs, können somit auch weitere Anwendungen, die sonst nicht barrierefrei wären, zugänglich gemacht werden.
Mit Hilfe dieser Erweiterungen können u. a. folgende Funktionen hinzugefügt werden:
* Neue Braillezeilen- und Sprachausgabentreiber
* Erweiterung für Fernwartungsfunktionalität
* Anzeige der Symbole im Infobereich
* Beschreibung von Bildern
* Zählen von Elementen des ausgewählten Textes
* Erweiterte Outlook-Funktionen
* Verbesserungen für Mozilla-Anwendungen
* Updater für Erweiterungen
Einige dieser Erweiterungen (wie beispielsweise die Texterkennung oder Bildschirmblickschutz) wurden bereits in NVDA selbst integriert.