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.

firefoxlogo13

 

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,

and

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.  

 

firefoxlogo13

 

 

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.

 

Banner


Visual Studio 17.12 Released Along With Aspire
25/11/2024

Visual Studio 2022 v17.12 is now available. The release can be used for .NET 9 projects and has a range of other improvements.



Azure Container Apps Dynamic Sessions Generally Available
02/12/2024

Dynamic Session support has been added to Azure Container Apps. Azure Container Apps is a serverless platform for running containerized applications, and dynamic sessions is designed to provide fast a [ ... ]


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info

Last Updated ( Monday, 30 January 2017 )