Quantum

From MozillaWiki
Jump to: navigation, search

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.

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 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 will explore performance improvements not covered by the other Quantum components, such as UI optimizations.

Bugs

ID Priority Summary Whiteboard Keywords Assigned to
1320744 -- HttpChannelChild should implement nsIThreadRetargetableRequest [necko-active] Shih-Chiang Chien [:schien] (UTC+8) (use ni? plz)
1335518 -- [meta] tracking work to collect code coverage for Rust code
1302270 -- Responsiveness improvements in DOM meta, perf
1207306 -- Ship Firefox with multiple content processes [DevRel:P2] DevAdvocacy, meta
1307504 -- Tracking bug for network/cache racing [necko-active] meta Michal Novotny (:michal)
1264543 -- [meta] Out-of-process compositing David Anderson [:dvander]
1312741 -- Context Driven Priority tracking bug [necko-next] Honza Bambas (:mayhemer)
1283403 -- [Meta] Hasal Project - Web Service/App Performance measurement meta
1301170 -- [META] Tracking bug for GCOV code coverage collection. (Linux64-ccov build) cody_tran95
1337841 -- [meta] Quantum Flow Project meta
1305263 -- Build CodeCoverage MVP Brad Kennedy [:co60ca]
1243581 -- implement support for Servo's style system in Gecko meta
1311790 -- [meta] WebRender [gfx-noted]
1338218 P1 [META] PBackground for HTTP channels in e10s [necko-quantum][necko-active] Shih-Chiang Chien [:schien] (UTC+8) (use ni? plz)
1296400 P2 Remove support for windowed mode plugins must wait to drop non-Flash plugins dev-doc-needed, site-compat Benjamin Smedberg [:bsmedberg]
1325171 P3 Firefox visual refresh Stephen Horlander [:shorlander]
1274659 P3 Migrate 32-bit Firefox (WOW64) users to 64-bit Firefox (Win64) 64bit

17 Total; 17 Open (100%); 0 Resolved (0%); 0 Verified (0%);