Mozilla Firefox Replacing Gecko With Servo
Written by Nikos Vaggalis   
Monday, 30 January 2017

The time has finally come for Firefox to upgrade the aging Gecko rendering engine that served it for 20 or some years.The upgrade will enable Firefox to take full advantage of modern CPU's and GPU's, and result in lighting fast performance improvements on both desktop and mobile devices.

"Pages will load faster, and scrolling will be silky smooth. Animations and interactive apps will respond instantly, and be able to handle more intensive content while holding consistent frame rates. And the content most important to you will automatically get the highest priority, focusing processing power where you need it the most."

It wouldn't be that easy however.Switching from a solid, long serving and well proven engine to something new, constitutes a formidable task, especially when the project in question, the Firefox browser, is live and in production.



For this reason the transition will be facilitated with the aid of yet another project, project Quantum, an independent, community-based web engine sponsored by Mozilla, which is going to act as the bridge between the two ecosystems, until the transition completes:

"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."

Quantum then, will leverage the high-performance components of Servo to bring more parallelization and GPU offloading to Firefox.These high-performance core components in active development are:

  • rust-bindgen, 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.
  • Quantum CSS (aka Stylo) for integrating Servo's parallelized CSS style system into Gecko.
  • Quantum Render, Servo's next-generation renderer optimized for GPU rendering, to act as the graphics backend for Firefox.
  • Quantum Compositor, a compositor that moves Gecko’s compositor into its own process, since moving code that interacts with the GPU into its own process will make Firefox more stable and eliminate most graphics related Firefox crashes.
  • Quantum DOM, a project that will make Gecko more responsive, especially when there are a lot of background tabs open.

Servo as a project is still considered experimental, as such it has a lot of catching up to do till it's considered a feature rich and complete replacement of Gecko;the fact however is that it continuously evolves and will soon be good enough for making its very first appearance as part of a future Firefox developer build.

As such Servo has two long term goals to meet:

incrementally replace the components in Firefox with the ones written in Rust and shared with Servo,


to determine product opportunities for a standalone Servo browser or embeddable library (e.g., for Android).

These are further broken down into several sub-tasks, as they appear on the project's Roadmap.

The 2016 goals that were completed, were:

  • Create an initial end-to-end browser tech demo that we can start iterating browser.html frontend
  • Oxidation: Ship Rust/Servo components in Firefox
  • Track performance systematically
  • Allow comparisons with Gecko and Blink
  • Support more standard benchmarks
  • Webrender became the default graphics engine in production

while others still on the to-do list are:

  • Get the autolander working for Stylo to share Servo code with Firefox
  • Finish off the Servo components required for Stylo
  • Complete the transition to MSVC on Windows
  • Experiment with WebRender in other programs
  • putting more research into Magic DOM and/or other JS optimizations and Software transactional memory (in service of layout + script parallelism)

Basing on Rust looks yet another reason that might slow the project's progress down, since this new systems programming language, despite its advantages in security, safety and parallelization, is still in an infant or experimental state.

Nevertheless, Servo is actively looking for contributors, so if you feel like it you can download, build and get started with Servo from it's Github's repository.

There you'll find several open issues you could contribute to such as :

  • Add a tidy check for use statements with extraneous spaces
  • Add a notification for elements that a child text node changed
  • Produce portable output (avoid generating system-dependent tests + configuration to improve type replacements)

Saying that, the best way to get started, is by going through the Hacking Servo - Quickstart guide

So a lot to expect in the not so distant future, advancements that could reestablish Firefox as one of the most popular, cross platform browsers out there.  





More Information

Servo, the Parallel Browser Engine Project

Servo Roadmap

Hacking Servo - Quickstart guide

Related Articles

Mozilla Plans Firefox Rebuild 

Mozilla Builds Servo, a New Browser Engine 

Chrome Makes More Gains Firefox Continues To Decline


To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.



At What Age Do Programmers Write Languages?

This is just one of many question that can be answered by reference to PLDB, the programming language database devised and maintained by Breck Yunits, himself the author of Scroll, an o [ ... ]

IBM Launches The Granite Code LLM Series

IBM is introducing decoder-only code models for code generative tasks as part of its Granite collection. The models have been trained with code written in 116 programming languages and range in size f [ ... ]

More News

C book



or email your comment to:

Last Updated ( Monday, 30 January 2017 )