Blink is Google's new rendering engine. Sort of.
Quite frankly, this situation is so complicated I can't even keep it straight. Here's what's happening, as I understand it:
In the beginning, there was WebKit. Okay, not the very beginning. More like the beginning of the middle, as KHTML was the beginning. But anyway, in the beginning of this mess, WebKit was forked from KHTML by Apple. Originally, WebKit was closed-source, but Apple would give back large amounts of code to KHTML. This had its problems, which were worked out when Apple open-sourced WebKit. At this time, there was Firefox (Gecko), IE (Trident), and Opera (Presto). There was then WebKit, which wasn't used in anything yet. Safari did not yet exist. Neither did Chrome.
Then, Safari was launched, becoming the first browser to use WebKit. So Apple web technologies, primarily Safari and iOS (UIWebView), used WebKit. At this point it becomes necessary to specify what parts different browsers were using, and actual names, especially WebKit, become confusing and less relevant. So now there's Safari (WebKit - WebCore + JavaScriptCore), Firefox (Gecko), IE (Trident), and Opera (Presto). Chrome did not exist yet.
Then the next thing happened: Chrome was born. Google used the same WebKit codebase, but they did screwy things to it (not like patches, but in the way that they embedded it) in order to enforce their process model. They also got rid of JavaScriptCore, and used V8 instead. So Apple worked on the WebCore and JavaScriptCore components of WebKit, and Google only worked on WebCore. Unfortunately, we also have to name WebCore more specifically. We'll call it TraditionalWebCore. For simplicity's sake, let's call TraditionalWebCore + JavaScriptCore "TraditionalWebKit", and let's call TraditionalWebCore + V8 "GoogleWebKit". So TraditionalWebKit and GoogleWebKit share TraditionalWebCore, which both Google and Apple work on (Google effectively contributes upstream). However, Apple works on JavaScriptCore, while Google works on V8. TraditionalWebKit and GoogleWebKit aren't "real" technologies, they're just names for collections of "real" technologies.
Confused? So am I. Let's see what browsers are now available: Firefox (still Gecko), IE (still Trident), and Opera (still Presto). Then there's all of Apple's web stuff, including Safari, which use TraditionalWebKit - that is, TraditionalWebCore paired with JavaScriptCore. Chrome (and when I say Chrome I really mean Chrome, Chromium, Chrome OS, Chromium OS, and Chrome Frame) uses GoogleWebKit, that is, TraditionalWebCore paired with V8.
Getting close to now, Opera announces that they're ditching Presto and using WebKit instead. Which WebKit? Well, they're using V8, which means that they're using GoogleWebKit. So now we've got Firefox (Gecko), IE (Trident), Safari (AppleWebKit - TraditionalWebCore + JavaScriptCore), Chrome (GoogleWebKit - TraditionalWebCore + V8), and Opera (GoogleWebKit, same as Chrome).
Finally, we get to now (yesterday?) when Google has officially forked "WebKit" and created Blink. So what does that mean? It's not as straightforward, IMHO, as "fork" would imply, because of the way that Google used WebKit, but also didn't. Essentially, Google already had a partial fork of TraditionalWebKit, which was GoogleWebKit. I say partial fork because TraditionalWebCore was shared, but the JS engine was not. So while V8 was not technically a fork, as it was written from scratch, it's essentially a modular component that does the same thing as JavaScriptCore, just with a different implementation - and this is exactly what a technical fork would be like.
Getting back to Google "forking WebKit": because of the aforementioned partial fork, we can't say that Google actually forked WebKit without spending a while explaining ourselves properly. What really happened here was that Google forked TraditionalWebCore. So previously we had TraditionalWebKit - TraditionalWebCore + JavaScriptCore - and GoogleWebKit - TraditionalWebCore + V8. These were previously connected through TraditionalWebCore, but now that Google has effectively forked TraditionalWebCore, they've replaced TraditionalWebCore in GoogleWebKit with GoogleWebCore. Thus, we now have Blink, which was previously GoogleWebKit, which is the pairing of GoogleWebCore and V8. Then, we can go back to calling TraditionalWebKit just "WebKit", because there are no different versions of WebKit anymore. Thank God, that was so confusing.
Also, because Opera was previously going to use GoogleWebKit, they've now officially confirmed that they'll be using Blink.
Then there's WebKit2. No one uses that yet, so, eh.
Anyway, my personal thoughts on Blink? Same as WebKit2: that is, eh. I don't really think that Blink will change web development all that much. Right now, it's basically the same as WebKit, with different JavaScript. However, I predict that in the same way that V8 was better than JavaScriptCore, Blink will become better than WebKit - it will be faster in every sense, although I don't think it will be as dramatic a change.
All this makes me feel, though, that the web needs a new rendering engine. Not a new Blink, but a new KHTML. A new Gecko. Because think about it:
- Trident was originally made for Internet Explorer 4 in 1997.
- Gecko was also born in 1997. It was going to replace Netscape's engine.
- Presto development started in 2003. Not as bad, but still.
- Blink is based on WebKit...
- WebKit is based on KHTML, which was originally written in 1999.
Now keep in mind that I don't know a ton about the internals of rendering engines. But it seems like we're due for a new rendering engine made from scratch. And it seems like that no matter how many performance optimizations you perform, there will always be things that you can't do simply because the architecture of the engine forbids it. V8 was made for the modern web, when other JavaScript engines where slightly too old for that. And wow, did V8 make a difference. It's still the fastest engine today, although these days SpiderMonkey (Gecko/Firefox) is neck and neck with it. We need the V8 of rendering engines.
FACEBOOK HOME
I want to skip this and write about other stuff, because that's more interesting to me at the moment. If I forget about this section, sorry.
MY LIFE!
So a couple months back I used Wubi to install Ubuntu on my school laptop. Epic.
Of course, I did screw it up by installing MATE, which pushed me over the hard drive capacity. And of course that meant that dpkg failed to do anything, so I had no idea how to free up space, etc. etc., and didn't know about recovery mode, so I had to wipe it. And also I tried to do a full install, and ended up getting my hard drive erased and reset. The end result, though, is that I'm really into Ubuntu again. I'm running the devel version, Raring, right now. One thing that I ended up doing is that I wrote a script to automate installation of my favorite packages and setting up of some configurations that I like, which was interesting. I'm going to write an application soon to automate the creation of this type of script. I'll get to that in a minute.
I also made my own custom desktop configuration file, which was super fun. It's based on Compiz and GNOME Panel, although I'm thinking of switching to MATE Panel, since GNOME Panel isn't maintained anymore(?). I went the fancy route (as usual) and instead of just making an xsession conf file, I made a gnome-session conf file too, so the session is gnome-session based. I tend to use GNOME Do to launch things.
I'm learning Python 3 and Ruby. Mostly I'm learning the Ruby so I can use Ruby on Rails.
I've been to only one other CodeDay, which was CodeDay Seattle, around the time of winter break. I tried to work on forked there, but it didn't really work, although I did start to learn stuff about how Yeoman works. Although now that I've discovered Brunch, it seems like that might be the superior tool. I had to leave early, at 1 AM. :(
Side note about my experience writing parts of this post: https://posts.app.net/4485209
I have some stuff about Mozilla and the status of the GNOME project, but I'll talk about those in different sections.
MOZILLA
It's Mozilla's 15th birthday this year. Happy birthday!
GNOME
I hate GNOME 3. I actually like it a lot - except for the fact that it doesn't do Compiz plugins - except I hate the way the GNOME Foundation is going, and I feel like GNOME 3 is the manifestation of that. I mean for god's sakes, look at their mission statement. It's unbelievably unspecific and generic: how are you supposed to define what "making great software" is?. I don't really want to talk about this more, because it's 4:40 AM at CodeDay and I'm tired.
Everyone suffers from GNOME 2 withdrawal, right?
No comments:
Post a Comment
Comment goes here.