Au début de ma carrière, quand j’ai commencé à travailler j’ai souvent entendu la même rengaine : “Argh, pourquoi cet attribut CSS ne fonctionne pas pareil sous IE que sous Firefox ? Pourquoi celui ci n’existe pas sur IE ? (oui Chrome n’existait pas encore à cette époque :p) S’ils faisaient tous la même chose je n’aurais à tester que dans un seul navigateur !”

Soyons clairs : un Internet qui ne fonctionne que sur le moteur de Chrome, Blink, et sa progéniture, n’est pas le paradis que nous aimons à imaginer qu’il soit.

Qu’est-ce qu’un navigateur, même ?

Mettons de l’ordre dans la terminologie.

Les navigateurs populaires que vous connaissez aujourd’hui comprennent Google Chrome, Apple Safari, Mozilla Firefox et Microsoft Edge, mais dans le passé, nous avons aussi eu des navigateurs comme NCSA Mosaic et Netscape Navigator. Quel que soit le navigateur que vous utilisez quotidiennement (j’utilise Chrome, merci de demander), il ne s’agit que d’une couche d’interface enroulée autour d’un moteur de navigateur. Tous vos signets, les flèches vers l’avant et vers l’arrière, cette barre d’URL, ce n’est pas le navigateur. Ce sont les interfaces du navigateur. Souvent, les personnes qui construisent le moteur du navigateur ne touchent même pas à l’interface !

Les moteurs de navigateur sont les choses qui lisent tout le HTML et les CSS et JavaScript qui descendent sur Internet, les interprètent et affichent une jolie image d’une page Web pour vous. Ils ont leurs propres noms. Le moteur de Chrome est Blink. Safari fonctionne sur WebKit. Firefox utilise Gecko. Edge se trouve sur EdgeHTML. (J’aime cette convention de nommage. Bon travail, Edge.)

L'impact écologique de la diversité des navigateurs

À l’exception d’Edge, tous ces moteurs sont open source, ce qui signifie que n’importe qui pourrait en prendre un, l’intégrer dans une nouvelle interface, et boomer, lancer son propre navigateur – peut-être avec une expérience utilisateur différente (peut-être meilleure) – et c’est exactement ce que certains navigateurs sont ! Apple n’autorise que les navigateurs basés sur webKit dans son magasin d’applications iOS, de sorte que les navigateurs Chrome, Firefox et même Edge sur iPads et iPhones fonctionnent plus comme Safari que leurs équivalents de bureau. Oculus Browser, Brave, Vivaldi, Samsung Internet, Amazon’s Silk et Opera fonctionnent tous sur Blink. Nous les appelons les ” navigateurs à base de chrome “-Chromium est le projet open source de Google dont Chrome et son moteur sont issus.

Mais qu’y a-t-il dans un moteur de navigation ? MOAR ENGINES ! Chaque moteur de navigation est composé de plusieurs autres moteurs :

Un moteur de mise en page et de rendu (souvent si étroitement couplé qu’il n’y a aucune distinction) qui calcule l’apparence de la page et gère les peintures, les rendus et même les animations.
Un moteur JavaScript, qui lui est propre et peut même fonctionner indépendamment du navigateur. Par exemple, vous pouvez utiliser le moteur V8 de Chrome ou le Chakra de Microsoft Edge pour exécuter Node sur un serveur.

J’aime comparer les moteurs de navigation aux cellules biologiques. Lorsqu’une cellule contient plusieurs organites pour remplir différentes fonctions, il en va de même pour les navigateurs. On peut penser au noyau comme le moteur de rendu, contenant les plans de la façon dont la page doit s’afficher, et aux mitochondries comme le moteur JavaScript, qui alimente nos interactions quotidiennes. (Fait amusant : les mitochondries étaient aussi des cellules autonomes à un moment donné, et elles ont même leur propre ADN !)

Et vous savez quoi ? Une autre façon dont les navigateurs sont comme des êtres vivants, c’est qu’ils évoluent.

Évolution du navigateur

Quand les premiers navigateurs sont sortis, c’était une époque plus simple. Le CSS était considéré comme la nouveauté quand il est apparu pour la première fois dans Microsoft Internet Explorer 3 en 1996 ! Il y avait beaucoup moins d’API JavaScript et de spécifications CSS à implémenter qu’aujourd’hui. Au fil des ans, les bases de codes des navigateurs se sont développées pour prendre en charge le nombre de nouvelles fonctionnalités dont les utilisateurs et les développeurs ont besoin pour créer des expériences Web modernes. Il s’agit d’une évolution délicate entre les besoins des utilisateurs, les efforts d’ingénierie des navigateurs et les processus de normalisation des spécifications.

