Philosophie de la ligne de commande

# Programmes en ligne de commande pour non-voyants

#### par Karl Dahlke

## Introduction

Les traitements de texte, navigateurs Internet, clients de messagerie

présentent généralement l'information en deux dimensions, étalant le texte et les icônes sur l'écran. Cette interface est remarquablement efficace, grâce aux capacités de traitement parallèle de la rétine et du cortex visuel. En fait, cette interface écran/cerveau est si efficace qu'il n'est pas nécessaire de compter les bits au fur et à mesure qu'ils arrivent. Les webmestres amateurs et développeurs de logiciels professionnels exploitent régulièrement cette grande bande passante, laquelle est presque "trop bon marché pour être mesurable". Les pages Web présentent souvent des tonnes d'informations non pertinentes sous la forme de liens extérieurs, de boutons et d'icônes rarement utilisés. Les applications soigneusement construites sont mieux organisées, mais elles emploient toujours les barres d'outils et éléments graphiques qui encombrent l'écran. Ces éléments accessoires sont très vite ignorés parce que vos yeux ne sélectionnent que les éléments intéressants. Cependant, un utilisateur aveugle ne peut pas assimiler ces données en un clin d'œil, et séparer le bon grain de l'ivraie. Il est contraint de lire chaque mot sur la page, au moyen d'un synthétiseur vocal ou d'un afficheur braille. Ces adaptateurs sont imparfaits : au mieux, ils transforment le flux d'information à grande vitesse en reptation agonisante. Par analogie, c'est comme si on remplaçait le haut-débit par une banale connexion RTC, transformant ainsi une riche expérience multimédia en exercice futile et frustrant. Existe-t-il en pratique une alternative ? Je crois que c'est possible, mais certaines applications critiques doivent être réécrites à partir de zéro. À cette fin, j'ai développé un intégré navigateur / éditeur appelé edbrowse, qui est à 100% basé texte. Les sorties restent limitées et considérées comme un bien précieux qui passe dans le chenal étroit du synthétiseur vocal ou de la plage braille. Edbrowse donne à l'utilisateur aveugle exactement ce qu'il lui demande, ni plus, ni moins. Les utilisateurs voyants peuvent également trouver ses caractéristiques uniques utiles dans certaines situations, décrites ci-dessous. Ce programme open source est dans le à domaine public, et il est inclus dans plusieurs distributions Linux. Une version précédente, en Perl, avec des fonctionnalités limitées, fonctionne pratiquement sur n'importe quel ordinateur.

Ceci a des implications pour le développement logiciel. Lorsqu'un programme ou utilitaire est fondé sur le web, c'est-à-dire qu'il est accessible via un navigateur Internet, avec les quelques inévitables limitations imposées par html et javascript, il est facilement adaptable à un large éventail de handicaps. Chaque utilisateur utilise le navigateur Web répondant à ses besoins et préférences. L'interface est automatiquement adaptée à la personne - sans programmation supplémentaire. La sémantique des données, et sa représentation à l'écran, ou par un synthétiseur vocal, ou sur un afficheur braille, ont été nettement séparés. Bien sûr, cette approche ne fonctionne pas pour toutes les applications (un utilisateur ne peut jouer à Flight Simulator), mais peut être employée dans de nombreuses situations. Même une boîte à outils, tels que Microsoft VB, pourrait être améliorée de manière à créer des pages Web interactives, au lieu d'utiliser l'écran et la souris. Si ce projet s'avère faisable, une grande variété d'applications VB communes seront accessibles en permanence. La clé, c'est le client accessible, en l'occurrence un navigateur Internet en ligne de commande, combiné avec une suite d'applications qui vont utiliser ces clients adaptés comme frontaux.

