Christian Heilmann

I will miss the “Douglas Crockford of browsers”

Wednesday, February 13th, 2013 at 1:27 pm

Opera as a pony Opera today announced that they are ditching their own Presto rendering engine for Webkit and V8. More details as to what that means for developers are on the ODIN blog. The reasons are reasons you expect a commercial company to give:

To provide a leading browser on Android and iOS, this year Opera will make a gradual transition to the WebKit engine, as well as Chromium, for most of its upcoming versions of browsers for smartphones and computers.

Two things led to this: Apple not allowing any other engine on iOS (which means that Opera for iOS, or ICE will be the same as Chrome on iOS – not really quite the other browser but a shell with the iOS engine under it) and developers building for webkit only and sites breaking in Opera. As Peter-Paul Koch put it:

Note carefully what this means: we web developers haven’t been doing our jobs properly. We didn’t bother to test our mobile sites on Opera Mini, even though it’s roughly as large as Safari iOS and Android.

I see this as a personal fail. I evidently haven’t been outspoken enough on the topic. I should have yelled in everybody’s ear until they did the proper thing.

It’s our own fault.

Content not showing up or showing up broken in your product is terrible for a commercial company – the web is never wrong, if your browser shows it wrongly it is your fault, right?

Wrong. I always called Opera the Douglas Crockford of browsers as it was ruthless in its implementation of standards. If something didn’t work in Opera there is a good chance that you did something wrong. Even better – fixing it in Opera in most cases meant looking at how the W3C standard meant things to work and write your code accordingly, which in most cases meant no change in other browsers, but cleaner code overall. Opera was my linting tool.

Big whoop, so what? Everybody uses Webkit, it is open source, and it is the best browser as everything just works, right? Again, I don’t feel good about this. As my colleague Robert O’Callahan put it:

Some people are wondering whether engine diversity really matters. “Webkit is open source so if everyone worked together on it and shipped it, would that be so bad?” Yes. Web standards would lose all significance and standards processes would be superceded by Webkit project decisions and politics. Webkit bugs would become the standard: there would be no way for developers to test on multiple engines to determine whether an unexpected behavior is a bug or intended.

Ex-Netscape employee and CSS working group chair Daniel Glazman agrees:

For the CSS Working Group, that’s an earthquake. One less testing environment, one less opportunity to discover bugs and issues.

Jake Archibald of the Chrome devrel team shares my views of Opera as a great testing platform, so much that when they were wrong, he just assumed it was his fault:

I develop in Chrome, then check stuff in Safari & Firefox. Usually, this would be painless, everything would be as expected (usually). Testing in IE and Opera was often less fun. But here’s the difference, things would be wrong in IE because of bugs, whereas things would be wrong in Opera because they were adhering to the spec (I’m generalising, of course). When Opera did the wrong thing with appcache FALLBACK entries I poured over the spec for a couple of hours on the assumption they were doing it right and the others were doing it wrong. Turns out Opera had a bug, but if any other browser was behaving so differently I’d have instantly assumed it was that browser getting it wrong.

As developers (well, let’s say as new developers to the web) we always complain about diversity in browsers and how hard it is to support them all. What we fail to remember there is that standards only work when they are tested and verified in many different environments. Otherwise, they aren’t standards and may just be happy accidents that are not necessarily repeatable. All browser engines have their good things and bad things and a good standard should define what is best in all of them and help implementing that across the browsers in use. As Jake found out, Presto was ahead of many others in terms of UI performance of JavaScript – a massive point in mobile:

Presto is full of surprises, and I’m only saying that half-sarcastically. In 2009 I was preparing a talk on JS performance and discovered that, in Opera, pages would continue to be responsive (scrolling, text selection) while JavaScript was stuck in a loop. No other browser did this, JavaScript blocks the UI thread.

I understand the motivation of Opera for this move, and I wish them all the luck they can have. Even more I wish that the engineering talent that comes to Webkit with this move will get a lot of power and be listened to. Opera was always a very loud voice advocating standards over what is easy and seems like a great idea at a certain time. It would be a shame if that voice gets drowned out by others using the same engine and having different ideas or a corporate agenda to follow. Standards aren’t dead, there is no “one Webkit” as much as there was no “one Internet Explorer”. I find it very disappointing that a company feels forced to make a move like that to stay commercially interesting.

Maybe I am a dreamer, but I always prefer choice over what is easy and promises me that everything just works. As, when you are honest, nothing ever just works and the only way to stay sane in this is to have a standard to compare to. We don’t only need “this works”, we also need “why does this work, and how can we ensure it is ready for changes that are coming up”.

Share on Mastodon (needs instance)

Share on Twitter

My other work: