Corrections, elaborations, and new topics are solicited for inclusion in the FAQ. Indicate the question and answer being addressed. Your name and email address will be listed as a contributor unless you specify otherwise. Contributors include Bill Cox (waywardgeek@gmail.com, on Linux distributions and programming languages).
This 1.2 version of the FAQ was posted on
May 20, 2010
at
http://EmpowermentZone.com/NonvisualDevelopmentFAQ.htm
----------
Blind programmers have contributed to a project intended for this purpose. Specifications and samples of a "fruit basket program" are at the web site
http://FruitBasket.QuantumMyst.com
A fruit basket program is intended as a simple but nontrivial graphical user interface (GUI), exhibiting how a developer may employ a particular programming language and platform, and how a user may experience the result. The length and complexity of code may be considered from a developer standpoint; the accessibility and performance of the program may be considered from a user standpoint.
Basically, the user interface contains an edit box for entering a fruit name (e.g, apple), a listbox for collecting the fruit (the basket), and buttons to add or delete items. Obviously, such a program is not inherently useful, but it does offer an informative example of a development approach, with comparisons possible to other programs meeting the same criteria. Fruit basket samples are available for many development approaches.
Blind programmers have developed a set of JAWS scripts for Visual Studio (VS), which work with either VS 2005 or VS 2008. They do not work with VS 2010, which uses Windows Presentation Foundation (WPF) controls rather than Windows Forms controls.
The executable installer for the scripts works with 64-bit Windows and Windows 7, as well as earlier versions of Windows. It is available at
http://EmpowermentZone.com/msenv2005.exe
Pick your JAWS version in the installer dialog -- the default is the latest version found on your computer. Otherwise, just press Enter to accept all defaults of that dialog.
A zip archive is also available for a manual install at
http://EmpowermentZone.com/msenv2005.zip
Documentation for the scripts is in the file msenv2005.htm. It gives steps for manual installation. It also includes a list of hotkeys and a tutorial on developing a fruit basket program with C# and VS.
VS comes in various versions with increasing amounts of developer tools and corresponding costs. The "Express Editions" may be freely downloaded and used, even in commercial projects. Each Express Edition is oriented to a particular language or platform: C#, Visual Basic, Visual C++, or Visual Web Developer (for developing web sites with ASP.NET). These are available at
http://www.microsoft.com/express/Windows/
A collection of tips has been gathered from blind programming lists, called "Nonvisual Development with .NET," posted at
http://EmpowermentZone.com/ndn.htm
Sharp Develop is an open source, cross platform IDE for .NET languages, available at
http://www.icsharpcode.net/opensource/sd/
Eclipse is an open source, cross-platform IDE for Java and other languages, available at
http://eclipse.org
A plug in for C# development with Eclipse is called Emonic, available at
http://emonic.sourceforge.net/
C#, Visual Basic, and JScript .NET command-line compilers are part of the .NET Framework 2.0 Software Development Kit (SDK), which is freely available at
http://msdn.microsoft.com/en-us/netframework/aa731542.aspx
Later versions of the .NET Framework include these command-line compilers in the distribution of the Framework, itself. Usually, a shortcut is put on the Windows Start Menu for opening a command prompt with PATH and other environment variables set so that these tools are found when run. You could also search your hard disk for the C# compiler, csc.exe, and then add its directory to your search path.
Boxer
http://TextEditor.com
EdSharp
http://EmpowermentZone.com/edsetup.exe
NoteTab Pro
http://NoteTab.com
TextPad
http://TextPad.com
Install the Java Development Kit (JDK) from
http://JavaSoft.com
Also there is the Java Access Bridge (JAB), which should be installed for each Java Virtual Machine (JVM) on your computer. A direct download URL for the JAB is
http://www.renovation-software.com/files/tgsdk/accessbridge-2_0_1.exe
Eclipse is an accessible IDE especially tailored for Java development. It is available from
http://eclipse.org
Also there is the Standard Widget Toolkit (SWT), a Java package that produces accessible GUIs on Windows and Linux.
Install Python from
http://python.org
Install the wxPython package for creating accessible GUIs from
http://wxPython.org
For Windows development, install the Python for Windows extensions at
http://sourceforge.net/projects/pywin32/
Also install py2exe, a package for building stand-alone executables from
http://py2exe.org
In Python, code indentation is syntactically required rather than stylistically optional. The EdSharp editor includes features that help screen reader users manage indentation efficiently, available at
http://EmpowermentZone.com/edsetup.exe
AutoIt is a Visual Basic-like language that is freely available from
http://AutoItScript.com
Inno Setup
http://InnoSetup.org
NSIS (Nullsoft Scriptable Install System)
http://nsis.sourceforge.net/Main_Page
Sodbeans is being developed at
http://sodbeans.sourceforge.net/
You can use a screen reader on another computer to log into any distro remotely, and then use it accessibly in a console mode session. Some mainstream distros can be made to come up talking, without sighted assistance. There are blind programmers who love Debian, Arch, Knoppix, and Gentoo, for example. Ubuntu Lucid currently holds a small lead over other main-stream distros in terms of default accessibility on the Gnome desktop, though more experience hackers often prefer other distros.
Specialized distros for the blind are also available. For beginning computer users, you probably can't beat Knoppix Adrian, which boots into a talking menu. It can be downloaded from mirrors like the one at
http://www.kernel.org/pub/dist/knoppix/
There are other distros for the blind, but Vinux may have the most users at present, available at
http://vinux.uk.org
Being based on Ubuntu Lucid helps the Vinux community feed improvements they make into a mainstream distro quickly.
Linux has just about every kind of programming environment. There is not, however, a solid and highly integrated IDE like Visual Studio, though progress is being made on Eclipse accessibility, and other IDEs are also progressing.
Blind programmers on Linux are encouraged to learn to control it through a shell, like bash, which is similar to a Windows command shell, but better. You can log in from a Windows box and make Linux do just about anything remotely. You can also boot into Linux directly, and control it from the command line using console readers like Speakup, available at
http://www.linux-speakup.org/
or Yasr, available at
http://yasr.sourceforge.net/
Shells are highly accessible, through programs like Speakup, and most programming is done directly in shell-based editors. The GNU debugger also works well in a shell.
Alternatively, you can boot into Gnome, the most popular Linux desktop, and use the Orca screen reader, available at
http://live.gnome.org/Orca
Orca works with FireFox, mail, Open Office, and various GUI-based administration utilities. Gnome is fairly accessible, but not as good as Windows or Mac OS X.
Many blind programmers prefer the Emacspeak environment, which is a powerful audio desktop built on top of emacs, available at
http://emacspeak.sourceforge.net/
In Linux, you have many choices, and are free to choose what works best for you. You can also improve any part of the system, and working with open source communities, you can make them better.
To contribute to the community, it is helpful to know one or more of the following languages:
* Bash schell scripting. This may be the easiest language to learn in Linux, and it is very powerful. Bash scripts are used throughout most Linux systems to control practically everything.
* C. Most programs in Linux are written in C, including atk, at-spi, and speech-dispatcher, which are used for connecting screen readers to the system. Speakup, and GTK+, the Gnome GUI library, are also written in C.
* Python. Many programs in Gnome are written in Python and use the pygtk bindings if they need GUIs. Orca, the Gnome screen reader, is written entirely in Python.
* C++. Some applications, like espeak, the default TTS engine, are written in C++. Some GUI engines, like Qt and wxWidgets, are also in C++.
Before developing on Linux, make sure you like programming. Linux is considered by many hackers to be the happiest place to code. It is a wonderful operating system (OS) for hackers, where you will experience freedom unlike anything in Windows. However, unless you absolutely love programming, Linux may just drive you nuts.
There are suggestions elsewhere in this FAQ for getting started in programming on Windows, which you should probably follow first. Right now, while Linux is fairly accessible, it's currently better for blind programmers than for general blind users. Once you feel you've learned enough to start contributing, then feel free to jump right into almost any Linux project. There are literally thousands of them, and being blind will not hold you back from contributing in most cases.
Decide how you want to interact with Linux. For example, if you're going to use JAWS to controll a shell, JAWS email lists can help. If you want to boot directly into a Linux console and do your work there, you can get help on the speakup list. If you want to use the Gnome desktop, the Vinux mailing list is friendly to newbie questions, and generally can help you get started. If you want to help improve Linux accessibility, the Vinux project is looking for volunteers.
Hal
http://yourdolphin.com/productdetail.asp?id=5
JAWS
http://freedomscientific.com/products/fs/jaws-product-page.asp
Mobile Speak
http://www.codefactory.es/en/products.asp?id=316
Nonvisual Desktop Access
http://www.nvda-project.org/
Orca
http://live.gnome.org/Orca
VoiceOver
http://www.apple.com/accessibility/voiceover/
Window-Eyes
http://www.gwmicro.com/Window-Eyes/
Lion's World Services For the Blind has a curriculum called Enterprise Solutions Programming -- a 10-month course which prepares clients to work in a wide range of programming environments including .NET and others. Exams for Microsoft Certified Professional Developer (MCPD) are offered through the program.
http://www.lwsb.org/enterprise_solutions_programming.asp
Blind Geeks -- Where Blind People Learn Programming
http://BlindGeeks.org
BlindWebbers -- List for blind and visually impaired web authors
http://tech.groups.yahoo.com/group/blindwebbers/
dev-accessibility -- Accessibility of Mozilla products to those with disabilities
https://lists.mozilla.org/listinfo/dev-accessibility
Dolphin Scripting Forum -- Discuss scripting speech, braille, or magnification with Supernova
http://www.yourdolphin.com/scripts/scripting_forum.asp
GW-Scripting -- Discussion list for information regarding the development and use of Window-Eyes scripts
http://www.gwmicro.com/Support/Email_Lists/
Java Accessibility
http://archives.java.sun.com/cgi-bin/wa?A0=java-access
JAWSScripts -- For scripting and configuring JAWS
http://www.freelists.org/list/jawsscripts
LibLouis and LibLouisXML -- List for the discussion and development of the liblouis and liblouisxml braille translation, back-translation, and formatting software
http://www.freelists.org/list/liblouis-liblouisxml
NVDA Developers -- List for development of the Nonvisual Desktop Access screen reader
http://www.nvda-project.org/wiki/Community
Open A11y of the Linux Foundation
http://www.linux-foundation.org/en/accessibility/email
program-l -- Discussion group for visually impaired computer programmers
http://www.freelists.org/list/program-l
ProgrammingBlind -- Programming while blind
http://www.freelists.org/list/programmingblind
AbilitiesSoft -- Developing software for people with disabilities
http://www.AbilitiesSoft.com/
Blind Geeks -- Where Blind People Learn Programming
http://BlindGeeks.org
Inthane's Grab Bag -- Blind programming assistance
http://GrabBag.AlacornComputer.com
NonvisualDevelopment -- promoting software development without visual dependencies
http://NonvisualDevelopment.org
Adobe, Accessibility Resource Center
http://www.adobe.com/accessibility/
Apple, Accessibility
http://www.apple.com/accessibility/
IBM, Accessibility
http://www.ibm.com/accessibility/us/en/
The Linux Foundation, Open Accessibility
http://a11y.org/
Microsoft, Accessibility Information for Developers
http://www.microsoft.com/enable/developer.aspx
Mozilla Foundation, Accessibility Project
http://www.mozilla.org/access/
Oracle, Accessibility
http://www.oracle.com/accessibility/index.html
Sun, Accessibility
http://www.sun.com/accessibility/index.jsp
United States Government, Section 508
http://section508.gov/
World Wide Web Consortium, Web Accessibility Initiative
http://w3.org/wai/
Version 1.2 on May 20, 2010
Added material by Bill Cox on Linux distributions and programming languages.
Version 1.1 on May 19, 2010
Made urls to scriptable screen readers more specific, pointing to the web page of the screen reader, itself, rather than to the company web site. Added Mobile Speak, Orca, and VoiceOver to that screen reader list. Added Dolphin scripting forum to the mailing lists section. Added the following sections: recommended tools for building installation programs; sources of standards and APIs for developing accessible applications; and this change log.