Les avantages de cette approche ne se limitent pas aux aveugles. Quelqu'un qui ne distinguerait pas les couleurs pourrait utiliser son navigateur pour changer la couleur du fond, du texte, des rubriques et des liens hypertextes pour améliorer le contraste, tandis qu'un utilisateur mal-voyant pourrait augmenter la taille des polices. Les utilisateurs handicapés, et les gens qui préfèrent tout simplement leur texte dans une police particulière, espèrent une révolution logicielle, laquelle limiterait une application à ses fonctionnalités, laissant les détails de l'interface non précisés, à déterminer par les désirs et besoins de l'individu.

## Les débuts des interfaces homme-machine

Aujourd'hui, les professionnels de l'informatique, avec leurs ordinateurs portables à la main, peuvent difficilement imaginer les grossières interfaces que les générations antérieures ont dû endurer. Lorsque j'étais étudiant à Michigan State University, j'ai appris comment utiliser une machine à commutateurs et un lecteur de carte, qui était la manière de "dialoguer" avec l'ordinateur. Chaque carte représentait une ligne de texte, et une pile de plusieurs milliers de cartes pouvait contenir le code source de votre projet de maîtrise. Il n'y avait pas de serveur de fichiers sur le campus, vous conserviez votre boîte de cartes avec vous en permanence. Et si jamais vous laissiez tomber votre boîte de cartes dans la neige, entre le dortoir et le centre de calcul, en janvier, vous arriviez dans un monde mauvais. Même un renversement accidentel sur le sol était source de consternation, puisqu'il fallait réordonner soigneusement vos cartes. Apparemment, ce scénario n'était pas rare, ce qui incitait plus d'un étudiant à numéroter leurs cartes, dans les colonnes de droite - ignorées par l'ordinateur. Certains laissaient des blancs dans ces chiffres, c'est-à-dire comptaient par dizaines, de façon à pouvoir insérer de nouvelles lignes de code en cas de besoin. Mon colocataire, qui ne se donnait pas la peine de numéroter ses cartes, les transportait toujours dans une boîte en carton scellée. Ce qui donnait lieu à quelques plaisanteries de ma part. "Arrête de chanter sous la douche à 6 heures du matin, ou je m'en vais disperser ta boîte de cartes sur le plancher."

Une fois l'étudiant arrivé au centre de calcul avec ses cartes en main, il pouvait effectuer quelques corrections de dernière minute sur son tapis, puis fournissait les cartes, au rythme de dix par seconde, au lecteur de carte. Ceci créait un "traitement par lots", aboutissant à une impression quelques 20 minutes plus tard. Les temps d'attente étaient très variables, en fonction de la charge, ce qui explique pourquoi de nombreux étudiants travaillaient la nuit. Ayant replacé ses cartes soigneusement dans leur boîte, notre étudiant fatigué attendait avec impatience le résultat de ses travaux. Le programme a-t-il été compilé ? S'est-il exécuté ? Y a-t-il une erreur de logique? Peut-il utiliser les résultats imprimés pour se faire noter, ou bien reste-t-il encore du travail à faire? S'il faut modifier quelque chose, il faudra revenir à la machine à poinçonner, marteler de nouvelles cartes, les mettre en position, et revenir à pied vers le lecteur de carte pour une autre séance. La plus petite erreur de frappe représentait des heures de travail. Il n'était pas rare de voir des étudiants hagards trébuchant dans le dortoir à 2 ou 3 heures du matin, boîte à cartes sous un bras et pile d'imprimés sous l'autre.

Imaginez ma joie quand l'Université a installé des téléscripteurs interactifs ! Ceux-ci ressemblent à des machines à écrire électriques, toutes les frappes au clavier étant transmises directement à l'ordinateur central. Lorsque vous enfoncez la touche Entrée, l'ordinateur répond, puis attend votre prochaine commande. L'interface est devenue un dialogue, à 110 bits par seconde, ou 300 bits par seconde, sur l'un des nouveaux modèles. La totalité de la session est retranscrite sur papier; vos commandes et les réponses de l'ordinateur. Ces machines sont toutes oubliées, à l'exception des lettres tty, symbole de téléscripteur. Le logiciel qui facilite la communication entre vous et votre ordinateur, par l'intermédiaire du clavier et l'écran, est toujours appelé un tty aujourd'hui. Tapez "tty" dans tout ordinateur Unix ou Linux, et il vous dira quel pilote tty vous utilisez, par exemple, /dev/tty1 sur la console 1. Une grosse machine Unix peut avoir des centaines de terminaux tty, supportant des centaines d'utilisateurs simultanés.

