Microsoft is a really different company now than it was 10 years ago. Who would have thought we would get Bash inside Windows as a supported Microsoft feature. Microsoft changed it’s stance towards the Linux community and Open Source communities in general in a radical way. As far as I am concerned, these are changes for the good.
And now in it’s latest move, Microsoft is doing what many web developers have hoped it would do for years and years. Back in 2006, in the last days of Internet Explorer 6, we would joke that MS should just switch to Firefox. Today, it is doing almost exactly that! It has announced it’s plans to ditch EdgeHTML, the native Edge HTML engine, and replace it with Blink, the fork from Webkit that Google made for the Chromium project.
EdgeHTML? Blink? WebKit??
Ok yeah this might deserve some explanation. A browser is a big complicated piece of software consisting of many different components. But at the core of every browser there is a component that we like to describe as the ‘render engine’ or the ‘html engine’, that interprets the HTML and CSS that the website contains and paints the browser window as the author of the website intended. Hopefully. Because historically there have been many incompatibilities between HTML engines. What would render ok in one browser might look completely broken in another.
Microsoft, after taking the browser market by storm with Internet Explorer versions 1 – 6, started to focus it’s energy elsewhere and did not give the HTML engine backing Internet Explorer the attention it needed for years. In the mean time, web standards continued to evolve and other browsers (Firefox, Safari, Opera, Chrome) did a much better job at evolving their respective rendering engines.
Initially, there used to be a browser named Konquerer on Linux that had an Open Source HTML engine named KHTML, that evolved into WebKit. This was adopted by Apple as the HTML engine for Safari and with the success of the iPhone it became a de-facto standard for mobile browsers. Then, when Google decided it wanted to develop it’s own browser, Chrome, it picked WebKit as it’s HTML engine as well. After a while Google decided that it was easier for it to fork WebKit into it’s own project, Blink. Then Opera, which had it’s own HTML engine named Presto (which was actually very good) decided that it was better for it to switch to Blink. So we had this situation where 3 major browsers, Chrome, Safari and Opera, were all based on HTML engines that derived from WebKit. And it gave developers a consistent cross-browser experience that was unheard of before.
In the mean time, Microsoft decided it was too late for Internet Explorer to salvage it and they started from scratch with Edge. We all were a bit disappointed they did not adopt Blink or Gecko but built something new, but at least it was a lot better than what had been in Internet Explorer and they were intent on making it standards compliant.
Towards one HTML engine
And so we arrived where we are today, where there are basically 4 big HTML engines in use, 2 of which derive from WebKit:
- WebKit: Safari
- Blink (derives from WebKit): Chrome, Opera
- Gecko: Firefox
- EdgeHTML: Edge
And now it seems Microsoft has come to the same point as Opera did before. Yes they have a great HTML engine at this point. So did Opera. But it takes a gigantic amount of effort just to keep up with the evolving standards and honestly, they have always been, and still are, behind on the (ironically) bleeding edge. Which is not what they intended Edge to be. And so, just like Opera, they are adopting Blink as the HTML engine powering Edge. Meaning Edge will automatically get all the same features and capabilities that are in Chrome and Opera.
After this switch is completed, probably somewhere during 2019, we will have gone one step further towards a unified HTML engine. WebKit, Blink and Gecko will be the only ones to remain.
Will Firefox one day drop Gecko and adopt Blink as well?
Gecko, the last man standing
I suspect it will take a lot for Mozilla to give up on Gecko. Mozilla was founded from the ashes of Netscape, so it’s history goes waaaaay back. And there is a lot invested in Gecko.
Also, Gecko is pretty amazing! It is much harder saying goodbye to a component that works great than it is to kill a buggie piece of cr*p.
Still, it might actually be a good thing for Mozilla to switch to Blink. Because the HTML engine should not be the part where the browser stands out from the competition. Au contraire! The HTML engine should render the page exactly according to the standards, so there is no room for competition here. Firefox should stand out from the crowd where it concerns freedom of choice, free software, privacy etc. Not on how a box-shadow renders on a floated div.
Can there be only one?
Well maybe! I mean who would have believed you if you told them 5 years ago that Microsoft would adopt Chrome’s rendering engine?? Mozilla might draw the same conclusion Opera and Microsoft did. And Frankly, Safari upgrading from WebKit to Blink looks like a no-brainer, because Google forked WebKit because it felt it was being held back by the slow progress on the WebKit part. So it seems reasonable to assume that WebKit is lagging behind on Blink. And with Microsoft adopting Blink we can expect it’s many highly qualified engineers to start contributing to Blink as well.
And so Mozilla, Apple, Google and Micrsosoft all contributing to the same underlying Open Source HTML engine might not be a pipe dream at all. It might be just around the corner!