Well, as you probably know by now, there's a new open source rendering engine based on WebKit, and it's called Blink. Going forward it will be powering all variants of Chrome.
That’s pretty much what my first sentiment was as well. Well actually it wasn’t. I work on the basis that I’m the least smart guy in the room (which works out to be true more often than I’d like) and my first thought was more like “What am I missing? Why such a big change?”
When it comes to web stuff I am entirely self-taught, like most developers, and for most of my career I cared very little for browser internals. After all, I’m giving browsers a bunch of stuff to deal with (HTML, CSS, JS), why should I start caring how they do it? I don’t sit there musing over my car’s ability to combust petrol whenever I take a drive.
I don’t sit there musing over my car’s ability to combust petrol whenever I take a drive.
I was dimly aware of WebKit, Trident and Gecko, but I was happy to consider them some abstract notion, much as I do with my car. Sometimes they were awesome, sometimes they sucked, but whatever the case I honestly didn’t care much for them. They just took my code and made it work. Job done.
A while ago I figured that I was going to have to understand things a little better and so I set about trying to understand more about browser internals. I recall the moment that I realised that there’s a ton of stuff outside of the engine that actually makes a browser a browser. In short, I realised that WebKit isn’t the browser and that it’s not the right mental model to consider Chrome and Safari as “pretty much the same thing”. In hindsight I feel a bit silly that I hadn’t thought about it in those terms before, but there we go, we all learn somehow.
Anyway, in my case understanding more about the browser internals helped me be a better developer because I was less reliant on the “magic” under the hood and I could code more tactically. I’d say if you have the time and inclination it’s well worth your effort to do the same. In the interests of not reinventing the wheel, I’ll just suggest that you read Paul Irish’s post about WebKit for Developers if you haven’t already. It covers the WebKit internals stuff I wish I’d known a few years ago. Obviously that’s only one part of the puzzle, though, because there are a bunch of different engines out there. But it’s a start! Actually, aside from Paul’s excellent summary, the HTML5 Rocks article that explains how browsers work is something of a must-read, too, so give that a whirl as well.
Today we have five major browsers: Chrome, Firefox, Safari, Opera and Internet Explorer. Opera is switching to use the Chromium project for their next version, and of the three remaining only one other is a WebKit port: Safari. It’s worth keeping in mind, then, that as developers if we do assume a certain amount of consistency between WebKit ports, there are still Firefox and Internet Explorer out there with a large market share that are not WebKit-based. But you know all this, so why do I mention it?
Well if two of the major browser vendors are not WebKit-based then we still have a situation where several completely different implementations need to interoperate and behave consistently. It’s actually far more important that we have standards around which compliant implementations can be built than it is that we have some “common base”. That way we can have a clearly documented set of APIs and behaviours that we can reference, no matter which browser we’re discussing. We need to be able to ask the question “Is this thing acting the way we all agreed it should?”
It’s actually far more important that we have standards around which compliant implementations can be built than it is that we have some “common base”.
OK, a new engine. Now what?
Well there’s a pretty fine Blink FAQ document that will hopefully answer the majority of your questions, but from my perspective there are a few final thoughts I have on all this.
We are building sites and apps for our users, and their expectations of what can be done in the browser grows year on year. Many of us are also building for businesses that choose between web and native as their primary delivery platform. I for one am really grateful when any browser vendor takes that need seriously, whether that’s Google or anyone else. I believe we are going to need an engine that will allow us to build the next generation of web apps. I think Blink is the start of that, and that’s something I’m really excited about.
Secondly there’s a new Chrome Status page, which gives way more insight into Chrome’s implementation of standards, as well as the known position of other vendors on a per-spec basis. It’s great to be able to get insight into the current status of whichever upcoming features your apps rely on, so that you can plan accordingly.
Finally there are now very clearly defined policies around how Chrome changes going forward. That means it should be clearer what we can expect from Blink and Chromium as a whole.