Le vacarme du téléscripteur était une gêne pour la plupart, mais il a été une bénédiction pour moi. Je savais que l'ordinateur avait répondu, et la nature de la réponse. Si un lecteur bénévole n'était pas disponible, et si je n'avais pas trop à faire chez moi, je pouvais me connecter sur le système, taper mon programme dans l'éditeur, compiler le programme, et lancer l'exécutable, me fondant uniquement sur les clics du téléscripteur. Après que mon colocataire ai lu les sorties imprimées et vérifié les résultats, j'entrais le tout dans mon bloc-notes pour le faire noter le lendemain. Bien que je possède aujourd'hui un synthétiseur vocal, cette rétroaction audio, qui était une caractéristique non prévue du téléscripteur mécanique, me manque encore. À cette fin, j'ai modifié le pilote Linux tty pour créer des sons similaires, en utilisant le haut-parleur du PC. Lorsque l'ordinateur envoie le texte à l'écran, le doux cliquetis signale un caractère qui n'est pas un espace, tandis qu'un son descendant indique une nouvelle ligne, comme si la tête d'impression revenait à gauche. Ces modules sont disponibles dans le répertoire "drivers" du projet ci-dessous :

git clone https://github.com/eklhad/acsint

Les gazouillis et clics sont discrets, et facilement ignorés par mes proches; mais ils forment une part importante de mon interface audio. Comme les systèmes d'antan, mon tty me dit quand l'ordinateur a répondu à mes commandes, avec la quantité et le format de cette réponse, avant même que le synthétiseur ait dit un mot.

Au cours des années suivantes, les universités du pays ont remplacé les téléscripteurs papier par des terminaux cathodiques, également connus sous le nom de CRT. Les arbres ont partout soupiré de soulagement, et cependant, l'interface est restée la même. Un utilisateur tape une commande, et l'ordinateur répond à la ligne suivante. Le dialogue continue.

## Les éditeurs et traitements de textes d'antan

Lorsque j'ai commencé à travailler chez AT & T Bell Labs, j'ai appris à utiliser l'éditeur de texte standard sous Unix, tout simplement appelé ed. C'est un programme en ligne de commande, commme c'était la règle à l'époque. Si vous voulez voir la 7e ligne d'un fichier, tapez 7 et frappez la touche entrée. Pour trouver la ligne contenant la chaîne de caractères "xyz", tapez /xyz/. Les lignes peuvent être modifiées, supprimées, déplacées ou copiées en utilisant ce programme, mais vous ne voyez qu'une ligne à la fois. En outre, ed est un simple éditeur de texte, ce n'est pas un traitement de texte. Des outils comme nroff et troff ont été développés pour transformer un texte en page formatée. Par exemple, .PP indique un nouveau paragraphe, .SH indique un titre de section, et ainsi de suite. Aujourd'hui, les pages de manuel en ligne sont toujours écrites dans ce langage balisé. Tapez «man ls» sous Linux, et nroff s'exécute en arrière-plan.

