2017年までに、Firefoxには速度の問題があり、それは誰もが知っていた。ChromeはMozillaが見ていたのと同じハードウェアの潮流を読み取ってブラウザ市場に参入し、それを活用した。マルチコアCPUによってChromeはタブを別々のプロセスに分割できたため、忙しいバックグラウンドタブがフォアグラウンドのタブを妨げることはなかった。Firefoxの古いコードベースでは、同じ粗粒度のアーキテクチャに到達するのが遅れ、ユーザーは離れていった。

明白な修正にはそれぞれ限界があった。既存のシングルスレッドC++エンジンを絞っても、アイドル状態のコアは使えなかった。Chromeのタブごとのプロセス設計をコピーしても、複数のページが開かれている場合にしか役立たなかった。なぜなら、新しいページを1つ読み込む作業は依然として単一のコアで実行されていたからだ。そしてブラウザ全体をゼロから書き直すことは、その途中で製品を壊してしまう多年にわたる賭けだった。

Mozillaの答えは、まず別の研究所でその抜本的なアーキテクチャに資金を提供することだった。Mozillaはデータ競合のない言語であるRustと、細粒度の並列性に基づいて構築された研究用ブラウザエンジンであるServoを生み出し、並列レンダリングがより少ないバグでより高速になることを実証した。その後QuantumはServoのコンポーネントを1つずつFirefoxに移植した。CSSエンジンであるStyloはワークスティーリングによってスタイル計算をすべてのコアに並列化し線形の高速化を実現し、コンポジターは独自のプロセスに移され、Quantum DOMはメインスレッドのタスクに優先順位を付け、Quantum Flowの特別チームは遅いソーシャルフィードのようなケースを追跡した。

コンポーネントごとの道筋は、入れ替えの間もFirefoxが動作し続けることを意味し、どの移植も測定可能な成果を出荷した。最初のQuantumリリースであるFirefox 57は2017年11月14日に登場し、マルチプロセスブラウジングは2017年半ばからすでに全ユーザーにとってデフォルトだった。人々はFirefoxが再び高速になったことに気づき、リリース日のコメントはユーザーがChromeから戻ってきていることを伝えており、発表はHacker Newsで2,180ポイントの議論を集めた。

抜本的なエンジンを研究プロジェクトで実証し、その後その競合状態のないコンポーネントを1つずつ出荷製品に移植した

Rustはデータ競合という種類のバグを排除し、それによって細粒度の共有メモリ並列性がブラウザを賭けるに足るほど実用的になった。

Servoは統合前に各コンポーネントのアーキテクチャを実証したため、GeckoへのQuantumの各移植は出荷製品内での実験ではなく、テスト済みの研究の移植だった。

サブシステムを1つずつ入れ替えることで書き直しの崖を避けられた。ブラウザは継続的に出荷され、スタイル計算がその時間をコア数で割るように、各パーツは測定可能な利益をもたらした。

ユースケースに焦点を当てたQuantum Flowの特別チームは、ユーザーが実際に感じていた速度低下を修正し、その後CIテスト、テレメトリ、リグレッション追跡に支えられた恒久的なワークフローになった。

競合他社に必要なアーキテクチャがある場合、製品全体を書き直すのではなく、新しいアーキテクチャを別途構築して実証し、その後サブシステムを段階的に置き換えて、各入れ替えが測定可能な利益を出荷するようにする

Firefox Quantum(バージョン57)は2017年11月14日に出荷された。ローンチの解説記事はHacker Newsで2,180ポイントと687件のコメントを集め、記事へのコメントはChromeに離れていたユーザーが戻ってきていることを伝えている。Mozillaは、GPUレンダリングコンポーネントであるWebRenderが2018年中に搭載され、その間をAdvanced Layersが埋めると述べ、また特別チームのプロセスが定常的なツールと追跡になり、リグレッションが自動的に捕捉されるようになると述べた。このリリースはまた、レガシーXULアドオンのサポートを終了し、一部のコメンターはそれによって頼りにしていた拡張機能を失ったと述べた。

出典をたどる

出典

  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 ·