Au cours de cette année, le projet Electrolysis a été la plus haute priorité pour Firefox afin que les utilisateurs puissent naviguer en bénéficiant de plusieurs processus. Utiliser plusieurs processus pour Firefox permet d’améliorer considérablement la sécurité et les performances. C’est la plus grande modification ayant jamais été appliquée à Firefox et pendant les prochains mois, nous déploierons la première partie d’Electrolysis pour 100 % des utilisateurs de Firefox sur ordinateur.
Ceci étant dit, nous ne manquons pas d’idées pour améliorer les performances et la sécurité. En fait, Electrolysis nous a simplement permis d’accomplir quelque chose d’encore plus grand.
Nous l’appelons le Projet Quantum.
Quantum représente notre effort afin de développer le moteur web de prochaine génération pour Mozilla et commencer à fournir aux utilisateurs des améliorations majeures d’ici la fin 2017. Si vous n’êtes pas familier avec le concept d’un moteur web, il s’agit du cœur de navigateur qui exécute l’ensemble du contenu que vous recevez lorsque vous naviguez sur le Web. L’objectif de Quantum est de tirer le meilleur parti du parallélisme et d’exploiter pleinement les composants matériels modernes. Quantum contient différents composants dont plusieurs ont été adoptés à partir du projet Servo.
Le moteur obtenu permettra une navigation rapide et fluide tant sur les ordinateurs que sur les mobiles, créant ainsi un « saut quantique » (NDT : quantum leap en anglais, ce nom est inspiré d’une série TV de science-fiction) en termes de performance. Qu’est-ce que cela signifie ? Grâce à Quantum, nous visons des gains de performance qui soient tellement remarquables que toute votre navigation sur le Web s’en trouvera changée : les pages chargeront plus rapidement, le défilement sera fluide ; les animations et les applications interactives répondront instantanément et pourront gérer des contenus encore plus intensifs tout en conservant des taux de rafraîchissement constants. Enfin, le contenu qui vous est le plus important bénéficiera automatiquement de la priorité la plus haute, concentrant la puissance de calcul là où vous en avez besoin.
Comment parviendrons-nous à tout cela ?
Les navigateurs web sont apparus à l’ère des ordinateurs de bureau. Ces premiers ordinateurs étaient simplement équipés de processeurs dotés d’un seul cœur qui ne pouvaient traiter les commandes que dans un seul flux. Ils ne réalisaient qu’une seule chose à la fois. Encore aujourd’hui, dans la plupart des navigateurs, une page web est principalement exécutée dans un seul thread, au sein d’un seul cœur.
Mais de nos jours, on navigue sur Internet depuis un téléphone, une tablette ou un ordinateur portable, qui ont tous des processeurs bien plus sophistiqués, souvent avec deux, quatre cœurs ou plus. De plus, il est maintenant commun d’incorporer un ou plusieurs processeurs graphiques (GPU) extrêmement puissants, qui peuvent accélérer le temps de rendu ou d’autres types de calcul.
Un autre changement majeur s’est produit ces quinze dernières années sur le Web : ce dernier est passé d’un ensemble de documents statiques associés par des hyperliens à une constellation d’applications interactives. Les développeurs souhaitent construire des parcours sans aucune latence, des animations foisonnantes et des interactions en temps réel, autant de choses également attendues par les consommateurs. Pour que cela soit possible, il nous faut une plateforme web qui permettent aux développeurs de bénéficier de la puissance sous-jacente de l’appareil, sans qu’ils aient à se prendre la tête sur la complexité liée au parallélisme et aux spécificités du matériel.
Ainsi, le projet Quantum consiste à développer un moteur de nouvelle génération afin de répondre à la demande du Web de demain grâce à la puissance de calculs de nos appareils modernes. Quantum démarrera à partir de Gecko et remplacera des composants principaux du moteur qui bénéficieront le plus de la parallélisation ou d’une migration vers le GPU. Un axe majeur de notre stratégie consiste à intégrer des composants révolutionnaires de Servo, un projet indépendant et communautaire de moteur web, parrainé par Mozilla. Dans un premier temps, Quantum partagera quelques composants avec Servo mais au fur et à mesure de l’évolution du projet, nous ferons des essais pour en intégrer encore plus.
Un certain nombre de composants de Quantum sont écrits en Rust. Si Rust ne vous est pas familier, il s’agit d’un langage de programmation système qui fonctionne à la vitesse de l’éclair et simplifie le développement de programmes parallélisés, en garantissant la sûreté de la mémoire et l’isolation entre les threads. Dans la plupart des cas, le code écrit en Rust refusera même de compiler s’il n’est pas fiable.
Nous prenons un grand nombre d’initiatives distinctes mais associées dans le cadre de Quantum, et nous allons réexaminer de nombreuses hypothèses et implémentations anciennes. L’approche de haut niveau consiste à repenser de nombreux aspects fondamentaux du mode de fonctionnement d’un moteur de navigateur. Nous allons renouveler la conception des briques fondamentales, par exemple la façon d’appliquer les styles CSS, d’exécuter les opérations sur le DOM, et d’obtenir le rendu graphique sur un écran.
Quantum est un projet ambitieux, mais les utilisateurs n’auront pas à attendre longtemps pour en voir les premiers progrès, qui seront rendus publics. Nous allons rendre disponibles les avancées majeures l’année prochaine, à la suite de quoi nous publierons les versions successives. Une première version de notre nouveau moteur fonctionnera sur Android, Windows, Mac et GNU-Linux. Nous espérons aussi qu’un jour nous pourrons le proposer sous iOS.
Nous sommes persuadés que le projet Quantum produira des améliorations significatives de performances. Si vous êtes développeur et souhaitez vous investir, vous pouvez en apprendre davantage sur Quantum sur le wiki de Mozilla, et parcourir les diverses manières d’y contribuer. Nous souhaitons franchir avec vous ce pas décisif, le saut… quantique !