Browser Engines |
December 3rd, 2021 |
tech |
Gecko (source code): Developed by Mozilla for Firefox. While it previously powered several other browsers, at this point it looks like the Tor Browser and Waterfox are the only ones still tracking Gecko.
-
WebKit (source code): Beginning as a fork of KHTML, it's primarily developed by Apple for Safari. It also powers GNOME Web (Epiphany) and Otter.
On iOS, all browsers, including Firefox and Chrome, are powered by WebKit. This is an Apple requirement (2.5.6), and is controversial.
Blink, part of Chromium (source code): Beginning as a fork of WebKit, it's primarily developed by Google for Chrome. It also powers Edge, Brave, Silk, Vivaldi, Opera, and most other browser projects (some via QtWebEngine). If someone introduces a new browser and doesn't talk about its engine, it's very likely they are using Blink.
You could also make the case for two others:
-
Flow: A clean-slate closed-source browser and engine, designed to make effective use of parallelism. This matters most on highly resource-constrained devices, and if you have a Raspberry Pi you can download and play with their demo. The reason I am not including this engine above (yet!) is that while it's made impressive progress, including handling Google Docs, it's still a ways from done; the demo page has "we're not quite ready to start receiving reports for rendering issues just yet, these are mostly down to missing features, so as we add them you'll see those issues steadily disappear over time." You can see which features they have and haven't implemented on the web-platform-tests dashboard. To get a very rough sense of where it stands today we can compare the proportion of web platform tests that pass in each browser:
Chrome 97% Firefox 96% Safari 94% Flow 24% Goanna / UXP: A pre-Quantum fork of Gecko, developed for Pale Moon. There doesn't seem to be an official SCM: palemoon.org/sourcecode links to a snapshot archive and an archived GitHub repo. It looks like it was on repo.palemoon.org until sometime between May and October 2021 (wayback). Probably ~2021-08-25, since that's the final public commit. Based on the timing, probably deleted it as part of the MyPal licensing blowup? They don't seem to participate in web-platform-tests. This looks like a fork that has fallen well behind Firefox (ex: no web components or nullish coalescing), and I expect we'll see them fall further behind and either shut down or rebase on top of one of the actively maintained engines.
I've heard some concern that we're losing browser engine diversity as the web platform grows and it becomes harder to build and maintain something that supports it fully. While I do think the size of the web platform could have that effect, I'm not seeing it yet. Some of this is that there just haven't ever been that many competitive browser engines. In the late 90s, we had three (powering Netscape, IE, and Opera) and then four (KHTML) in the early 2000s. In 2003 Safari (WebKit) forked from KHTML, making five. For three months in 2013 we had six, between Chrome forking WebKit to make Blink (April) and Opera discontinuing Presto for Blink (July). In 2016 KHTML development fell off, with consumers switching to first WebKit and then Blink, bringing us down to four. In 2020 Edge switched from their own engine to Blink, bringing us down to three. And now with Flow we'll probably be back to four soon.
Comment via: facebook, lesswrong