473,732 Members | 2,207 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Accessibility of Docs on Win32: Navigation, Names and PyDoc

Hi,
My first post here. I've found some serious accessibility flaws in the
Python 2.4 docs and wish they could be rectified over time. I'm very new to
Python and initially contacted docs at python org, However, I haven't gotten
a reply for a week or so, and figured out I could post here for a larger
audience, then.

Original message follows:

Hello,
I'm a visually impaired programmer concerned about the accessibility of
Python documentation. I'm still new to Python and mainly using Perl and
Java, largely because of the relatively inaccessible documentation in
Python.

I'd like to report three key issues that I've discovered related to Python
documentation as follows:

1. Navigation in Functions

A single page tends to contain a large number of functions with no way for
screen reader users to find the next function or get a quick overview of
what's on offer. Sighted folk can easily skim through the page but people
relying on screen reader programs or heavy magnification can concentrate
only on a very small area of the screen. This is often referred to as the
straw analogy because it resembles looking at the screen contents through a
thin straw.

Many of the more advanced Windows screen readers such as Freedom
Scientific's Jaws (the most popular) or Dolphin Supernova (the one I'm
using) can list and directly navigate to links, frames and headings on the
page provided that you are using Internet Explorer or HTML help. However,
these features are only marginally helpful in Python documentation.

I've looked at the source and it appears function names are bold tt elements
of class function. This representation has several drawbacks from an
accessibility point of view:

Firstly, there are no means for moving in terms of TT elements directly.
Secondly, TT elements cannot be listed or randomly navigated to from the
keyboard. And finally even the semantics are lost as the readre doesn't
announce the class function. In stead you are told meaningless details such
as that the function name is in Courier New 12 point and the parentheses
following the name are Times New Roman 13 point. Confronted with this info
alone, it is not at all clear that this formatting has special significance.

Some basic or very new screen readers like MIcrosoft Narrator, Gnome's
Gnopernicus or Apple's VoiceOver do even worse. You might not get the
formatting information at all, and many readres don't offer as wide and
extensive a variety of navigation functions as JAws or SUpernova do. One
quick-n-dirty solution is to find the function names in the HTML source but
it is very difficult to read because of all the numeric identifiers and HTml
tags themselves.

One easy fix would be to turn the function names preceeding their
documentation into headings. This would give the right semantics and allow
direct navigation for the more advanced readers. However, listing links, or
finding a link based on some text, are screen reader or Web browser specific
actions and not universally available.

Another way used in say JavaDoc is to include a separate navigation section
having function prototypes and the first sentence of their description at
the top of the file. While the link based method is generally effective,
some screen readres have difficulty in quickly returning to the top or
moving the focus to links close to something at the bottom of the page. In
addition to issues encountered with headings, many browsers only offer
sequential navigation from one link to the next using the tab key. SO if you
have dozens of functions, you need to press tab or shit+tab loads, or else
use some screen reader specific action to rapidly move to a particular link.

It should also be noted that one should use the whole prototype as a link
and not just the name as in JavaDoc. The reason is that if functions differ
by their signature alone, it is tedious to figure out which function is in
question based on the link name. HTMl guidelines recommend that links are
independent of their surroundings (context-free?).

To universally get rid of the lack of link listing or quick navigation
facilities, an additional HTML list box could be added. The items should be
in alphabetical order and there should be a separate default button for
actually jumping to the selected list item. Auto-jumps are bad because
traversing and reading the list item names from the keyboard can cause focus
changes. So you may be unexpectedly taken away from the list box and might
not have enough time to read the whole name or ponder whether it is the one
you want. If using list separators, they shouldn't be made of punctuation
characters alone because many screen reader users, me included, have
punctuation set to none and thus nothing is spoken. The navigation list
ought to have a clearly visible and unambiguous text label saying that it is
a navigation list. Do avoid the term menu because to Windows screen reader
users, list boxes are never prompted as being menus, unlike on the Mac.

Even list boxes do have their weaknesses. Some browsers, namely Internet
Explorer, can only navigate based on the first letter typed. Thus you cannot
move to a function named foo directly but have to press the f key several
times to go through all items beginning with f. Further more, it is
difficult to include function signatures in the list box without sorting the
list by return type which is mostly undesirable.

As a rule of thumb including both a navigation list and a list of links
should solve the accessibility problem quite nicely. However, making a
separate article for each function under a heading would be of benefit in
CHM files. This would allow you to use the screen-reader independent
navigation features of the tree control and directly arrive at the desired
function using the TOC. Maybe this tac could be used in HTML, too, where it
would help with some reader specific navigation issues related to anchors
pointing to the same page. YOu could also navigate at the file system level
which is something I do a lot in browsing Java and Perl documentation.

2. Function names

While I do realize many of the PYthon names are well established, in
hindsight a great many are not particularly speech friendly. Programming
languages tend to use case changes or underscores to indicate word boundries
and boost readability. Nearly all Windows readers take this into account and
are able to correctly pronounce the individual words in functions such as
getHostName (or get_host_name).

In Python, on the other hand, names that have no explicit word delimiters
are annoyingly common judjing by the built-ins. A name such as getattr is
taken as a single word which makes the pronounciation incorrect and the
meaning unclear without using a spell command or cursoring letter by letter.
But because the names have a lot of inertia, I reckon there's nothing you
can do. Of course one can use an exception dictionary to correct the
pronounciation but this is an approach that calls for constant tweaking.

3. Pydoc

