Meet the next generation of Browser Engines: Blink & Servo
April 06, 2013
Just before two days Google announced that it is forking WebKit for using in its Chromium open source web browser (thus, everything that follows it, Chrome, Chrome OS, Android Browser and others ), naming it Blink. This initiated a great round of talks all over the web on how it’s going to change Chrome, and other browsers in general. So I decided to write a blog post (and probably the first ever blog post of mine) on this.
Blink
The KHTML, started by KDE project back in late 90s led to great deal of developments and turned into WebKit with support of many giants has now a new fork called Blink, as Google calls it. But WebKit was already doing so great then why Google realized a need to have separate fork and alienate its development? The first and foremost reason is that while Chromium uses WebKit, it is essentially not exact same WebKit as we know it. Let’s first see, in its simplest form, what WebKit consists of.
Out of these three primary components, Google uses only WebCore (the actual layout engine which does the job of rendering HTML/CSS and media contents) while JavaScriptCore is replaced by Google’s own, V8. The low-level APIs, support for building Chrome extensions are specific to Chromium. Hence, Chromium is very different from WebKit, at the same time, it is also very close to WebKit. Other major difference is that WebKit uses very different approach when it comes to handling multiple processes, compared to that of Chromium. And not every feature that Google provided to WebKit of Chromium, is possible to port in WebKit, which holds-back WebKit and Chromium, both. So, this seems very viable to have a different fork on which Google can have full control on innovation.
But does it mean that Google and WebKit are no longer friends? What will happen to browsers who are already using WebKit or have plans to switch to WebKit? Well, Google said that developers working on Blink can contribute the same feature set to upstream if they wish to, and sharing of features (and fixes) in both the streams may be easy in the early stages but as Blink moves forward, situation may not be the same. As far as Opera is concerned, it said that it’ll be using Chromium as its base, and not the WebKit, so this isn’t going to affect Opera since it’ll also be using Blink anyway. However, WebKit’s development might be affected since Google was a major contributor to the project if we look at the commits made to the WebKit in last couple of years.
And this is what happened to original KHTML when WebKit was forked from it, and it happened for good, so this is a good sign for innovation. I’ll not be generous here but WebKit was so prevalent and every other browser was using it hence, it somehow monopolized the browser market, as after Opera killed its Presto, Trident (IE’s layout engine) and Gecko (Mozilla) were the only contenders WebKit had. But this decision reignites browser wars.
And what about us Web Developers? I’ll get back on that one in the end of this article.
Servo
Not popular as Blink became even before its birth. Servo is a brand new browser engine that Mozilla and Samsung are working on for a while. This isn’t a fork of Gecko or any other engine, but it is written from scratch in a programming language called Rust (an open source programming language by Mozilla itself). We know that in its early days, Firefox was amazing browser (it is still amazing for large number of users) but let’s face it, in last couple of years, it has become a huge bloat, cold-starting Firefox took forever, extensions still need a restart to complete installation, it is still not a true multi-process browser (referring to Stable channel of Fx). However, situation started to improve with Fx 4.0 but Mozilla realized it very late, Chrome came and took a huge toll in its global usage share.
Servo is being developed with keeping modern hardware in mind, where we have multiple processors with multiple computing cores, high-end GPUs to render HD graphics, and screens with trillions of pixels, none of which existed in early days of browsers.
So Gecko will die too? No. As old as the internet is, browsers too were made considering same old conventions, hardware/software limitations. Servo is said to be developed with keeping modern hardware in mind, where we have multiple processors with multiple computing cores, high-end GPUs to render HD graphics, and screens with trillions of pixels, none of which existed in early days of browsers. But Servo is still in its very early stages (GitHub repository available here) and so is the Rust (v0.6 as of writing this). So technically, Gecko and Servo will not compete each other in earlier stages, since Gecko is itself a matured and stable engine and giving acute competition to its counterparts but this will change obviously once Servo comes to mainstream.
Also, Mozilla has no plans to integrate Servo into Firefox anytime soon. But, Servo is a direct competitor to Blink in the future, even if its still nowhere close to it now.
I’m a Web Developer, Should I Be Worried?
Sounds like a nightmare when you get to know that new browser engines are coming and you’ll have to support them too. Vendor prefixes, version checking, graceful degradation, list goes on in our todos. But this will not be the case, as far as Blink is concerned, vendor prefixes will be a thing of the past and all you’d need to do is to enable a certain setting of experimental features and all your code will work as per the standard syntax. Also keep in mind that while browser vendors are different, they work together closely when it comes to web standards, hence life of web developers is going to be easy anyway and only thing we need to worry for now is increasing number of device form-factors, and not browsers.