Mettre à profit nos compétences de technologues pour défendre l'égalité des droits des utilisateurs
En tant que développeurs d’applications web et de sites web, nous créons des interfaces destinées (pour l’essentiel) à être utilisées par des personnes. Ce faisant, nous avons la responsabilité de veiller non seulement à ce que nos applications soient faciles à utiliser pour ces personnes, mais aussi à ne pas porter atteinte à leurs droits. Dans le secteur des technologies, nous sommes très souvent en mesure d’exercer une influence ; voyons donc ce que cela peut signifier pour nous et pour nos utilisateurs.
Les droits civils sont les droits dont jouissent les individus de bénéficier d'un traitement égal et de ne pas faire l'objet d'un traitement inégal ou d'une discrimination fondée sur une caractéristique protégée telle que la race, le handicap, le genre ou l'orientation sexuelle.
Cela signifie que tous les citoyens doivent bénéficier d’une protection égale devant la loi, quelles que soient leurs capacités, leur apparence physique ou la personne qu’ils aiment. Des personnes se sont battues pour nos droits civils – du logement à l’emploi en passant par l’éducation – et ces droits seront remis en cause si nous ne continuons pas à nous battre pour les défendre. Les progrès réalisés dans ces domaines sont dans l’intérêt général. Comme on le dit souvent, l’égalité n’est pas comme les parts d’un gâteau : accorder davantage de droits aux personnes issues de groupes protégés ne signifie pas que l’on prive quelqu’un d’autre de ses droits légaux.
Dans cet article, nous aborderons l’impact potentiel des interfaces web sur les droits civiques des utilisateurs, notamment en ce qui concerne l’accessibilité numérique, mais nous ne pourrons pas tout couvrir. Il existe également d’autres domaines liés aux droits civils qui mériteraient que vous y consacriez du temps en tant que technologues : les élections et le droit de vote, la sécurité, les services juridiques, l’administration, le logement, la santé et l’IA, pour n’en citer que quelques-uns. Si la défense des droits de vos utilisateurs vous intéresse, trouvez un sujet qui corresponde à vos passions et à votre expérience, et vous pourrez y avoir un impact vous aussi. Quoi qu’il en soit, après avoir lu cet article, j’espère que vous envisagerez sérieusement de protéger les droits civils de vos utilisateurs lors de la conception de toute interface utilisateur numérique. Cela peut être aussi simple que de proposer des options de formulaire non discriminatoires, comme dans le cas des publicités Facebook et de la loi sur le logement équitable (Fair Housing Act); mais nous aborderons également des moyens d’avoir un impact grâce à JavaScript.
Une fois que nous aurons compris comment les droits des personnes peuvent être affectés par les interfaces que nous mettons à disposition, nous pourrons commencer à faire bouger les choses – c’est donc ce dont nous allons parler dans cet article. Nous nous concentrerons principalement sur le développement web avec JavaScript en raison de sa large diffusion, mais certains de ces principes s’appliquent quelle que soit la technologie utilisée.
JavaScript est omniprésent
Imaginez que vous ayez développé une application web d’envergure entièrement en JavaScript, en intégrant des dépendances issues de l’écosystème open source et en créant rapidement une interface utilisateur permettant de glisser-déposer des éléments. L’accessibilité n’a pas été prise en compte lors des phases de conception et de développement, et l’audit de sécurité du code a été relégué au second plan au profit de la mise en production de nouvelles fonctionnalités. Votre équipe n’a jamais disposé du temps nécessaire pour revenir en arrière et résorber la dette technique accumulée dès le début, mais le développement s’est poursuivi. Finalement, des utilisateurs en situation de handicap frustrés et leurs représentants ont intenté une action en justice pour tenter d’améliorer la situation. Pour aggraver les choses, vous avez également dû faire face aux conséquences d’une faille de sécurité. Ces deux problèmes auraient pu être évités si vous aviez accordé dès le départ une attention particulière aux droits et aux besoins de vos utilisateurs.
Les développeurs web s'appuient sur JavaScript pour accomplir de nombreuses tâches, allant de la gestion des dépendances et des systèmes de compilation de nos projets au rendu d'interfaces utilisateur complètes. Comptant parmi les langages de programmation les plus répandus au monde, tant côté client que côté serveur, JavaScript est omniprésent. JavaScript peut avoir une incidence sur les droits fondamentaux de nos utilisateurs en matière d'intégrité physique et mentale, de sécurité et de vie privée, comme nous le verrons dans les paragraphes suivants. Ces droits sont souvent étroitement liés, en particulier dans le contexte des expériences numériques.
Aux États-Unis, il existe toute une série de lois fédérales, étatiques et locales relatives aux droits civils qui ont un impact sur la vie quotidienne des citoyens. Vous en reconnaîtrez peut-être même certaines comme étant en lien avec les débats que nous menons régulièrement dans le secteur des technologies (égalité salariale, discrimination fondée sur l’âge, congés familiaux, etc.). Ces lois peuvent s’appliquer dans divers contextes, notamment, mais sans s’y limiter, le développement de logiciels pour le gouvernement fédéral, l’éducation et l’emploi. Tant dans le secteur public que dans le secteur privé, le risque de poursuites judiciaires peut constituer une bonne motivation pour protéger les utilisateurs contre la discrimination à travers notre code, et à juste titre.
Pour en savoir plus sur la conformité aux normes d'accessibilité : https://www.deque.com/accessibility-compliance/
Le droit de ne pas se heurter à des obstacles à l'accès
Il n’est pas difficile d’imaginer que l’on puisse compter sur des logiciels pour faire son travail, compte tenu de notre utilisation intensive des outils de productivité en ligne et des environnements de développement intégrés (IDE) pour la programmation (entre autres). Bon nombre de ces applications modernes utilisent massivement JavaScript pour composer des composants d’interface utilisateur et effectuer des mises à jour réseau fluides en arrière-plan. Si vous souffrez d’un handicap – qu’il soit permanent, temporaire ou ponctuel –, une application logicielle non accessible peut rendre votre travail extrêmement difficile, voire impossible à accomplir efficacement. Un logiciel non accessible peut également empêcher une personne en situation de handicap d’accéder à un emploi, alors qu’elle pourrait apporter un travail qualifié et des perspectives plus diversifiées.

