It’s not about Webkit, silly. It’s about evolution.
February 20, 2013 § Leave a Comment
« Webkit is a rust bucket. We can’t move away from it, because our users rely on its bugs as much as on its features, but it’s based on deprecated technologies, concepts that don’t scale anymore, and it just won’t match today’s needs or hardware. If we had any choice, we would dump the whole thing and restart from scratch. »
Who said that? Nobody, I guess. Webkit is a very nice family of engines. Nice enough that Apple and Google have been using it in major browsers. A few days ago, Opera has announced that they will be abandoning Presto, their own engine, and switch to Webkit. This is certainly an impressive portofolio.
But let’s face it: Webkit is ancient technology. Née KHTML, Webkit was first released in 1998, roughly the same date as Mozilla’s Gecko or Microsoft’s Trident, and four years before Opera’s own Presto. At the time, multi-threading was expensive, multi-core systems were a thing of the future, GPUs could only be used by games, tomorrow’s CPU was twice faster than yesterday’s, compiling C++ on various platforms involved plenty of guesswork and nobody outside of academic circles took JITs, type-safe programming or dynamic programming seriously. Oh, and nobody in their right state of mind could imagine using a browser for working on documents or for playing non-trivial games. Also, privacy and open web were two things that only Opera was even considering.
Fast-forward 15 years. Expectations about browsers have changed. Browsers now support first-person shooters and office suites. Browsers need to work on low-powered CPUs. Multi-core has become cheaper than faster CPUs, and GPUs are now insanely powerful. Most applications written nowadays target JIT-ed platforms. C and C++ have very serious competitors. And let’s not forget that every spy, every mobster and their nephew is attempting to steal control of your browser, and that Google, Facebook and others have made billions of dollars finding out exactly what you are doing online. During these 15 years, Webkit, Gecko, Trident and Presto have been upgraded, optimized, hacked, hardened and tweaked countless times into the powerhouses we use every day.
A few days ago, Opera threw the towel on Presto and joined the Webkit movement. While I have my doubts about the business consequences of this move, I am no business strategist, so I will not comment upon something that is doubtless beyond my ken. This change is, of course, disappointing. Disappointing for the Mozilla community because it seems that we have lost our strongest ally in the war for privacy and the open web. Disappointing also because the very reason given by Opera for this choice is that there were too many developers writing not Web Applications but Webkit Applications.
And see, that’s a major problem for the future of the whole web. Whenever a Web application is developed that targets open standards, it can work with any standards-compliant browser, not just one of the major browsers, but in fact any browser that has yet to be developed. On the other hand, by definition, developing a Webkit application means effectively that your application will work only on Webkit browsers. If you are a web developer, remember this statistics: this means that writing webkit applications ensures that you reject ~60% of your potential user base – and that’s assuming that all Opera users will migrate to Webkit. And that’s also assuming that all Webkit browsers are all bug-for-bug and quirk-for-quirk compatible, which is actually far from true.
Actually, it is a little worse than that. Because if your Webkit application depends upon Webkit quirks, bugs that end up fixed or non-standard features that end up abandoned, this means that, within one or two years, your potential user base will have evaporated to only the users who never upgrade their browser. All of a sudden, relying upon cutting-edge Webkit features has turned into a handicap.
Oh, and remember that non-quote about Webkit being a rust bucket? One day soon, you will hear it. It is no secret that Mozilla is working in Servo, its next-generation rendering engine, and I would be surprised if Google and Microsoft were not doing the same thing behind closed doors. Servo is written mostly from scratch. Not with the objective of being bug-to-bug and quirk-to-quirk compatible with Gecko or with Webkit, but purely from the specifications of the open web. Doubtless, Google’s and Microsoft’s hypothetical replacements for Webkit and Trident follow or will follow the same strategy, simply because writing a rendering engine is a task of considerable complexity, and attempting to reverse-engineer behavior from bugs increases complexity and likelihood of unexpectedbugs by an other of magnitude.
So, do you want to maximize your user base and ensure that your application will continue working a few years from now?