accessibilityscreen-readers

console apps and screen readers


For the reasons that I find hard to control I'm stuck with gui libs that do not use os controls for rendering. Is providing a console version of an app a good way to make the app accessible to users who have to resort to screen readers/braille displays?


Solution

  • This is basically the same question as "My website isn't accessible, should I make an alternate text-only version?". And the answer is no, don't. It's far better to adapt your website and make it accessible, by respecting WCAG, rather than making two distinct versions.

    In fact, having to maintain two versions is never very good, because you are going to forget the alternate one sooner or later. A lack of time, of budget, of knowledge, of motivation, and voilĂ , it's out of sync, differences are increasing, and then it's definitely gone.

    Making the parralel with websites and the native GUI world, there indeed are GUI toolkits using native OS controls and/or having a decent screen reader accessibility support. For example, for Windows, there are wxWidgets, QT, Java SWT, among others. They aren't perfect, everything isn't fully accessible, differences exists between platforms, but they are well recognized, well maintained, since many years, and so, they should be your first choice, rather than trying to make a sort of "text-only version".

    Another trendy alternative to traditional GUI toolkits is to use embedded web browsers. I can mention the well known Elektron and nw.js. Advantage, you make your app in HTML, CSS and JavaScript, and it will work almost everywhere. Most things will be accessible if you follow WCAG. Disadvantage, using a web app with a screen reader isn't as fluid and natural as with a native app, and is often perceived as being a lot more complicated, less practical, and much less accessible. That being said, you are probably going to make a more accessible app by using bad HTML than by using a bad GUI toolkit. Otherwise said, accessibility of a native app can by anywhere between 0 and 100%, while accessibility of an Elektron/NW.js app can be between 25 and 75%; you will certainly avoid total catastrophy, but also avoid total perfection.


    Now, to answer to your actual question about console apps, in fact, from screen reader accessibility point of view, a console app isn't necessarily better or worse than a GUI app. It depends on what you exactly mean by console app.

    Simple console apps are in principle fully accessible, but provided that the OS itself provide an accessible terminal. This may not be the case everywhere, even if, as far as I know, it's more or less always the case.

    However, the definition of simple is very restrictive. We can consider that a console app is simple when tehre's only simple text output, and simple text input. In other words, you type a command, and you get the result. That's all. No color, no cursor jump or backward move, no special decoration characters, no ASCII art, no trial to create a pseudo-GUI by combining them all with a library like curse.

    Even creating a menu where you can select options by pressing arrow keys can quickly become problematic in a console window. The screen reader may not well follow the cursor, detect changes, and determine easily what is to be read again or not, and on your side, you have no real way to help it finding that out.

    There is no role, no ARIA, no expicit controls and labels, live zone, selection indication, nothing. The console is in fact just a grid of cells where each cell displays a given character with a given color. So, it works well only when it's simple, very simple, and reviewing command of the screen reader can also only be very simple: read character, word, or line, that's all.

    Note that screen reader are trying hard to do their best with the limited information they can have in console apps. I'm blind, and so I can tell you that, after all, results aren't that bad.

    At the end, it's more or less usable, yes, but better than a state of the art GUI app with good accessibility support? Maybe not. It's going to depend a lot also on personal preferences. I'm not going to be the advocate of the evil.

    In conclusion, your investment to create a console app with the objective to be more accessible is quite big, for quite an uncertain success. You are going to much better spend your time getting to know good GUI toolkits with good accessibility support.