Quantum
Quantum is not a new web browser. Quantum is Mozilla's project to build the next-generation web engine for Firefox users, building on the Gecko engine as a solid foundation. Quantum will leverage the fearless concurrency of Rust and high-performance components of Servo to bring more parallelization and GPU offloading to Firefox.
As the project evolves we'll be adopting more of Servo's components, and leveraging the research that helped build them, to make Firefox faster and more reliable than ever. Servo is a research project and doesn’t yet have all the functionality users expect from a full-featured web browser. By taking an incremental approach and merging proven components from Servo to Gecko as they are ready, users won't have to wait long to start seeing dramatic improvements to Firefox stability and performance. We're going to ship major improvements in 2017, and we'll iterate from there.
See the video of Jack Moffitt’s Web Engines Hackfest presentation for a preview of some of the Servo components that will be integrated into Firefox.
Contents
Getting Involved
Quantum is a big project that ties together several of Mozilla’s communities and codebases. The easiest way to get involved in the Quantum project is to dive into one of the projects listed below, to help us writing code, running tests and filing bugs.
If you're interested in contributing to Quantum or Servo, drop by:
- the #quantum or #servo IRC channels on Mozilla's IRC server
- the dev-quantum mailing list
- the mozilla.dev.quantum NNTP newsgroup
The Servo Starters site has a list of easy tasks that are good for beginning contributors to Rust or Servo.
rust-bindgen
rust-bindgen is a C++ bindings generator for the Rust language. Quantum uses rust-bindgen to generate the glue code between Firefox’s C++ code and Servo’s Rust components. To get started, check out the rust-bindgen contributing guide and bugs tagged on GitHub as “easy” bugs.
Quantum CSS
Quantum CSS (aka Stylo) aims to integrate Servo's parallelized CSS style system into Gecko.
One front where you can help out is adding new properties to Servo's CSS parsing crate. This requires familiarity with Rust, but is otherwise a good way to dip your toes into Servo's style system. To get started, see Servo's CSS property hacking guide for more information.
If you do not know Rust, you can help implement keyword properties. See the Stylo hacking guide for more details. The Stylo hacking guide also has instructions for building Stylo if you wish to play with it yourself. If you know C++, Firefox bug 1277133 has information about easy Gecko bugs that will assist Stylo's integration with Gecko.
Some Stylo bugs that are good for new Servo contributors are tagged on GitHub as “easy” bugs and “less-easy” bugs.
Quantum Render
WebRender is Servo's next-generation renderer optimized for GPU rendering. The Quantum Render project aims to ship WebRender as the graphics backend for Firefox. See the Platform/GFX/Quantum_Render page for more details.
Quantum Compositor
The Quantum Compositor moves Gecko’s compositor into its own process. Since graphics driver instability is a major source of Firefox crashes, we expect that moving code that interacts with the GPU into its own process will make Firefox more stable. This work is tracked in bug 1264543.
Quantum DOM
The Quantum DOM project will make Gecko more responsive, especially when there are a lot of background tabs open. When Quantum DOM is finished, JS code for different tabs (and possibly different iframes) will run in separate cooperatively scheduled threads; the code for some background tabs will never run at all.
Bill McCloskey wrote more about Quantum DOM on his blog.
Quantum Flow
The Quantum Flow project is part of a bigger Quantum Initiative. It explore performance improvements not covered by the other Quantum components, such as UI optimizations.