Quantum (Mozilla)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Quantum is a Mozilla project encompassing several software development efforts to "build the next-generation web engine for Firefox users". It includes numerous improvements to the Gecko web browser engine of Firefox, largely incorporated from the experimental Servo project. Quantum also includes refinements to the user interface and interactions.[1][2]

Firefox 57, released in November 2017, is the initial version with a Servo component enabled. Mozilla dubs this and several planned future releases "Firefox Quantum".[3][4]

Background[edit]

Gecko is a mature, full-featured web browser engine that originated at Netscape in 1997. It is written in the C++ programming language.[5]

In 2013, Mozilla began the experimental Servo project, which is an engine designed from scratch with the goals of improving concurrency and parallelism while also reducing memory safety vulnerabilities. An important factor is writing Servo in the Rust programming language, also created by Mozilla, which is designed to generate compiled code with better memory safety, concurrency, and parallelism than compiled C++ code.[5]

As of April 2016, Servo needs at least several years of development to become a full-featured browser engine.[6] Thus the decision to start the Quantum project to bring stable portions of Servo into Firefox.

Components[edit]

The Quantum project is composed of several sub-projects.[1]

CSS 
Servo's parallel style sheet system integrated into Gecko. Benchmarks suggest that performance scales linearly with number of CPU cores.[7] This was released in Firefox 57.[4]
Render 
Servo's rendering architecture, called WebRender, integrated into Gecko. WebRender replaces the immediate mode drawing model with a retained mode model that is more easily accelerated by the GPU by taking advantage of CSS/DOM's similarity to a scene graph. Worst-case scenario rendering in testing exceeds 60 frames per second.[8]
Compositor 
Gecko's existing compositor moved to its own process, isolating browser tabs from graphics driver related crashes. Since compositor crashes will not bring down the browser content process, the compositor process can be restarted transparently without losing user data. This was released in Firefox 53.[9]
DOM 
Loosely inspired by Servo's Constellation architecture[10] and Opera's Presto engine,[11] Quantum DOM uses cooperatively scheduled threads within the DOM to increase responsiveness without increasing the number of processes and, thus, memory usage.
Flow 
An umbrella for user visible performance improvements driven by a team that works across Gecko components. Currently focused on real user performance improvements on major webapps, primarily the G Suite and Facebook.[12]
Photon 
A UI refresh of the entire application, with a strong focus on improving UI performance. Treated as a sister project to Quantum Flow.[13] This was released in Firefox 57.[3]
Network 
Improve the performance of Necko, Gecko's networking layer, by moving more network activity off the main thread, context dependent prioritization of networking streams, and racing the cache layer with the network.[14]

References[edit]

  1. ^ a b "Quantum". Mozilla Wiki. Retrieved 2017-04-20.
  2. ^ Cimpanu, Catalin. "Mozilla Announces Quantum, a New Browser Engine for Firefox". softpedia. Retrieved 2017-02-17.
  3. ^ a b https://www.mozilla.org/en-US/firefox/57.0/releasenotes/
  4. ^ a b https://blog.mozilla.org/blog/2017/11/14/introducing-firefox-quantum/
  5. ^ a b Bergstrom, Lars; et al. (May 2016). "Engineering the Servo Web Browser Engine using Rust" (PDF). Proceedings of the International Conference on Software Engineering.
  6. ^ "Servo remaining work". GitHub. Retrieved 2017-02-17.
  7. ^ "The Changelog". The Changelog. Retrieved 2017-03-28.
  8. ^ "Bay Area Rust Meetup February 2016". Air Mozilla. Retrieved 2017-03-28.
  9. ^ "Firefox faster and more stable with the first big bytes of Project Quantum, simpler with compact themes and permissions redesign". Mozilla Blog. Retrieved 2017-04-27.
  10. ^ "Servo Architecture". Youtube. Retrieved 2017-03-28.
  11. ^ "Mozilla's Quantum Project". Bill McCloskey's Blog. Retrieved 2017-03-28.
  12. ^ "Quantum Flow". Mozilla Wiki. Retrieved 2017-03-28.
  13. ^ dolske (2017-05-18). "Photon Engineering Newsletter #1". Dolske's blog. Retrieved 2017-07-04.
  14. ^ "TPE Necko/Projects - MozillaWiki". wiki.mozilla.org. Retrieved 2017-07-04.