Découvrez d'autres personas dans la boîte à outils de conception inclusive de Microsoft (PDF)
En tant que concepteurs et développeurs de logiciels, nous jouons un rôle de « gardiens » dans la vie des gens, bien plus que nous ne le pensons. Lorsqu’ils sont bien conçus, nos logiciels peuvent faire la différence entre une personne en situation de handicap menant une vie autonome et productive, et une personne ayant besoin d’une aide extérieure pour accomplir une tâche, y compris dans le cadre de son travail. Qu’il s’agisse d’opérations bancaires, de courses en ligne ou de collaboration en ligne, les logiciels accessibles peuvent aller d’une simple commodité à un véritable changement radical permettant à quelqu’un d’exceller dans la vie. Cela s’applique à toutes les expériences numériques, tant pour les contributeurs et les auteurs que pour les consommateurs.
Par exemple, les personnes en situation de handicap utilisent couramment des systèmes de gestion de contenu, notamment dans les universités où sont déployées des plateformes telles que WordPress et Drupal. Si ces systèmes ne sont pas conçus et développés dès le départ dans une optique d’accessibilité, une mise à jour vers une nouvelle interface utilisateur fortement dépendante de JavaScript peut avoir de graves répercussions sur les études ou les performances professionnelles d’une personne. L’accessibilité n’est pas simplement un « plus » ; elle peut avoir une incidence sur les conditions de vie de chacun, y compris celles des personnes présentant divers types de handicap (perte de la vue, incapacité à utiliser une souris ou un pavé tactile, troubles cognitifs, etc.). Mettre en place, sciemment ou non, des obstacles qui affectent de manière disproportionnée l’accès des personnes en situation de handicap – ou de toute autre caractéristique protégée – constitue une forme de discrimination, et c’est sans aucun doute un sujet de préoccupation.
Personne ne s'y connaît d'emblée en matière d'accessibilité numérique ; ne vous découragez donc pas si vous n'avez aucune connaissance ni expérience dans ce domaine. C'est quelque chose que nous devons tous apprendre et sur lequel nous devons tous travailler, et il faut bien commencer quelque part ! Au cours des dernières années, j’ai discuté avec de nombreuses personnes qui, après avoir entendu parler de l’accessibilité pour la première fois, se sont engagées avec enthousiasme dans cette cause au sein de leur propre organisation. Certaines sont même devenues des figures de proue de l’accessibilité dans le secteur du développement web, et notre action collective a sans aucun doute eu un impact sur la vie des utilisateurs en situation de handicap. (Rejoignez-nous sur le canal Slack web-a11y !)
« Je suis en situation de handicap et je ne peux pas utiliser ce site, pourquoi ne veulent-ils pas de mon argent ?! »
Il est également vrai que certaines équipes ont besoin d’une motivation supplémentaire pour améliorer réellement l’accessibilité au sein de leur propre organisation. Voici donc une motivation : si vous ne prêtez pas attention à l’accessibilité, votre application et votre contenu risquent d’être discriminatoires envers les personnes en situation de handicap. Non seulement cela comporte un risque juridique accru, mais vous passez également à côté de dépenses potentielles de la part de vos clients, quel que soit le pays dans lequel vous vous trouvez. Rien qu’aux États-Unis, les personnes en situation de handicap disposent d’un revenu disponible de plus de 645 milliards de dollars. C’est un segment de population bien trop important pour être laissé de côté.
Considérations relatives à l'accessibilité en JavaScript
Pour les développeurs d'applications faisant un usage intensif de JavaScript, toutes les règles de base en matière d'accessibilité s'appliquent. Nous pouvons avoir un impact considérable en prêtant attention à des éléments tels que le contraste des couleurs, la prise en charge du clavier et les états de focus visibles, la structure sémantique du code HTML, les libellés des formulaires, ainsi que les descriptions alternatives pour les images et les contenus multimédias. Au-delà de ces principes fondamentaux, les exigences techniques courantes en matière d'accessibilité JavaScript comprennent :
- Gestion du focus sur les calques et les fenêtres modales. Vous devrez maîtriser des outils tels que `document.activeElement`, `element.focus()` et l'écoute des événements de touches.
- Désactiver complètement les calques et composants inactifs à l'aide des propriétés CSS `display: none` et `visibility: hidden`, des attributs HTML `tabindex="-1"` et `aria-hidden="true"`, ou de l'attribut `inert` avec un polyfill.
- Annonce des modifications d'affichage et des mises à jour asynchrones pour les technologies d'assistance à l'aide des « ARIA Live Regions ».
- Gérer avec souplesse le focus du clavier lors de la suppression ou du retrait de nœuds DOM.
- Utilisation correcte des états, rôles et propriétés ARIA.
- Tests automatisés de logiciels en matière d'accessibilité.
Consultez mon dernier article de blog pour découvrir d'autres conseils sur l'accessibilité dans les applications utilisant intensivement JavaScript : https://www.deque.com/blog/accessibility-tips-in-single-page-applications/
Heureusement, il est aujourd’hui plus facile d’atteindre un niveau de base en matière d’accessibilité grâce aux outils et procédures de test modernes. Deque propose un certain nombre de ressources et d’outils pour vous aider dans cette démarche, notamment l’Deque University, axe (qui alimente la partie accessibilité d’outils tels que Lighthouse et webhint.io), ainsi que l’ensemble de la suite de produits WorldSpace, parmi d’autres excellents outils disponibles dans le secteur. Cependant, en fin de compte, ce qui importe le plus, c’est d’améliorer l’expérience des utilisateurs ayant des besoins en matière d’accessibilité, plutôt que les outils que nous utilisons pour y parvenir.
L'accessibilité du JavaScript commence par l'expérience utilisateur
On peut passer la journée à discuter des aspects techniques du JavaScript accessible, mais pour éliminer véritablement les obstacles systémiques à l’accessibilité dans nos logiciels, nous devons d’abord prendre en compte l’accessibilité dès la conception de l’expérience utilisateur (UX) et du design. Pour reprendre les mots de Cordelia McGee-Tubb, « l’accessibilité, c’est comme un muffin aux myrtilles : on ne peut pas y ajouter les myrtilles après coup ». En tant que développeur JavaScript, permettez-moi également de vous dire ceci : il y a certaines choses que l’on ne peut pas résoudre uniquement avec du code.
Imaginons que vous ayez mis en place une interface utilisateur fortement axée sur les interactions à la souris, avec des événements de clic et de glisser-déposer un peu partout. En tant que développeur chargé d’ajouter une « prise en charge de l’accessibilité », vous essayez d’y intégrer davantage de gestion d’événements JavaScript, mais vous vous heurtez rapidement à des conflits de raccourcis clavier et à des complications au niveau des technologies d’assistance : c’est alors le début d’un véritable jeu de « chat et souris » avec les bogues d’accessibilité. Outre les questions de faisabilité et de coût de développement et de maintenance, ce type d’interfaces est souvent moins intuitif et plus compliqué à utiliser pour les utilisateurs en situation de handicap.
Les exigences destinées aux « utilisateurs avancés », avec des commandes dissimulées, des choix de conception subtils et une « découvrabilité » forcée, ne parviennent pas à rendre votre application « cool » et « haut de gamme » si elles la rendent également beaucoup plus difficile à utiliser. Exiger la mémorisation d’un nombre excessif de raccourcis clavier alors que les gestes équivalents à la souris sont sans effort témoigne d’un déséquilibre des pouvoirs. Cela révèle un parti pris en faveur des concepteurs et des développeurs dudit logiciel au détriment des utilisateurs réels, qui ne peuvent pas le connaître aussi intimement que l’équipe qui l’a créé : on pense également aux boutons iconiques obscurs dépourvus de libellés visuels.
Les organisations peuvent lutter contre les préjugés en testant leurs applications dès les premières phases et de manière régulière auprès d’utilisateurs en situation de handicap, et en prenant leurs retours au sérieux. Vous ne pourrez peut-être pas repenser l’intégralité de votre application d’un seul coup, mais vous pouvez identifier des moyens de simplifier et d’optimiser l’expérience utilisateur dans les flux clés, en procédant à des modifications progressives, sprint après sprint ou itération de développement après itération.
En tant que développeurs JavaScript et à titre individuel, il peut être difficile de nager à contre-courant pour offrir des expériences plus accessibles lorsque l'on se heurte à des résistances. N'oubliez pas que vous n'êtes pas seuls, et que même les plus petites contributions en faveur de l'accessibilité peuvent, au fil du temps, faire une grande différence pour les utilisateurs.
Le droit à la sécurité
La technologie peut causer un préjudice réel aux personnes. Comme cette fois où quelqu’un a envoyé par Twitter un GIF clignotant à un journaliste épileptique. Ou cette autre fois où un plugin d’accessibilité a été piraté pour miner de la cryptomonnaie, affectant ainsi des milliers d’internautes à travers le monde. Ou encore ces occasions où des développeurs d’applications ont ajouté des fonctionnalités de partage de localisation pouvant être utilisées à des fins de harcèlement ou d’intimidation.
Nous ne pouvons pas contrôler tout ce que fait ou publie chaque utilisateur en ligne, mais il existe plusieurs étapes du cycle de vie du développement logiciel au cours desquelles nous pouvons prendre des mesures pour prévenir les situations à risque :
- Réfléchissez dès le départ à la manière dont vos créations pourraient être utilisées par des personnes mal intentionnées pour causer du tort ou commettre des abus. Vous n'êtes pas un expert ? Faites appel à des personnes issues de communautés marginalisées pour vous conseiller.
- Luttez contre les préjugés dans l'apprentissage automatique en faisant preuve de transparence concernant les données d'entraînement et en recherchant les biais cachés.
- Définir des règles raisonnables et des procédures de modération régissant le comportement des utilisateurs dans le cadre de politiques publiques, et demander des comptes aux utilisateurs en cas de non-respect de ce code.
- Respectez les bonnes pratiques en matière de sécurité et effectuez régulièrement des mises à jour afin d'éviter de compromettre l'intégrité de vos logiciels déployés.
Conception audiovisuelle bien pensée
Pour les utilisateurs présentant un risque de crise épileptique, un trouble vestibulaire, un traumatisme crânien ou le mal des transports, la navigation sur des sites et dans des applications regorgeant de vidéos à lecture automatique et d’animations clignotantes peut s’avérer dangereuse. En tant que développeurs de ces sites et applications, il est possible de minimiser les risques tout en proposant des designs esthétiques et innovants. Prévenez les utilisateurs de la présence de contenus sensibles ou clignotants dès les écrans de chargement, et évitez la lecture automatique de fichiers multimédias sans le consentement de l’utilisateur (cette mesure permet également de préserver les forfaits de données de chacun).
Les développeurs d'animations peuvent utiliser la requête média CSS « prefers-reduced-motion » ou une fonction JavaScript pour Safari et Firefox afin de proposer une option de style alternative en fonction des préférences système de l'utilisateur. Les boutons de configuration au niveau de chaque site constituent également un bon moyen d'améliorer l'expérience des utilisateurs sensibles aux mouvements, en leur permettant de choisir une option réduisant les animations (ou tout autre traitement stylistique) qui pourra être intégrée à la conception visuelle.
Protéger les utilisateurs vulnérables contre les codes malveillants provenant de tiers
Il existe encore d’autres moyens de garantir la sécurité de nos utilisateurs. Les vulnérabilités présentes dans les dépendances et bibliothèques tierces que nous utilisons pourraient exposer nos utilisateurs à des risques en permettant l’exécution de code non autorisé sur leur système ; ces bibliothèques doivent donc être mises à jour avec les correctifs de sécurité ou supprimées purement et simplement. Il y a une raison pour laquelle tant de développeurs utilisent des logiciels de blocage des publicités : l’Internet moderne d’aujourd’hui regorge de scripts de suivi effectuant des requêtes vers des domaines douteux, ainsi que de cookies malveillants ou indésirables.
Nous pouvons répondre au mieux aux besoins de nos utilisateurs à tous les niveaux en déployant des sites sécurisés via HTTPS, en vérifiant l'intégrité des scripts récupérés sur Internet et en suivant d'autres bonnes pratiques en matière de sécurité. Mais il y a également un enjeu commercial à prendre en compte : devons-nous tirer nos revenus publicitaires d’une plateforme tierce peu fiable, ou existe-t-il une solution plus sûre pour nos utilisateurs, comme un modèle par abonnement ? Un thème se dégage de cet article : la meilleure façon de garantir la sécurité des utilisateurs est de l’intégrer dès les premières étapes du cycle de développement du produit.
Le droit à la vie privée
Notre dernière réflexion sur l’impact que peut avoir JavaScript sur les droits civils n’est pas très éloignée de ce dont nous avons parlé dans la section précédente ; la sécurité et la vie privée sont en effet étroitement liées. Les mêmes scripts de suivi qui stockent des cookies sur votre ordinateur « pour des raisons de commodité et de fonctionnalités de base » peuvent également vendre vos informations personnelles à des agrégateurs et des courtiers de données. C’est le prix que les utilisateurs paient pour bénéficier d’applications de réseaux sociaux gratuites, où leurs interactions et leurs données constituent les produits commercialisés. Le moins que nous puissions faire est de protéger leur droit légal à la vie privée et de leur permettre de refuser la collecte de données chaque fois que cela est possible. Cela est d’autant plus pertinent depuis l’adoption du RGPD, qui a renforcé la protection de la vie privée des utilisateurs en Europe.
La manière dont nous concevons et développons les formulaires de contact en HTML peut également avoir un impact sur la protection de la vie privée. Demandez-vous s’il est vraiment nécessaire d’inclure un champ « sexe » pour assurer les fonctionnalités de base. Pouvez-vous rendre ce champ facultatif ou y ajouter une option « non binaire »? Nous ne devrions pas demander des informations sur le sexe simplement par tradition si ces données ne sont pas réellement nécessaires.
La confidentialité des utilisateurs et le modèle d'objet accessible
De même, les utilisateurs ne souhaitent pas vous révéler leur handicap simplement pour bénéficier d’une assistance de base sur le site. Les développeurs JavaScript attendent avec impatience le futur « Accessibility Object Model » (AOM), qui offrira davantage d’outils pour définir les informations d’accessibilité via des scripts (par opposition à ARIA en HTML). Imaginez pouvoir obtenir un rôle calculé ou définir un nom accessible directement via une API JavaScript ; voilà en partie ce que l’AOM pourrait vous apporter. Il s’agit d’une proposition très prometteuse qui pourrait façonner la technologie web de demain ; elle a également suscité une certaine tension entre la protection de la vie privée des utilisateurs et la mise en œuvre de cas d’utilisation complexes en matière d’accessibilité.
L'AOM a été comparé à la géolocalisation HTML5, dans la mesure où, pour des raisons de confidentialité, les utilisateurs devraient probablement donner leur accord dans le navigateur pour activer ce nouveau comportement. Bien que la conception proposée pour l'AOM ait évolué vers l'utilisation d'événements synthétiques, un écran d'autorisation pourrait tout de même s'avérer nécessaire dans certains cas. (Il a également été question de le limiter au protocole HTTPS, mais cette question n’est pas encore tranchée pour l’instant.) Une fois implémenté dans les navigateurs, ce nouvel outil puissant devra être utilisé à bon escient, probablement en s’appuyant sur des éléments d’interface utilisateur redondants pour permettre la réalisation de tâches accessibles.
Par exemple : un champ de saisie de texte permet à un utilisateur d'effectuer une recherche sans avoir à accepter de partager sa position via l'API de géolocalisation. De même, pour utiliser des fonctionnalités AOM telles que les événements liés aux technologies d'assistance, un utilisateur peut être amené à autoriser l'API. En tant que développeurs, nous devons proposer des éléments d'interface permettant d'accomplir la même tâche sans que nos utilisateurs aient à sacrifier leur vie privée pour y accéder.
Conclusion
Comme vous l’avez sans doute compris à présent, il existe de nombreuses façons dont nous pouvons influencer les droits civiques de nos utilisateurs, pour le meilleur ou pour le pire. Il peut sembler difficile de garder toutes ces pratiques à l’esprit, alors que chaque aspect semble prendre le pas sur les autres en tant que priorité absolue. Lorsque nous affirmons « l’accessibilité d’abord », « le mobile d’abord », « la sécurité d’abord », etc., nous courons inévitablement à l’échec ou passons à côté de l’essentiel dans les domaines qui n’ont pas été priorisés. Certains des points généraux abordés dans cet article peuvent également échapper à votre contrôle en tant que développeur.
Il pourrait donc être utile de partir d’un document tel que cette liste de contrôle fédérale sur les services numériques et de l’adapter aux besoins de votre équipe. Vous pourriez peut-être vous concentrer sur les lois applicables à votre secteur technologique spécifique. Vous devriez évaluer régulièrement l’impact de chaque nouvelle conception ou fonctionnalité sur laquelle vous travaillez sur les droits des utilisateurs et commencer à vous poser des questions. Dans cette optique, vous pourriez vous interroger sur des points tels que :
- Quel serait l'impact de cette mesure sur l'emploi des personnes en situation de handicap ?
- Permettons-nous à tous les élèves de réussir grâce à des plateformes éducatives en ligne et à des supports pédagogiques inclusifs ?
- Quels compromis en matière de confidentialité devons-nous accepter dans nos API et nos interfaces utilisateur, et proposons-nous des alternatives adéquates ?
- Introduisons-nous ou tolérons-nous des biais dans l'apprentissage automatique et les algorithmes, qui affectent de manière disproportionnée les groupes sous-représentés ?
- Quels sont les processus que nous avons mis en place pour signaler et faire remonter les problèmes liés aux droits des utilisateurs en matière de vie privée, de sécurité et d'accès au sein de notre technologie ?
Heureusement, en tant que développeurs JavaScript soucieux de respecter les droits fondamentaux de nos utilisateurs, le simple fait de suivre les meilleures pratiques du secteur en matière d’accessibilité, de sécurité, de confidentialité et de performances peut déjà nous mener très loin. Suivre une formation dans ces domaines permet d’acquérir des conseils pratiques pour mettre en œuvre les principes correspondants : ces formations ont d’ailleurs largement contribué à alimenter certaines des informations contenues dans cet article. En tant que développeurs, nous avons un impact considérable sur la vie des gens, que nous en soyons conscients ou non. Mettons donc nos valeurs en pratique !