Badass JavaScript

A showcase of awesome JavaScript that pushes the boundaries of what's possible on the web, by @devongovett.

WebKit.js: Yes it has finally happened! Browser Inception is now possible.

April 1st 2012

I knew this was going to happen eventually, it was just a matter of time.  WebKit has been ported to JavaScript, and no, this is not just some Emscripten compile, it is a full hand port of the popular browser engine to JS.  WebKit.js uses WebGL as a rendering backend and basically enables developers to never worry about browser differences again since we can now control what browser our users are using on our site.  Of course, it includes fallback renderers in 2d canvas and by generating PNG images on the fly for older browsers as well.  The idea is a bit like Google Chrome Frame, except rather than a plugin that users need to install, it can be used by the developer to control the browsing environment of all users of a website - pretty neat.  With no more cross browser differences, no more different prefixes for each browser, no more worrying about old browsers, and no more testing in 17 different browsers, I think WebKit.js could perhaps be the future of the Internet.

Of course, this has some standardistas on their soapboxes about why monoculture is bad for the web, but the ease of development that it enables for developers will probably win out in the long run.

WebKit.js is a full browser engine with full support for everything in WebKit including HTML, CSS and even a full JavaScript engine - written in JavaScript of course.  Why do we need that?  The same reason why we need it for HTML and CSS - cross browser compatibility.  If the JavaScript engine is the same across all browsers, we won’t need to worry about cross browser differences again.

Of course, WebKit.js is fully opensource on Github, so you can go read its glorious 250,000 lines yourself.  And don’t hesitate to start using it on all of your websites.  All you have to do is include a script tag at the top of your page and it will be rendered using WebKit.js instead of whatever browser the user visited your site with.  Enjoy!

Update: This was an April fools joke. Sorry if it got you. :)