Nous avons trois grandes lignées de moteurs à l’heure actuelle :

  • WebKit et Blink (Blink étant à l’origine un fork de WebKit) exécutant Safari, Chrome, et Opera
  • Gecko exécutant Firefox
  • EdgeHTML (un fork de Trident, aka MSHTML) exécutant Microsoft Edge

Chacune est très différente et présente des forces et des faiblesses différentes. Chacun pourrait tirer le Web dans une direction différente à lui seul : Le moteur de Firefox dispose du traitement multithread de Servo pour rendre des graphiques rapides et flamboyants. Le moteur d’Edge a le moins d’abstraction du système d’exploitation, ce qui lui donne un accès plus direct aux ressources du système, mais en fait un moteur de navigateur Windows uniquement. Et Chrome’s Blink a le plus grand nombre de développeurs web qui testent pour lui. (Je reviendrai sur la raison pour laquelle il s’agit d’une “fonctionnalité” dans un petit moment.)

Tu te souviens de tous ces navigateurs Chromium dont on a parlé ? Eh bien, aucun de ces navigateurs n’a besoin de construire son moteur de rendu ou ses moteurs JavaScript à partir de zéro : ils ne font que s’interfacer avec Blink. Et s’ils ont besoin de nouvelles fonctionnalités ? Ils peuvent développer ces fonctionnalités et les garder pour eux, ou ils peuvent les partager “en amont” pour devenir une partie du moteur de base à utiliser par les autres navigateurs. (Ce processus est souvent chargé de politique et de logistique – il est plus facile de dire que de faire une contribution en retour !)

Il est difficile d’imaginer qu’une seule entité puisse justifier les heures et les dépenses qu’il faudrait pour faire tourner un moteur de navigation à partir de zéro aujourd’hui. Même les trois familles de moteurs actuelles sont des évolutions de moteurs qui existaient depuis le tout début d’Internet. Ils ont évolué au coup par coup à nos côtés, grandissant pour répondre à nos besoins.

Actuellement, la grande majorité du trafic sur le Web se fait sur Chrome, iOS Safari, ou une autre permutation de Blink ou WebKit.

Branches, rénovations, et emplois en boyau

Certains développeurs diraient que WebKit et Blink ont bifurqués il y a si longtemps que les deux moteurs de navigation sont pratiquement complètement différents maintenant, ne pouvant plus partager leurs contributions. C’est peut-être vrai jusqu’à un certain point. Mais alors qu’un colibri commun et un colibri à gorge rubis sont des animaux complètement différents l’un de l’autre, comparés aux autres familles d’animaux, ils sont tout de même des oiseaux. Ni l’un ni l’autre de ses descendants immédiats ne sont susceptibles de manifester des dents, des mains ou des queues dans un avenir proche. Ni WebKit ni Blink n’ont les fonctionnalités de traitement que Gecko et EdgeHTML ont développées depuis des années.

D’autres développeurs pourraient faire remarquer que Microsoft Edge est censé être une “réécriture complète” d’Internet Explorer. Mais la différence entre un “travail intestinal complet” et une simple “rénovation” peut être une question de perspective. EdgeHTML est un fork du moteur Trident d’Internet Explorer, et il transporte toujours une grande partie de l’arriéré de Trident avec lui.

Extinction des navigateurs

Ce sont donc les trois moteurs de navigation que nous avons : WebKit/Blink, Gecko et EdgeHTML. Il est peu probable que nous ayons de nouvelles lignées de sang dans un avenir prévisible.

Si nous perdons un de ces moteurs de navigation, nous perdons sa lignée, chaque permutation de ce moteur qui suivrait, et les prises uniques sur le Web qu’il pourrait permettre.

Et il est peu probable qu’il soit remplacé.

Imaginez une planète peuplée uniquement de colibris, de dauphins et de chevaux. Disons que tous les dauphins se sont éteints. Dans un avenir très lointain, les colibris ou les chevaux pourraient évoluer en quelque chose qui pourrait nager dans l’océan comme un dauphin. En effet, à l’époque des dinosaures, les ichtyosaures ressemblaient beaucoup aux dauphins. Mais cette créature serait très différente d’un vrai dauphin : même les ichtyosaures n’ont jamais développé l’écholocation. Nous attendrions très longtemps (peut-être pour toujours) qu’une lignée de sang fasse évoluer les traits que nous avons déjà présents dans d’autres lignées de sang aujourd’hui. Alors, pourquoi est-il acceptable d’attendre ou même d’encourager l’extinction de l’une de ces précieuses et uniques lignées ?

