Introduction : Une illusion d'accessibilité
Dans l'univers des développeurs, une idée reçue persiste : si une application fonctionne dans un terminal, elle est forcément accessible. L'absence de graphiques, de DOM complexe ou de toiles WebGL laisse croire que l'accessibilité est assurée par la simple présence de texte brut, facilement interprétable par un lecteur d'écran. En réalité, de nombreuses interfaces utilisateur textuelles modernes (TUI) se révèlent plus hostiles à l'accessibilité que les interfaces graphiques mal codées.
Distinction entre CLI et TUI
Pour saisir cette problématique, il est crucial de distinguer deux concepts souvent confondus : l'interface en ligne de commande (CLI) et l'interface utilisateur textuelle (TUI).
CLI : Le flux linéaire
Les CLI fonctionnent sur un modèle d'entrée/sortie standard (stdin/stdout). Tu tapes une commande, le système affiche le résultat en dessous, et le curseur descend. Ce flux linéaire et chronologique est idéal pour un lecteur d'écran, en particulier ceux au niveau noyau comme Speakup.
TUI : La grille spatiale
Contrairement au CLI, le TUI traite la fenêtre du terminal comme une grille 2D de pixels, chaque cellule de caractère étant un pixel. Il abandonne le flux temporel pour une disposition spatiale, rendant l'interprétation par un lecteur d'écran beaucoup plus complexe.
Étude de cas : gemini-cli et ses défis
Prenons l'exemple de gemini-cli, un outil écrit en Node.js utilisant le framework Ink. Sous des airs de simple interface de chat, Ink tente de concilier un arbre de composants React avec une grille de terminal. Pour un utilisateur voyant, les mises à jour de l'écran semblent instantanées. Pour un utilisateur de lecteur d'écran, c'est un désastre.
Lorsque l'IA "réfléchit", l'outil met à jour un minuteur ou un indicateur de chargement. Cela implique de déplacer le curseur matériel à l'emplacement du minuteur, d'écrire le nouveau temps, puis de le ramener. Pour un utilisateur de Speakup ou NVDA, cela se traduit par un flot incessant d'informations désordonnées, rendant impossible la concentration sur l'entrée de texte.
Frameworks et outils modernes : un double tranchant
Des outils comme Ink (JS/React), Bubble Tea (Go) ou tcell, bien que conçus pour améliorer l'expérience développeur, compliquent la tâche des utilisateurs non-voyants. Ces frameworks traitent l'écran comme une toile réactive, où chaque mise à jour entraîne un redessin complet, perturbant ainsi les lecteurs d'écran.
Impact sur l'accessibilité
Cette approche réactive provoque un bombardement d'informations pour les utilisateurs de lecteurs d'écran. Chaque mise à jour déclenche une lecture instantanée, souvent sans continuité logique, rendant l'expérience utilisateur frustrante.
Conclusion : Repenser les TUI pour une meilleure accessibilité
Il est impératif pour les développeurs de reconsidérer la conception des TUIs en tenant compte de l'accessibilité. Cela passe par une meilleure compréhension des besoins des utilisateurs non-voyants et l'utilisation de technologies qui favorisent un flux d'informations linéaire et cohérent.
Discutons de ton projet en 15 minutes.