Bien que la combinaison de ed et nroff soit primitive selon les normes d'aujourd'hui, c'était parfait pour moi. J'ai utilisé ed pour créer des documents, insérant des balises de mise en forme le cas échéant, et les pages étaient comparables à celles créées par mes collègues voyants, contraints d'utiliser les mêmes outils texte de base. Inutile de dire que cela n'a pas été toléré très longtemps. Des éditeurs écran tels que vi et emacs sont rapidement apparus, suivis de traitements de texte tels que Word Perfect et MS Word. Pour la première fois, vous pouviez voir à quoi ressemblait votre document avant de l'envoyer à l'imprimante. Une fois de plus, les arbres à travers le monde ont obtenu un sursis, et tous ceux qui ont touché un ordinateur sont devenus plus productifs - tout le monde, sauf moi. Bien sûr, les lecteurs d'écran m'ont permis de lire et de parcourir le texte, mais je traitais toujours les données de façon linéaire. Les avantages d'une recherche et d'un parcours bidimensionnels ne sont pas à ma portée, et penser le contraire, c'est vivre dans un état de dénégation. J'ai donc continué à utiliser ed et nroff pour créer des programmes et des documents pour Bell Labs. J'ai même porté ed sur l'IBM PC, ce qui m'a donné une interface linéaire identique, au travail et chez moi.

## Accès à l'Internet

Depuis presque 15 ans, l'Internet est composé de pages Web à base de texte, avec des directives de mise en forme embarquées semblables à nroff. Par exemple, <P> indique au navigateur qu'il doit commencer un nouveau paragraphe, tandis que <H2> représente un nouveau titre de section de niveau 2. Ils rappellent les directives .PP et. SH qui les ont précédées. Ainsi, l'Hyper Text Markup Language (HTML), la langue de l'Internet, est un descendant évolué de nroff. Ayant appris la plupart des codes html, j'ai pu développer quelque 1400 pages Web pour MathReference.com, sans rien utiliser d'autre qu'un éditeur de texte. Si je veux que ma page Web affiche Goodnight Moon en italique, puis Margaret Wise Brown en petits caractères sur la ligne suivante, je vais entrer les commandes suivantes :

<I>Goodnight Moon</I>
<br><font size=-1>by Margaret Wise Brown</font>

Une fois de plus, je suis minoritaire. La plupart des développeurs Web utilisent des outils de conception graphiques, comme MS FrontPage ou Dreamweaver, lesquels masquent les détails techniques de html. L'interface est similaire à celle d'un traitement de texte. Placez le texte et les images sur l'écran, comme vous souhaitez les voir apparaître sur votre site web, et l'outil génère le code html. Ceci fonctionne bien pour les autres, mais pour moi, les avantages d'une représentation en deux dimensions restent abstraits, alors que mon synthétiseur vocal erre dans l'écran, essayant de donner un sens à la page dans son ensemble. C'est comme regarder le monde à travers une paille.

Bien que je puisse écrire des pages Web en utilisant ed et quelques commandes de base en HTML, j'étais toujours incapable de surfer sur le net rapidement et efficacement. Mon éditeur de texte m'a permis de créer un site Web à partir de zéro, mais il n'y avait pas de navigateur en ligne de commande pour m'aider à lire les sites web créés par d'autres. La solution la plus proche était un programme appelé lynx, qui n'emploie pas d'icônes graphiques, et capable de fonctionner sans souris. En effet, beaucoup de personnes aveugles utilisent encore actuellement lynx. Cependant, lynx reste une application orientée écran, présentant l'information sur 25 lignes par 80 colonnes. J'espérais une interface en ligne de commande semblable à ed.