Nous en avons déjà perdu un.

Nous avions quatre moteurs de rendu principaux, mais Opera a arrêté le développement de son propre moteur de rendu Presto avant d’adopter Blink.

Il en reste trois. Dépensez-les judicieusement.

Par nos pouvoirs combinés….

Certains pensent que si un navigateur comme Microsoft Edge fonctionnait sur Blink, les ingénieurs de Microsoft pourraient aider à construire un meilleur Blink, en apportant de nouvelles fonctionnalités en amont pour tous les autres navigateurs Chromium à bénéficier. Ça a l’air sensé, non ?

Mais rappelez-vous que Blink a été bifurqué de WebKit. Maintenant il y a des contributeurs WebKit et des contributeurs Blink, et leurs contributions ne sont pas transférées d’un à un. Il n’est pas improbable qu’une entreprise comme Microsoft, tout comme Samsung et Occulus, veuille faire les choses avec le moteur différemment de Google. Et si ces différences ne sont pas harmonisées, l’entreprise travaillera sur une base de code parallèle et ne contribuera pas à ce travail en amont. Nous nous retrouvons avec un WebKit et un Blink, mais sans la profonde différenciation qui vient d’une base de code qui s’est développée avec l’Internet pendant des décennies.

C’est une bonne idée en théorie. Mais en pratique, nous nous retrouvons dans le même pétrin et avec moins de ” variété génétique ” dans notre écosystème de moteurs de navigation.

La compétition, c’est pour grandir, pas pour “gagner”.

Je suis un fan de la compétition. J’aime rappeler aux gens que la concurrence ne consiste pas à anéantir vos concurrents. Si vous le faisiez, vous stagneriez et perdriez votre audience (cf Internet Explorer 6…)

Internet Explorer 6 était un navigateur étonnant lorsqu’il est sorti : assez performant pour vraiment offrir les fonctionnalités des versions précédentes d’Internet Explorer introduites comme le DOM, la liaison de données, et JavaScript asynchrone. Son rival, Netscape Navigator, n’a pas pu rivaliser et s’est effondré en poussière (seulement pour voir son moteur, Gecko, réécrit de toutes pièces – c’était si petit!- par la Mozilla Foundation pour renaître plus tard sous le nom de Firefox).

Pensant qu’il avait gagné l’Internet, Microsoft a tourné son attention vers d’autres fronts, et Internet Explorer n’a pas beaucoup avancé. Cela a permis à Firefox d’obtenir une prise de pied en donnant aux utilisateurs une meilleure expérience avec des fonctionnalités comme le blocage des fenêtres pop-up et une meilleure interface utilisateur. Firefox a également collaboré avec Opera aux standards Web avancés, qui n’existaient pas vraiment à l’époque d’IE vs Netscape. Les gens utilisant et construisant pour l’Internet l’ont aimé, et Firefox s’est répandu comme le feu (ahah) par le bouche-à-oreille et les campagnes promotionnelles de base.

Lorsque l’iPhone est arrivé, Apple s’est concentré sur son marché des applications rentables et a réduit ses efforts pour prendre en charge Flash, la plate-forme d’interaction la plus proche des applications Web. Les applications ont donné aux créateurs de contenu un moyen de monétiser leurs efforts avec autre chose qu’un modèle publicitaire. La publicité étant le pain et le beurre de Google, le Big G s’est inquiété de la menace d’un jardin clos d’applications utilisant uniquement Internet pour la plomberie de données. Microsoft, quant à elle, se préoccupait de construire son propre système d’exploitation mobile. Google a donc fait deux choses : Android et Chrome.

Chrome promettait une navigation meilleure et plus rapide. C’était du barebones, mais Google s’est quand même donné à fond et est devenu célèbre. Avec l’omniprésence de Chrome sur tous les systèmes d’exploitation et les téléphones Android, ses outils de développement calqués sur l’extension Firebug de Firefox et son implication croissante dans les spécifications, Chrome n’a pas seulement sorti Internet Explorer de son sommeil, il a presque menacé de tuer tout autre navigateur de la planète !

L’élagage du grand arbre généalogique des broutards (ou collection de buissons pour ainsi dire) jusqu’à une seule branche ressemble à une monoculture fragile. Les monocultures sont facilement perturbées par les défis environnementaux et écologiques – par les changements du marché et les changements démographiques. Que se passe-t-il lorsque la prochaine menace pour le Web se manifeste, mais que nous n’avons pas le multithreading de Firefox ? Ou l’intégration système de Microsoft Edge ? Serons-nous capables d’itérer assez vite sans eux ? Ou allons-nous nous tourner vers les développeurs de Chrome pour qu’ils fassent quelque chose et prient pour qu’ils ne stagnent pas, comme Microsoft l’a fait, vers d’autres sujets après avoir “gagné le Web”.

