Continuum

Jeremy Keith, dans la continuité du célèbre Tao du Webdesign, défend l'idée du web comme un continuum - un espace ouvert à l'expérimentation, soucieux d'accessibilité au contenu. Engagé, constructif, définitif.

Par

Arrêtez-moi si vous l’avez déjà entendue : vous lisez un article sur Smashing Magazine ou A List Apart ou autre, l’article traite d’une fonctionnalité spécifique de CSS, ou peut-être de JavaScript, ou explore une nouveauté de HTML. L’article est bon. Il explique comment utiliser cette nouvelle fonctionnalité dans votre travail. Puis vous lisez les commentaires. Le premier d’entre eux est invariablement écrit par un lecteur qui se plaint de ne pouvoir utiliser cette fonction à cause des problèmes d’incompatibilité navigateurs. Plus précisément, sur de vieilles versions d’Internet Explorer, qu’il est obligé de servir. En conséquence de quoi, l’article est déclaré nul et non avenu.

Cette attitude m’irrite et me déprime au plus haut point. Elle me semble démontrer un décalage fondamental entre la façon dont cette personne considère le métier de développeur web et la réalité du web.

Il est tout à fait possible — non : souhaitable — d’utiliser ces fonctionnalités bien avant qu’elles ne soient supportées par tous les navigateurs. C’est ainsi que nous faisons avancer le web. Si nous avions attendu une compatibilité universelle, nous en serions encore à CSS 1.0 et HTML 2.0.

Si vous utilisez une fonctionnalité CSS qui n’est pas compatible avec tel ou tel navigateur —  par exemple avec une version ancienne d’IE — ce navigateur ignorera purement et simplement cette règle CSS. Donc vous n’aurez pas ce coin arrondi, cette ombre sous le texte... Les navigateurs traitent les erreurs de la même façon pour HTML : s’ils voient quelque chose qu’ils ne comprennent pas, ils l’ignorent. Le navigateur n’enverra pas d’erreur, il n’arrêtera pas le processus de rendu de page. Les navigateurs sont très souples.

C’est un peu plus compliqué avec JavaScript : les navigateurs retourneront une erreur, ils bloqueront le script. C’est pourquoi il est important d’utiliser la détection de fonctionnalité. C’est pourquoi aussi il est si important de ne pas s’en remettre à JavaScript pour le rendu de votre contenu — c’est la couche la plus fragile dans l’empilement front-end. Bon, je n’ai pas dit qu’il ne fallait pas utiliser JavaScript, je dis juste qu’il ne faut pas trop s’appuyer sur lui, sinon vous pourriez avoir affaire à un SPOF (Single Point of Failure, un point individuel de défaillance).

Ce qu’il est important de garder à l’esprit — et j’ai du mal à croire qu’on doive encore le répéter après tant d’années — c’est que les sites web n’ont pas besoin d’être identiques d’un navigateur à l’autre.

“Mais mon client !” crie le commentateur de Smashing Magazine, “Mais mon patron !” dit un autre...

Si votre client ou votre patron s’attend à ce qu’un site web ait le même look et le même comportement sur chaque terminal, d’où lui viennent ces idées ? Plutôt que de perdre votre temps à tenter de satisfaire ces attentes, vous l’utiliseriez mieux à expliquer à vos interlocuteurs pourquoi ces choses-là sont impossibles dans la réalité du web actuel.

Comme le dit Mike Monteiro à propos des clients : S’ils ne comprennent pas quelque chose dans votre design, ce n’est pas leur faute, c’est la vôtre. Expliquer votre design fait partie intégrante de votre métier de designer. Idem pour le développement web, c’est notre métier d’expliquer comment ça marche... et comment la répartition déséquilibrée des capacités des navigateurs n’est pas un bug, c’est une caractéristique objective et incontournable.

Il y a déjà 14 ans que John Allsopp a écrit le Tao du webdesign, et son texte est toujours actuel. À l’époque, les designers et les développeurs comparaient le web au monde de l’imprimerie, et pensaient qu’il lui était inférieur. Aujourd’hui, ils le comparent au monde des applications natives et lui trouvent encore des manques. Dans les deux cas, mon sentiment est qu’ils passent à côté du point fondamental du web : vous pouvez fournir un accès universel au contenu et aux tâches sans nécessairement fournir la même expérience à chaque navigateur ou à chaque terminal.

Paul Kinlan a publié un article intitulé “Ce qu’est la plateforme web” dans lequel il met sous forme de tableau l’état actuel des compatibilités navigateurs pour un certain nombre de fonctionnalités. “Assez accablant” selon lui :

la compatibilité omniprésente sur le web est en réalité assez restreinte dès lors qu’on doit supporter IE8.

C’est vrai... d’un certain point de vue. Mais cela dépend de votre définition de la “compatibilité”. Si elle signifie “avoir le même look et les mêmes fonctions que dans la dernière version de Chrome”, alors oui, vous aurez un ensemble de fonctionnalités plus réduit (et vous aurez également une existence plus misérable). Mais si votre définition de la compatibilité est “être capable d’accéder au contenu et d’accomplir les tâches”, alors tant que vous faites appel à l’amélioration progressive vous pourrez utiliser toutes les fonctionnalités que vous voulez et supporter IE 8, 7, 6, 5... vous pouvez supporter n’importe quel navigateur capable de se connecter à internet.

Comme le dit Brad Frost :

Il y a une différence entre la compatibilité et l’optimisation.

Une partie du problème vient probablement d’incompréhensions langagières. Nous parlons “du navigateur” quand nous devrions dire “les navigateurs”. Je suis coupable moi-même. J’utilise des expressions telles que “design dans le navigateur”, je parle de “ce qu’il est possible de faire dans le navigateur”...

C’est une petite subtilité Lakoffienne, mais lorsque nous parlons “du navigateur” comme s’il s’agissait d’une entité unique, nous sommes peut-être en train de renforcer cette attente d’un idéal platonicien de rendu navigateur unique pour lequel nous voulons réaliser nos designs.

Il y a encore une phrase qui me gêne, c’est celle que Paul utilise dans son article précédemment cité. J’en ai parlé en novembre dernier dans ma présentation sur le pouvoir de la simplicité :

Cette idée du web comme une plateforme, je la comprends bien d’un point de vue marketing, et nous pourrions vouloir utiliser cette phrase pour mettre sur un pied d’égalité le web et les plateformes véritables.
Je dirais que Flash est une plateforme, et le monde natif : iOS, Android et toutes ces sortes de choses. Ce sont des plateformes, en ce sens que ce sont des suites logicielles, mais le web n’est pas comme cela.
Si vous utilisez la plateforme Flash, toute personne qui a le plug-in Flash peut accéder à votre contenu. C’est on/off, un ou zéro, binaire. Ou bien ils ont la plateforme, ou bien ils ne l’ont pas. Ou bien ils peuvent accéder à votre contenu ou bien ils ne peuvent pas.
Même chose avec les applis natives. Si vous avez le bon téléphone, vous pouvez avoir mon appli. Toute mon appli. Pas juste une partie, non, mon appli tout entière. Ou rien du tout parce que vous n’avez pas le téléphone compatible.
Mais le web n’est pas ainsi. Le web n’est pas binaire, un ou zéro, on/off. Ce n’est pas une plateforme où vous avez 100% ou 0%. C’est un continuum.

Le web n’est pas une plateforme. C’est un continuum.


original paru le dans Adactio.

Sur l’auteur : est développeur web et auteur, responsable recherche et développement chez Clearleft, il vit à Brighton en Angleterre. Il est l’auteur notamment de HTML5 pour les webdesigners. On peut le suivre sur Google+ et Twitter.

Traduit avec l’aimable permission de Adactio et de Jeremy Keith.
Copyright Adactio © 2014.