Bis 2017 hatte Firefox ein Geschwindigkeitsproblem, und das wusste jeder. Chrome war in den Browsermarkt eingetreten, hatte denselben Hardwaretrend gelesen, den auch Mozilla sah, und ihn dann ausgenutzt: Mehrkern-CPUs erlaubten es Chrome, Tabs in separate Prozesse aufzuteilen, sodass ein beschäftigter Hintergrund-Tab den Vordergrund-Tab nicht blockieren konnte. Firefox' ältere Codebasis machte es schwer, dieselbe grobkörnige Architektur zu erreichen, und Nutzer wandten sich ab.

Die naheliegenden Lösungen hatten jeweils eine Obergrenze. Das Ausquetschen der bestehenden Single-Threaded-C++-Engine konnte untätige Kerne nicht nutzen. Das Kopieren von Chromes Prozess-pro-Tab-Design half nur, wenn mehrere Seiten geöffnet waren, denn die Arbeit des Ladens einer neuen Seite lief weiterhin auf einem einzigen Kern. Und den gesamten Browser von Grund auf neu zu schreiben war eine mehrjährige Wette, die das Produkt auf dem Weg dorthin kaputt machen würde.

Mozillas Antwort war, die radikale Architektur zuerst in einem separaten Labor zu finanzieren. Es schuf Rust, eine Sprache frei von Datenrennen, und Servo, eine Forschungs-Browser-Engine, die auf feinkörniger Parallelität aufbaute und bewies, dass paralleles Rendering schneller mit weniger Fehlern läuft. Quantum transplantierte dann Servo-Komponenten eine nach der anderen in Firefox: die CSS-Engine Stylo parallelisierte die Stilberechnung über jeden Kern mit Work Stealing für lineare Geschwindigkeitsgewinne, der Compositor wanderte in einen eigenen Prozess, Quantum DOM priorisierte Main-Thread-Aufgaben, und eine Quantum-Flow-Streitkraft jagte Fälle wie langsame soziale Feeds.

Der Weg Komponente für Komponente bedeutete, dass Firefox zwischen den Austauschen weiter funktionierte und jeder Port einen messbaren Gewinn lieferte; Firefox 57, die erste Quantum-Version, erschien am 14. November 2017, wobei Multiprozess-Browsing bereits ab Mitte 2017 für alle Nutzer Standard war. Die Leute bemerkten, dass Firefox wieder schnell war, Kommentare am Veröffentlichungstag beschreiben Nutzer, die von Chrome zurückwechselten, und die Ankündigung zog eine Hacker-News-Diskussion mit 2.180 Punkten nach sich.

Die radikale Engine in einem Forschungsprojekt beweisen und dann ihre rennfreien Komponenten eine nach der anderen in das ausgelieferte Produkt transplantieren

Rust beseitigte die Fehlerklasse der Datenrennen, was feinkörnige Shared-Memory-Parallelität praktikabel genug macht, um einen Browser darauf zu wetten.

Servo bewies die Architektur jeder Komponente vor der Integration, sodass jeder Quantum-Port in Gecko eine Transplantation getesteter Forschung war statt eines Experiments im ausgelieferten Produkt.

Das Austauschen von Subsystemen eines nach dem anderen vermied die Klippe des Neuschreibens: Der Browser wurde kontinuierlich ausgeliefert, und jedes Stück, wie die Stilberechnung, die ihre Zeit durch die Kernanzahl teilt, lieferte einen messbaren Gewinn.

Die auf Anwendungsfälle fokussierte Quantum-Flow-Streitkraft behob Verlangsamungen, die Nutzer tatsächlich spürten, und wurde dann zu einem dauerhaften Workflow, gestützt auf CI-Tests, Telemetrie und Regressionstracking.

Wenn ein Rivale eine Architektur hat, die man braucht, schreibe nicht das ganze Produkt neu: Baue und beweise die neue Architektur separat und ersetze dann Subsysteme schrittweise, sodass jeder Austausch messbare Gewinne liefert

Firefox Quantum (Version 57) erschien am 14. November 2017; die Erklärungsseite zum Start zog 2.180 Punkte und 687 Kommentare auf Hacker News nach sich, und Kommentare zum Artikel beschreiben Nutzer, die zu Chrome gewechselt waren und zurückkamen. Mozilla sagte, WebRender, die GPU-Rendering-Komponente, werde im Laufe des Jahres 2018 landen, wobei Advanced Layers die Lücke überbrücken solle, und dass der Streitkraft-Prozess zu regulärem Tooling und Tracking werde, damit Regressionen automatisch erkannt würden. Die Veröffentlichung beendete außerdem die Unterstützung für Legacy-XUL-Add-ons, was laut einigen Kommentatoren Erweiterungen kostete, auf die sie angewiesen waren.

DEN BELEGEN FOLGEN

Die Quellen

  1. Entering the Quantum Era — How Firefox got fast again and where it's going to get faster Mozilla Hacks · hacks.mozilla.org ·
  2. Hacker News discussion: Entering the Quantum Era — How Firefox got fast again Hacker News · news.ycombinator.com ·