En 2003, j'ai commencé à écrire un programme appelé edbrowse, une combinaison navigateur/éditeur, avec une interface semblable à ed. Ce programme possède toutes les caractéristiques de ed, avec quelques nouvelles commandes comme, par exemple, «b» pour naviguer dans une page html, et «g» pour suivre un hyperlien référencé dans cette page web. On peut "éditer" www.ibm.com aussi facilement que l'on peut éditer un fichier local. Bien sûr, vous ne pouvez pas modifier le contenu de www.ibm.com, puisqu'il réside sur un autre ordinateur, mais vous pourrez le reformater en utilisant la commande de navigation, avancer dans le texte, ligne par ligne, ou rechercher un mot ou une phrase en utilisant les commandes de ed que vous connaissez déjà. Pour trouver l'hyperlien suivant, recherchez l'accolade gauche, qui indique un lien vers une autre page Web. De même, il est possible de parcourir les champs de saisie d'un formulaire à remplir en recherchant le signe moins. Avec de l'habitude, il est étonnamment facile de naviguer dans la plupart des pages Web et trouver l'information désirée. Par rapport à d'autres navigateurs, edbrowse demande davantage de saisies, sous forme de commandes à taper, et génère moins de sorties, ce qui est précisément le paradigme d'un canal unidimensionnel tel que la parole ou le braille.

## Administration système

Nous avons récemment acheté un Mac, et après avoir appris à me connecter dessus à partir de ma machine Linux, j'ai été en mesure d'effectuer toutes sortes de tâches d'administration de l'imprimante, ajout et configuration d'une nouvelle imprimante, impression de pages test, création de files d'attente avec des priorités, et suivi des travaux d'impression. Cela se fait habituellement à l'écran par le biais d'un utilitaire graphique d'impression, mais j'ai trouvé une autre manière. L'utilitaire d'impression est basé sur le web, donc toute personne disposant d'un navigateur peut accéder à l'imprimante via http://localhost:631. (Si vous avez un Mac, tapez cela dans votre navigateur et vous verrez ce que je veux dire.) Un important sous-système de l'ordinateur, avec un niveau modéré de complexité, a été rendu accessible à un large éventail d'utilisateurs handicapés, grâce à la puissance d'Internet. Lancez votre navigateur préféré, edbrowse, lynx ou firefox, et gérez vos travaux d'impression grâce à une interface optimisée pour vos besoins particuliers.

Un autre exemple de système de gestion basé sur le Web est le partage de fichiers, accessible par http://localhost:901 sur certains ordinateurs. En mode administration réseau, la plupart des routeurs commercialisés peuvent être configurés via html. J'espère que c'est le début d'une nouvelle tendance de l'administration système. Comptes et mots de passe, mise en réseau, pares-feu, utilitaires disque, et gestionnaire de tâches ne sont là que quelques exemples d'applications du monde réel pouvant et devant être basés sur le Web. Si les pages Web sont relativement simples dans leur contenu et le format, les ordinateurs deviennent plus accessibles, presque tout le temps. La plupart des gens pourraient accéder à ces fonctions avec le navigateur graphique livré avec l'ordinateur, et ils ne verraient pas la différence. Et pendant ce temps, je pourrais profiter de edbrowse, qui a été écrit spécifiquement pour mes besoins.

Au-delà, l'administration basée sur le Web permet de configurer l'ordinateur à distance. Si le pare-feu le permet, je peux accéder à l'imprimante sur votre système en tapant http://votremachine:631 dans mon navigateur. Il n'est pas nécessaire de se connecter à distance sur votre ordinateur et d'y lancer edbrowse, ce qui n'est pas toujours possible.

## Autres applications

Certaines applications ne peuvent être utilisées efficacement par le biais d'un navigateur, et edbrowse ne prétend pas être la solution universelle à l'accessibilité. Considérons Microsoft Excel, un tableur bien connu. Imaginez un utilitaire de conversion qui transforme un fichier xls en une page Web interactive, prête pour être manipulée par votre navigateur favori. Chaque cellule devient un champ de saisie dans un formulaire à remplir, et les cellules sont disposées en lignes et colonnes dans une table html. Lorsque les données sont modifiées, les formules javascript calculent les totaux et les moyennes, comme le fait normalement Excel. Ceci fonctionne bien pour de petites séries de données, mais aujourd'hui les feuilles de calcul peuvent contenir des centaines de colonnes et des milliers de lignes. Vos yeux se déplaceront facilement à la colonne 79, à la recherche de tendances dans les données, mais edbrowse ne peut pas faire cela. Les longues lignes sont tolérées, mais il n'y a pas de solution pratique pour accéder à la colonne 79. Vous ne pouvez pas non plus facilement repérer la colonne "paiement" associée à la ligne de la cliente «Marie Dubois». Soit edbrowse doit être complété avec de nouvelles fonctions "tableur", soit il faut développer une version linéaire d'Excel, avec de nouvelles commandes de localisation et de modification des cellules individuelles.

Cela est vrai pour n'importe quel programme où les mouvements oculaires (qui ne relèvent pas de l'interface écran) doivent être convertis en commandes et réponses : une voie entièrement nouvelle pour la version linéaire de la même application. Pensez à l'application comme une conversation entre le programme et l'utilisateur. Lorsque l'utilisateur ignore 95% de ce que le programme "dit", et sélectionne les 5% restants en déplaçant son regard, cette conversation doit fondamentalement changer pour devenir conviviale aux aveugles. La plupart des programmes écran mettent en œuvre ce type de conversation à méga sorties, c'est en fait le paradigme écran. Pour cette raison, les programmes orientés écran à haut débit doivent être repensés de fond en comble pour fonctionner efficacement en mode texte. En même temps, des programmes plus simples peuvent souvent être restructurés pour générer des pages html ou xml, ce qui donne à l'utilisateur le contrôle sur son interface grâce à des clients spécialisés.

## En arrière-plan

Bien que edbrowse a été conçu pour rendre l'Internet accessible aux personnes handicapées, il possède des caractéristiques uniques qui ont attiré l'attention des administrateurs et des développeurs Unix. La plupart des navigateurs supposent la présence d'un opérateur humain, pour lire l'écran et cliquer sur la souris. En revanche, edbrowse peut simplement lire une série de commandes à partir d'un fichier. En outre, edbrowse inclut un langage de script avec conditions logiques, boucles, et fonctions. Une tâche de fond, lancée chaque matin par l'ordinateur, peut vérifier le contenu de plusieurs pages Web et envoyer des e-mails à l'opérateur si certaines conditions sont remplies. En d'autres termes, edbrowse est bien adapté au traitement par lots, sans intervention humaine. En théorie, les mêmes tâches pourraient être accomplies par un script shell, en appelant wget, grep et autres, mais un script edbrowse autonome est plus facile à écrire et à maintenir. C'est pourquoi grml, un système conçu pour les administrateurs système, a été le premier à inclure edbrowse dans sa version standard. D'autres, comme Debian, et même Free BSD, offrent désormais edbrowse dans leurs distributions.

## Résumé

Même si edbrowse est devenu un outil utile pour les traitements par lots sur Internet, l'accent continue à être mis sur l'accessibilité. Coller un lecteur d'écran sur Chrome ou Edge est un bon début, mais cette mise sur un pied d'égalité reste douloureuse. Les personnes handicapées méritent mieux. L'éditeur, le navigateur, le client de messagerie et la feuille de calcul peuvent être beaucoup plus efficaces pour les aveugles, les sourds et aveugles, les handicapés moteur, si seulement nous prenions le temps de les réécrire en prenant en compte les besoins de l'utilisateur. Une fois ces applications critiques modifiées, d'autres utilitaires pourraient être modifiés pour tirer parti de ces clients, comme le montre l'émergence d'un ensemble d'outils basés sur le Web et les services. Ces efforts devraient être financés au niveau fédéral, mais malheureusement, ils n'ont eu que peu de soutien à ce jour de la part du gouvernement ou de l'industrie. Si tout le monde a accès aux ordinateurs, aux ordinateurs portables et à l'internet, nous en profitons tous. Sir Bert Massie, président de la commission pour les droits des handicapés, le dit mieux. «La vision globale doit être celle d'une société dans laquelle tout le monde (handicapés comme non handicapés) pourra s'épanouir et participer pleinement comme citoyens égaux."