Il est ironique que le navigateur Google construit pour empêcher le Web de perdre contre le modèle des applications monopolise lui-même le développement Web à peu près de la même façon qu’Internet Explorer 6.

C’est bon d’être roi (de la jungle)

J’ai promis que je reviendrais à la “taille de la base d’utilisateurs en tant que fonctionnalité”. Avoir la grande majorité de la communauté de développement web de construction et de test pour votre plate-forme est un avantage concurrentiel majeur. Tout d’abord, vous êtes assuré que la plupart des sites fonctionneront parfaitement dans votre navigateur – vous n’aurez pas à passer autant de temps et d’efforts à taper sur les sites Fortune 500 sur l’épaule à propos de ce bogue étrange qui fait que tous leurs utilisateurs internes passent à votre navigateur concurrent et ne reviennent jamais. Une spirale descendante de réduction du nombre d’utilisateurs conduisant à moins de tests de développement conduisant à moins d’utilisateurs s’amorce, qui est difficile à ébranler.

Il est également beaucoup plus facile de proposer de nouvelles spécifications qui répondent aux objectifs de votre société mère (qui peuvent servir ou non les objectifs de la communauté Web) et de faire en sorte que cette large communauté de développeurs s’intègre d’abord à votre implémentation sans avoir à attendre que les autres navigateurs se mettent à jour. Si un navigateur plus petit propose une spécification que personne ne remarque et que vous la ramassez quand vous en avez besoin, les gens se souviendront qu’il s’agit de votre effort, continuant à construire votre esprit, intentionnellement ou non.

Cela crée une pression à la baisse sur la concurrence, qui n’a tout simplement pas ou ne peut pas utiliser les mêmes ressources que la plus grande équipe de navigateurs a à sa disposition. C’est une méthode brutalement efficace, que ce soit par conception ou par accident.

C’est vertueux ? Au niveau des cotisants individuels, oui. S’agit-il d’un cercle vicieux par lequel les entreprises ont conduit leur concurrence à l’extinction en les forçant à dépenser des ressources limitées pour rattraper leur retard ? Aussi oui. Et le fait d’avoir des légions de personnes qui construisent uniquement pour votre plateforme aide.

Toutes les personnes géniales, bien intentionnées et sincèrement bien intentionnées – de l’équipe de Chrome aux développeurs Web – peuvent lever la main et dire légitimement : ” J’essayais simplement de faire avancer le Web ” tout en contribuant à faire progresser le monopole des entreprises.

Chrome a le plus de ressources et mène le peloton dans la construction du Web à un point tel que nous ne pouvons pas être sûrs si nous construisons le Web que nous voulons… ou le Web que Google veut.

Biologie spéculative

Il fut un temps où Microsoft renflouait Apple alors qu’il était sur le point de couler. Ce n’était pas parce que Bill Gates et Steve Jobs étaient amis – non, Microsoft avait besoin d’Apple pour réussir afin qu’il y ait toujours de la concurrence dans le système d’exploitation. (Aucune entreprise ne veut être perçue comme un monopole !)

Mais considérez, pour un instant, qu’Apple est mort. Que seraient les ordinateurs personnels aujourd’hui si nous n’avions plus que Linux et Windows en place ? A quoi ressemblerait l’informatique mobile si Apple n’avait pas été là pour travailler sur l’iPhone ?

Oui, il est plus facile de développer et de tester dans un seul navigateur. Je suis sûr que les professionnels de l’informatique auraient aimé ne supporter qu’un seul type de machine. Mais la variété crée des opportunités pour nous en tant que développeurs à long terme. L’économie de Microsoft qui a sauvé Apple a conduit à des applications qui ont défié le Web qui nous a donné Chrome et la myriade d’API avec lesquelles Google va de l’avant. Si, à n’importe quel moment de cette chaîne d’événements, quelqu’un avait dit : “Meh, c’est tellement plus facile si nous utilisons tous la même chose”, nous n’aurions pas les carrières – ou le monde – que nous avons maintenant.

Développez dans plus d’un navigateur. Tester dans plus d’un navigateur. Utilisez plus d’un navigateur.

Vous êtes à la fois consommateur et producteur. Vous avez votre mot à dire sur la façon dont l’avenir se déroulera.


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *