Frustrations with NVDA-support

Because NVDA is free software, we do not have the resources to provide free, direct technical support to users. Therefore, the NVDA-support email list was set up as "a place where users of the NVDA screen reader are able to ask questions about how to use NVDA".

A common complaint about mailing lists like this is that they produce a lot of messages. Some users cannot (or do not wish to) handle this high email traffic and therefore end up unsubscribing from the list fairly quickly, thus limiting its usefulness. Instead, users contact us directly or are driven away from the project. When directed to the tracker and email lists, one user who contacted me directly complained about having to "sign up to a thousand lists".

To combat this, we decided to selectively moderate the list, as full moderation is too time consuming. Users who broke (or bordered on breaking) list rules or otherwise had the potential to generate a lot of unnecessary traffic were moderated. Any post from those users that was irrelevant, unnecessary or might start such a thread was rejected.

Unfortunately, several users have been unhappy with or even outright offended by this. Today in particular, I rejected a post from a user (previously moderated for an off-topic post) which, while intended to be helpful, provided an incorrect (or at least very indirect) answer which I believed would cause more questions than it answered. No accusation was made, but this user took this very personally and made it clear that he would no longer support the project in any way.

Another common gripe is that users are often told to read the documentation when they ask questions. If it seems that a user hasn't even tried to read the documentation before asking a question, I do not think this is unwarranted. If they've at least tried and don't understand, this is a different matter entirely. If they don't wish to make the effort to at least try to understand the documentation, they should not expect free support.

It seems I can't win. I tried to do what I thought best for the NVDA community in limiting the traffic on the list so more users would be encouraged to use it. As a result, I'm accused of being unfair, draconian and ungrateful. Therefore, I've disabled all moderation on the list and I am withdrawing from the list myself for a while. I am done with support for now.

Inexcusable Inaccessibility: APC Goalball Coverage

Australia are currently hosting the IBSA Africa Oceania Goalball Regional Championships, where both men's and women's teams are playing to qualify for the London 2012 Paralympic Games. Go Australia! :) They've provided a live internet stream with commentary, which is fantastic. Unfortunately, the Flash video player they're using is completely inaccessible to screen reader users. (Technically, it uses windowless Flash, which is not accessible.) Worse, the page doesn't even play the video automatically when it opens, which means you have no choice but to use the video player controls. Allow me to emphasise the absolute, inexcusable absurdity of this situation: they are broadcasting a sport for the blind, but the broadcast is inaccessible to blind people.

Digging through their code, it's not too hard to work around this. I was able to come up with a link which enables auto-play, so at least it begins playing automatically, avoiding the need to use the video player controls. However, the average user would not have been able to do this themselves.

Ideally, everything should be accessible to all users. Sometimes, for whatever reasons (valid or not), this isn't possible. When it isn't, at least consider your target audience. If, for example, a large number of them are probably going to be blind, it might just make sense to implement and test accessibility for screen reader users. The APC are using an external service to provide the stream. Regardless, they should have tested and resolved the problem somehow or, at the very least, openly provided a work around such as the one I gave above.

It's worth noting that Adobe clearly document that windowless (transparent or opaque) Flash is inaccessible.

My quest for a New Mobile Phone

Disclaimer: This is primarily based on my own personal experience. Also, this all happened last year, so some of the finer details are a bit vague now.

Early last year, my trusty 6 year old Nokia 6600 was finally starting to die and I decided it was past time to move on. (Amusingly, that phone even survived being accidentally dunked in a glass of wine.) My aim was to satisfy all of my portable technology needs with one device, including phone, email, web browser, audio player (standard 3.5 mm audio socket essential), synchronisable calendar, synchronisable contact manager, note taker, ebook reader and portable file storage. And so the quest began.

Making the (First) Choice


My ideal mobile platform was Android. Aside from satisfying all of my needs, it is an open, modern platform. Unfortunately, although I seriously entertained the idea, a great deal of research and playing with the Android emulator led me to realise that Android's accessibility was at an unacceptably poor state for me.

I considered the iPhone. I've written about the iPhone's out-of-the-box accessibility to blind people before and have played with an iPhone several times since. Although I was pretty impressed, especially by the fact that VoiceOver comes out-of-the-box, there were two major problems with the iPhone for me. First, I dislike the closed nature of the iPhone environment, commonly known as the "walled garden" or "do things Apple's way or not at all". Aside from the principle (you all know I'm a big advocate for openness), I would be unable to play ogg vorbis (my audio format of choice) in iPod, I would have to transfer music and files with iTunes (which I detest), I couldn't use it as a portable file storage device, and I would be limited to apps that Apple permitted (unless I wanted to jailbreak). Second, I wanted a device with a physical keyboard. In the end, I decided against the iPhone.

I briefly considered another Symbian Series 60 phone. However, based on past experience (both mine and others'), I didn't think I would be able to play audio and use the screen reader simultaneously, which immediately disqualified it for me, although I've since been informed that is no longer true on some newer phones. I also feel it is a dying platform. There are probably some other reasons i discounted it, but i can't remember them now. If nothing else, I wasn't entirely happy with it and wanted a change.

Finally, I settled on Windows Mobile, specifically the Sony Ericsson Xperia X1, with Mobile Speak. I guess Windows Mobile is a dying platform too, but at the time, I felt it was perhaps less so and provided more functionality for me. While the operating system itself isn't open, you can develop and install apps as you please without being restricted to a single app store. There are several ogg vorbis players for Windows Mobile. I also had the option of buying Mobile Geo for navigation if I wanted to later. I was warned by someone who played with an older phone that Mobile Speak on Windows Mobile was fairly unresponsive, but unable to test this myself, I hoped that it might be better with a less resource intensive voice such as Fonix and/or a newer phone or that I'd get used to it.

Frustration, Pain and Misery


A bit less than $800 later, I got my new phone and Mobile Speak in June. I expected and accepted that it would take me some time to get used to it. I loved finally being able to access the internet from my phone and play audio through proper stereo headphones. However, despite this, the next few months were just downright painful and frequently induced rage bordering on violence. I often had the urge to throw my new phone across the room several times a day.

Primarily, this was due to Mobile Speak. I found it to be hideously unresponsive, unstable, unreliable, inconsistent and otherwise buggy as all hell.
  • The unresponsiveness proved to be unacceptable for me, often taking around half a second to respond to input and events, even using Fonix. Aside from the general inefficiency this caused, this made reading text incredibly tedious, and despite the physical keyboard, typing was painful due to the slow response to backspace and cursor keys.
  • Mobile Speak crashed or froze far too often and there was no way to resurrect it without restarting the phone.
  • In Internet Explorer, working with form controls was extremely inconsistent and unreliable, especially multi-line editable text fields. Quick navigation (moving by heading, etc.) was very slow and failed to work altogether in many cases. On my phone, Google services (including Google Search, even the mobile version, of all things!) refused to render at all.
  • I encountered problems when reading email as well. Sometimes, Mobile Speak wouldn't render emails. Others, it wouldn't let me navigate to the headers of the email, which is essential if you want to download the rest of a message that hasn't been fully downloaded.
  • Reading text in Word Mobile was even slower than everywhere else, which made reading ebooks infeasible.
  • Braille display scrolling is either broken or unintuitive. On my 40 cell display, Mobile Speak only seemed to scroll half the display and I couldn't find a way to change this.
  • Definitely quite a few other bugs I can't remember all of the details about...
It's worth noting that I'm not saying that this is all entirely Mobile Speak's fault. I suspect Windows Mobile and other applications may play a part in this dodginess.

I had two other major gripes with Mobile Speak.
  • Despite years of experience with screen readers, I found the Mobile Speak commands, especially the touch interface, to be tedious and difficult to learn. The touch interface is inherently slow to use because you need to wait after certain taps to avoid them being construed as double or triple taps.
  • Mobile Speak's phone number licensing model was a major annoyance for me when I went overseas for a few days. Mobile Speak allows you to use it with a SIM card with a different number for 12 hours, but you have to reinsert the original SIM card after 12 hours if you want Mobile Speak to continue functioning as a licensed copy. Also, I seem to recall that this also applied if the phone was in airplane mode.


There were other things that irritated me about my phone and its applications.
  • I found Windows Mobile in general to be very sluggish. Even something as fundamental to a phone as dialling on the phone keypad or adjusting the volume was incredibly laggy, sometimes taking several seconds to respond to key presses.
  • Far too many apps, including Google Maps and both of the free ogg vorbis players I tried, had significant accessibility problems.
  • Windows Media doesn't have support for bookmarking, which made reading audio books infeasible. There was a paid app that provided this and other functionality i wanted, but i wasn't willing to pay for it in case I discovered it too had major accessibility problems.
  • Windows Mobile doesn't have enough levels on its volume control.
  • If the phone is switched to silent, all audio is silenced, including Mobile Speak.
  • Internet Explorer doesn't support tabbed browsing!
  • Windows Mobile only supports one Exchange Active Sync account, which meant I couldn't maintain separate personal and work calendars.
  • More...


The Snapping Point


In the end, after less than 6 months, I just couldn't take it any more. I tried to learn to live with it for at least a couple of years, as I'd already spent so much money on it, but it was truly unbearable. It's worth noting that a close friend of mine had a very similar experience with Windows Mobile and also gave up in equivalent disgust around the same time. It particularly angers me that I paid $315 for a piece of software as buggy as Mobile Speak. I started playing with Jen's iPhone a bit more, and finally, I gave in and got my own.

The iPhone: Peace at Last


For reasons I mentioned above, I felt like I was going to the dark side when I made the decision to switch to the iPhone. Among other things, it's a bit hypocritical of me, given my belief in and advocacy for openness. Nevertheless, I have not looked back once since I got it. It has truly changed my life.

The in-built accessibility of the iPhone is amazing. I strongly believe that accessibility should not incur an extra cost for the user and Apple have done just that. VoiceOver is very responsive. Usage is fairly intuitive. All of the in-built apps and the majority of third party apps are accessible. Once you get used to it and start to remember where things are on the screen, navigating with the touch screen becomes incredibly efficient. The support for braille displays is excellent; I can see this being very useful next time I need to give a presentation. The triple-click home feature means that I can even toggle VoiceOver on Jen's phone when needed, which has been really useful for us when she is driving and needs me to read directions.

I still hate iTunes, but thankfully, I rarely have to use it. I manage music and other audio on my phone using the iPod manager component for my audio player, foobar2000, which is excellent and even transcodes files in unsupported formats on the fly. The iPod app is great, supporting gapless playback for music and automatic bookmarks for audio books and podcasts.

Other highlights:
  • Very nice email and web browsing experience.
  • Push notifications for mail, Twitter, Facebook and instant messaging.
  • Multiple calendars.
  • Skype on my phone, which is far nicer than being tied to my computer when on a Skype call.
  • Voice control, which works well most of the time.
  • Smooth reading of ebooks using iBooks.


Resultant to all of this, I find I spend far less time in front of my computer outside of work hours. Also, when I'm away from home, even on holiday for a week, I often just take my phone. Previously, I had to take my notebook almost everywhere.

Like all things, the iPhone isn't perfect. I still dislike the walled garden, and I have to live with transcoded audio and can't use my iPhone as a USB storage device because of it. I am definitely slower at typing on the iPhone than I was on the numeric keypad on my old Nokia 6600, although perhaps surprisingly, I'm probably faster on the iPhone than I was on the Xperia X1. There are definitely bugs, some of which I encounter on a daily basis and are very annoying.

Even so, I love the iPhone. I'm willing to make some sacrifices, and I can live with bugs that are at least consistent and easy enough to work around. On the rare occasions that VoiceOver crashes, I can easily restart it with a triple click of the Home button. I wish I'd gone for the iPhone in the first place and not wasted so much money on the Windows Mobile solution, but ah well, live and learn.

The Poor State of Android Accessibility

The Android mobile platform really excites me. It is open (which cannot be said of the iPhone) and is incredibly successful in many respects. I would almost certainly choose an Android phone... except for the poor state of Android accessibility.

Note: I will primarily discuss access for blind users here, since that is what I am most familiar with. However, some of this applies to other disabilities as well.

In the Beginning


In the beginning, there was no accessibility whatsoever in Android. It would have made sense to design it from the start with accessibility in mind, which would have made it much easier, but as is sadly so often the case, this wasn't done. Nevertheless, many other platforms have managed to recover from this oversight, some with great success.

Eyes-Free Project


Then came the Eyes-Free Project, which created a suite of self-voicing applications to enable blind users to use many functions of the phone. Requiring blind users to use these special applications limits the functionality they can access and completely isolates them from the experience of other users. This is just a small step away from a device designed only for blind users. I guess this is better than nothing, but in the long-term, this is unacceptable.

Integrated Accessibility API and Services


With the release of Android 1.6 came an accessibility API integrated into the core of Android, as well as a screen reader (Talkback) and other accessibility services. A developer outside Google also began working on a screen reader called Spiel. This meant that blind users could now access standard Android applications just like everyone else.

Unfortunately, the Android accessibility API is severely limited. All it can do is send events when something notable happens in the user interface. An accessibility service such as a screen reader can query these events for specific information (such as the text of an object which has been activated), but no other interaction or queries are possible. This means it isn't possible to retrieve information about other objects on the screen unless they are activated, which makes screen review impossible among other things. Even the now very dated Microsoft Active Accessibility (the core accessibility API used in Windows), with its many limitations and flaws, allows you to explore, query and interact with objects.

Inability to Globally Intercept Input


In addition, it is not possible for an accessibility service to globally intercept presses on the keyboard or touch screen. Not only does this mean that an accessibility service cannot provide keyboard/touch screen commands for screen review, silencing speech, changing settings, etc., but it also makes touch screen accessibility for blind users impossible. A blind user needs to be able to explore the touch screen without unintentionally activating controls, which can't be done unless the screen reader can provide special handling of the touch screen.

Inaccessible Web Rendering Engine


The web rendering engine used in Android is inaccessible. In fact, it's probably impossible to make it accessible at present due to Android's severely limited accessibility framework, as a user needs to be able to explore all objects on a web page. This means that the in-built web browser, email client and most other applications that display web content are inaccessible. This is totally unacceptable for a modern smart phone.

IDEAL Apps4Android's Accessible Email Client and Web Browser


IDEAL Apps4Android released both an accessible email client and web browser. The accessibility enhancements to the K9 email client (on which their application is based) have since been incorporated into K9 itself, which is fantastic. However, access to the web still requires a separate "accessible" web browser. While other developers can also integrate this web accessibility support into their applications, it is essentially a set of self-voicing scripts which need to be embedded in the application. This is rather inelegant and is very much "bolt-on accessibility" instead of accessibility being integrated into the web rendering engine itself. This isn't to criticise IDEAL: they did the best they could given the limitations of the Android accessibility API and should be commended. Nevertheless, it is an unsatisfactory situation.

More "Accessible" Apps


There are quite a few other applications aside from those mentioned above that have been designed specifically as "accessible" applications, again isolating disabled users from the normal applications used by everyone else. Again, this isolating redundancy is largely due to Android's severely limited accessibility framework.

Solution


Unfortunately, even though Android is open source, solving this problem is rather difficult for people outside the core Android development team because it will require changes to the core of Android. The current accessibility framework needs to be significantly enhanced or perhaps even redesigned, and core applications need to take advantage of this improved framework.

Conclusion


While significant headway has been made concerning accessibility in Android 1.6 and beyond, the situation is far from satisfactory. Android is usable by blind users now, but it is certainly not optimal or straightforward. In addition, the implementation is poorly designed and inelegant. This situation is only going to get messier until this problem is solved.

I find it extremely frustrating that Android accessibility is in such a poor state. It seems that Google learnt nothing from the accessibility lessons of the past. This mess could have been avoided if the accessibility framework had been carefully designed, rather than the half-done job we have now. Good, thorough design is one of the reasons that iPhone accessibility is so brilliant and "just works".

Object navigation: why is it okay for VoiceOver but not NVDA?

Since VoiceOver came to Mac OS X, many screen reader users have joyfully sung its praise - and there's certainly a lot to praise. Some who were previously Windows users have taken the plunge and moved to Mac OS X completely, never looking back. Others use both operating systems or perhaps dream of no longer being dependent on Windows for certain software. This is all fantastic, but as an NVDA developer, there are also aspects of this that frustrate and exasperate me.

Right from the start, NVDA has used "object navigation" in order to review the user interface, particularly to provide access to elements which can't be otherwise accessed using the keyboard. In short, every element in the user interface is generally represented by an object. These objects exist in a hierarchy or tree of objects. Object navigation allows the user to explore this hierarchy by moving between objects and then descending/entering/interacting with objects of interest. For example, entering a list would allow you to see its list items. This is in contrast to the "flat review" (or "screen review") method that Windows screen readers have traditionally used for review, whereby the user can review the content of the screen in a flat fashion from top to bottom, left to right, similar to the way a simple text document would be read. While this might seem more logical at first, it's worth remembering that a sighted user doesn't necessarily read the screen in this ordered fashion. Instead, they are more likely to focus on specific elements of interest, which in some ways is more akin to object navigation. As always, both methods have advantages and disadvantages.

On the Mac, there is only object navigation; there is no concept of flat review of the entire screen using the keyboard. (In the latest version of Mac OS X, you can explore the screen in this fashion using the trackpad. However, NVDA's tracking and reading of text under the mouse allows you to do something similar.) It seems that Mac users are quite happy with this approach, and yet we are constantly bombarded by NVDA users with complaints about the difficulty of object navigation and requests for flat review functionality in NVDA.

So, here's my question for those of you who are either full or partial Mac converts. Why is object navigation quite acceptable on the Mac, but yet not acceptable in Windows? It sometimes seems to me that some of the same users who frequently sing the praises of VoiceOver then turn and complain about the lack of flat review in NVDA. Perhaps I'm wrong and those users who want flat review would not be comfortable using VoiceOver. Even so, it sometimes seems that people are willing to accept a different approach on a completely new platform, yet are unwilling to accept it in a newer product on an existing platform. It's certainly true that NVDA's object navigation needs to be cleaned up a bit (removing extraneous objects, etc.), but I don't think this is the whole story.

ON the web, this gets even more interesting. Due to the non-linear fashion of web pages, Windows screen readers have had to provide their own "flat" representation of web pages. They then override the cursor and other keys to navigate within that representation. Aside from the technical issues associated with this, working with interactive controls on web forms requires a separate mode of interaction (named forms mode, focus mode, etc.) where the screen reader lets the user interact directly with the control by allowing cursor and other keys to pass straight through to the control. (Some screen readers can automatically switch to this mode when appropriate, but there are still two modes.) This is becoming more of a challenge with the ever growing number of web applications, where more keys are required to work with the application. Object navigation solves this problem because the cursor and other application keys are never overridden by the screen reader, so the screen reader doesn't interfere with the functionality of web applications.

Again, VoiceOver uses object navigation on the web and VoiceOver users appear to be quite happy with this. NVDA currently does what other Windows screen readers do, but again, would you be happy if we abandoned this approach in favour of object navigation? It would certainly solve this web application problem once and for all. I get the impression that NVDA users would be unhappy if we changed this.

I want to hear your thoughts. Comment here, Twitter or send me an email.

Tired of Incompetence/Bad Service

So we're in the process of finalising the purchase of our house, which is all very exciting. However, the administrivia is quite the opposite, as illustrated in the following series of events:
  1. A few weeks ago: Our mortgage broker sent our First Home Owners grant documents to St George, our bank. Our mortgage broker then called to confirm that they had been received.
  2. A couple of weeks ago: I called NRMA (our insurance company) to ask them to raise the building insurance amount to the amount specified by the bank. (My original figure was obviously an underestimate.) They told me that this was all done, no worries.
  3. Early last week: Jen sent the insurance documents to St George. She also emailed our solicitor with a request to settle a few days earlier.
  4. Last Friday: No contact yet from our solicitor, so I called his office to confirm that the request was received and actioned. He's not in the office; apparently, he'll call me back on Monday morning.
  5. Monday afternoon: No call from our solicitor. I called him late afternoon. I noted that he mustn't be receiving our calls and emails. He noteably neglects to mention the email, but was surprised about the call on Friday. He told me that St George apparently haven't received our insurance documents (see 1), nor our First Home Owners Grant documents (see 3).
  6. Tuesday: Jen had to drive to visit our mortgage broker to sign new First Home Owners Grant documents.
  7. Wednesday morning: Jen called NRMA to ask them to fax our updated insurance documents to St George. She discovered that apparently, our record states the old insurance amount instead of the updated amount (see 2). Our solicitor called me to tell me that the received fax was missing some information. Jen subsequently called NRMA and they said that the information was correct in the records but that the fax was somehow incorrectly generated.

All is now finally sorted, but.... aaaaaaaaarrrrrrrrrrrrggggg!

The Stupidity of Forced Password Changes

Changing passwords on a regular basis is supposed to increase security. If someone somehow gets hold of a password you used some time ago (perhaps they took a few months to get through their camera footage at the local wireless hotspot?), hopefully, it won't matter. Centrelink (the organisation responsible for social security services in Australia) enforces password changes after a defined period; I think it's every three months. Unfortunately, I tend to forget my new passwords when I have to change them like this. I believe I pick relatively strong passwords, but as a result, it sometimes takes me a while to memorise them. You can do silly things like changing one character, but I sometimes forget which character I changed. :) I would argue that enforcing password changes like this actually encourages insecure, stupid behaviour like writing them down, because people know they're going to forget their new password!