The tools that have a GUI are currently highly inaccessible in Windows. In
addition to idle this includes pydoc. I'm not sure what GUI library is being
used but have found several serious issues. The best working part are the
menus which are usable. However, some menu separators are made of
punctuation and are selectable. In Win32 menu separators should never be.
Another minor thing is that the scroll bars don't have context menus unlike
in say Notepad. While most sighted folks are just mildly amused should they
discover that there's a context menu, it can really come in handy at times.
If one has very little sight or difficulties using the mouse it may be very
time consuming to find and hit the small scroll thumb and move it at the
exact bottom or top. Though there's a hotkey, another way is selecting the
same thing in the scroll bar's context menu.

The real serius issue with the Python GUis is that they don't support the
keybord and are not screen reader accessible, at least in Windows. When
using the dialogs, the only thing Dolphin Supernova recognizes is the title
bar. And as many blind people don't even have the mouse, adding support for
tabbing around and using the arrows would be essential. One way to think of
this is attempting to use a modern GUI without the mouse or the monitor.

As far as I know, the only accessible GUI framework on Linux is currently
GTK2, though QT
should have accessibility in the future. In Windows, things based on the
Win32 API supporting Active Accessibility should be usable (not all are, of
course including Visual Studio 2005 betas). TK appears to be very
inaccessible as are ports of GTK and the FireFOx GUI (currently). Java's
Swing is
theoretically accessible but only if you have a screen reader and
AccessBridge beta and separately install the AccessBridge component. And
after all this, the UI doesn't respect the colors I've chosen and feels
highly non-native.

Sadly, it seems the only way to get a truely accessible GUI would be to
design things on a per platform basis using the GUI framework that is
accessible Win32, GTK, Cocoa (Classic and X ain't accessible).

I think that's about all I wanted to report this time. I hope all three
issues can be taken care of in the long run. Additionally, it would be great
to get a version of the Python 2.4 docs that enables easy navigation using a
screen reader.
End of quote.

Addition:

System:
HP NX8220 laptop
Win XP Pro SP2 English with latest fixes
Dolphin Supernova 6.03 with latest map files
Python 2.4

--
With kind regards Veli-Pekka Tätilä (vt*****@mail.s tudent.oulu.fi)
Accessibility, game music, synthesizers and programming:
http://www.student.oulu.fi/~vtatila/
Oct 6 '05 #1
0 2129

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

2
3114
by: Greg Kuperberg | last post by:
I plan to use pydoc for my Python project. After looking through the standard documentation, I am not sure how pydoc interprets its input. In its basic operation it evidently looks at the first string literal in the module and in each function definition. But there is more to the story than that, obviously. What other vestigial code does it detect? Every string literal? Variables of the form __xxx__, I gather? Which of these variables...
1
1505
by: M.E.Farmer | last post by:
Hello again!, I just wanted to start off saying I love this newsgroup! Everytime I have an idea someone seems to post on it, or about it. The word for today is **Synchronicity** ! The reason for this post is to talk about pydoc. I have been writing a module that colorizes source code, and have hoped to make it work with pydoc. I saw a thread 2 days ago about pydoc and firefox having issues. (Actually all Mozilla based browsers ignore...
9
2301
by: Barbara de Zoete | last post by:
I am getting more and more confused as to the meaning of the words 'accessibility' and 'usability' *in the context of the world wide web*. What do these two words mean? How do they differ from one another? Where does the meaning overlap, if it does? Where do they perhaps conflict with one another, if they do? Can anyone please explain to someone who is not native speaking, nor fluent in English? TIA
54
4359
by: richard_quick_uk | last post by:
Hi, If anyone's got the time I'd really appreciate any feedback on the accessibility of this site: http://www.cata.co.uk/_index.a­sp
4
2982
by: waltborders | last post by:
Hi, Because the blind are unable to use a mouse, keyboard navigation is key. A major difficulty is that not all windows forms controls are keyboard 'tab-able' or 'arrow-able' or have "tab order". The application is built and the next step is to create the custom JAWS (Freedom Scientific)screen reader script to read the application. The application uses the accessibility properties for controls provided by C#. JAWS reads properties...
5
3701
by: Wijaya Edward | last post by:
I tried to call pydoc from my Linux box. To my realization that it doesn't contain pydoc. I thought this module should be a default module. Can anybody suggest where can I find the module? I tried: $ easy_install pydoc
8
2043
by: cms-hispano.org | last post by:
i'm building a site about extreme accessibility, i.e.: how (and why) to get sites to become fully accessible, *beyond* W3C Web Accessibility Initiative guidelines. it's far from being completed (i just started it off!), so i'd very much appreciate any comment on the site/issue: www.accessibility.ws (fyi: i a non-commercial, personal research project) cheerio!
4
1464
by: Ron Adam | last post by:
This is for a new version of pydoc if I can get the class attributes sorted out. The module level attributes aren't too difficult to categorize. (I might be just too tired to see the obvious.) The original pydoc did this a somewhat round about way, so I would like to find a more direct method if possible. Where dir(obj) is used to get all attributes of a module or class. And
1
1316
by: Con | last post by:
Hi, I'm gettting a traceback when I attempt to read the MySQLdb docs after installation on Mac OS X 10.5.2: BEGIN TRACEBACK: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ python2.5/site.py", line 346, in __call__ return pydoc.help(*args, **kwds)
0
8946
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main usage, and What is the difference between ONU and Router. Let’s take a closer look ! Part I. Meaning of...
0
8774
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
9447
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
9307
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
6735
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
6031
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4809
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
3261
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
2721
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.