4 big changes coming soon to Firefox

Web developers and lay users alike will benefit from these four key initiatives underway with Mozilla's Servo project

4 big changes coming soon to Firefox

Mozilla's ambitions are hard to ignore. An impressive new programming language, Rust, has emerged as a product of the group's efforts to create Servo, a web rendering engine designed for a modern, multicore-powered web. But many are still unclear on the details of that project -- what specifically Mozilla is trying to speed up and how.

Here's a look at the four most significant changes taking place under the hood for Firefox, bundled together as Project Quantum, and what each of them will mean for both web developers and ordinary users.

1. Servo

What it is: The next-generation layout engine for Mozilla Firefox, written in Rust.

Why it matters: Servo's big pitch is three-fold. One, it's designed to take advantage of multiple cores for faster rendering of content, so web pages with complex layouts don't choke. Two, it uses Rust to guarantee memory safety without sacrificing speed. (Nobody likes an unstable browser, but nobody wants to use a slow one, either.) Three, it's meant to ease the process of building and maintaining one of Firefox's key internals, thanks to Rust's highly modern package-management and build systems.

Thus, those who want to contribute to future versions of Firefox or take advantage of those components may need to start getting up to speed with Rust right now. With Rust's supportive community and growing emphasis on ease of uptake, the project should be less problematic.

2. WebRender/Quantum Render

What it is: Servo's GPU-optimized rendering component.

Why it matters: Modern hardware of all stripes, from the lowliest of smartphones on up, are equipped with GPUs designed to offload the gruntwork of rendering both 3D and 2D imagery. Servo's multicore web layout engine won't provide much real-world speed if the actual rendering component is a bottleneck -- hence, WebRender.

WebRender is nominally designed to work hand in hand with Servo. That said, it could be employed in any project in need of a rendering back end, in much the same manner Servo could be reused as a web engine for projects besides Firefox.

3. Quantum Compositor

What it is: Moves the GPU compositing work out of the main process.

Why it matters: According to Mozilla, many Firefox crashes are due to bad interactions with graphics drivers. By relocating the code that interacts with the GPU into its own process, those crashes can be kept at arm's length and not bring down the whole browser. It's also another method to parallelize operations, since a separate process to handle compositing can run on a separate core (if one is available).

Chrome uses a similar approach, so problems with cutting-edge items like WebGL merely throw a warning on the current page rather than causing the whole browser to go belly-up. Right now, this only handles compositing the components on a web page, not jobs like accelerating video playback -- one task at a time.

4. Quantum DOM

What it is: A project to allow the loading and reading of web content to be less "janky," through smarter handling of content on a page.

Why it matters: Most web developers are highly conscious of even incremental changes -- a banner loading here, an in-line image there -- bringing down a web page's responsiveness as content reflows. The naïve solution is to parallelize those operations across multiple cores, but that gobbles up memory.

Quantum DOM, as explained on Bill McCloskey's blog, tries to cooperatively schedule DOM changes across user-space threads rather than processes; it may eventually run individual frames on pages in their own threads as well. If done right, this would allow for more complex page layouts with fewer performance bottlenecks.

The hard part is figuring out what tasks can be grouped together most effectively. This project may continue to be refined long after Servo becomes a standard-issue item.

Copyright © 2016 IDG Communications, Inc.

How to choose a low-code development platform