Google forks WebKit, unveils Blink

It’s apparently browser engine day today. After Mozilla and Samsung announcing Servo, Google has just announced it’s forking WebKit into Blink. Like WebKit, Blink will be open source, and it will also be used by other browser makers – most prominently, Opera has already announced it’s not using WebKit, but Blink. Update: Courtesy of MacRumors, this graph illustrates how just how much Google contributed to WebKit. Much more than I thought. Also, Chrome developer Alex Russell: “To make a better platform faster, you must be able to iterate faster. Steps away from that are steps away from a better platform. Today’s WebKit defeats that imperative in ways large and small. It’s not anybody’s fault, but it does need to change. And changing it will allow us to iterate faster, working through the annealing process that takes a good idea from drawing board to API to refined feature.”

All of you will be familiar with WebKit’s history, and how Blink fits nicely into the circle of code. WebKit was originally a fork off KHTML, the rendering engine built by the KDE project. Apple forked KHTML into WebKit, which was then adopted by virtually everyone else in the industry, save for Mozilla and Microsoft. Blink now mirrors WebKit’s origins.

The reasons for forking WebKit, according to Google, are architectural. For instance, Chromium uses a different multi-process architecture than WebKit itself, which leads to a lot of additional code complexity for both Chromium and WebKit. This, in turn, is a hindrance to innovation. Of course, another major reason is undoubtedly that by forking WebKit, Google will be able to implement things and change code around without having to worry about the impact it’ll have on WebKit itself.

In the short term, Blink will bring little change for web developers. The bulk of the initial work will focus on internal architectural improvements and a simplification of the codebase. For example, we anticipate that we’ll be able to remove 7 build systems and delete more than 7.000 files – comprising more than 4.5 million lines – right off the bat. Over the long term a healthier codebase leads to more stability and fewer bugs.

Blink will do a few things differently from WebKit. The most important one I could find, and probably to the delight of many, Blink will retire the use of vendor prefixes, following in Mozilla’s footsteps. “Historically, browsers have relied on vendor prefixes (e.g., -webkit-feature) to ship experimental features to web developers. This approach can be harmful to compatibility because web content comes to rely upon these vendor-prefixed names,” Blink’s FAQ states, “Going forward, instead of enabling a feature by default with a vendor prefix, we will instead keep the (unprefixed) feature behind the ‘enable experimental web platform features’ flag in about:flags until the feature is ready to be enabled by default. Mozilla has already embarked on a similar policy.”

Blink is open source – it’s part of the Chromium project – so others are free to adopt it as well. One browser maker has already announced it’s using Blink: Opera. “It’s great to be able to talk publicly about Blink, the new engine that will power Opera’s browsers (disclosure: my employer, but this is a personal post) and Chrome henceforth,” writes Opera’s Bruce Lawson, “I know a lot of people worried that there would be less diversity on the Web once Opera Presto was retired, and the forking of WebKit into Blink restores that balance. Opera will be contributing to Blink in future.”

Together with the announcement of Mozilla’s and Samsung’s Servo rendering engine, today has been a great day for the web. The web was in danger of falling victim of another monoculture – something we’ve experienced to the web’s detriment before – and today’s announcements make sure that’s not going to happen. As a web developer, your life may have just become a bit more difficult – and that’s a good thing, as it forces you to write as non-rendering engine specific as possible, and both Google and Mozilla dumping vendor specific prefixes will help a great deal here too.

Great news for the web, great news for competition, and thus great news for all of us. Expect Blink in your Chrome soon.

103 Comments

  1. 2013-04-03 10:47 pm
    • 2013-04-04 2:20 am
    • 2013-04-04 6:33 am
      • 2013-04-07 9:38 pm
    • 2013-04-04 12:00 pm
  2. 2013-04-03 10:58 pm
  3. 2013-04-03 11:03 pm
    • 2013-04-03 11:37 pm
      • 2013-04-05 1:57 am
    • 2013-04-04 1:36 am
  4. 2013-04-03 11:21 pm
  5. 2013-04-04 2:11 am
  6. 2013-04-04 2:16 am
  7. 2013-04-04 2:26 am
    • 2013-04-04 6:24 am
      • 2013-04-04 5:08 pm
        • 2013-04-06 5:15 pm
    • 2013-04-04 9:22 am
      • 2013-04-04 4:49 pm
        • 2013-04-04 5:19 pm
          • 2013-04-04 5:24 pm
    • 2013-04-04 11:23 am
      • 2013-04-04 11:24 am
        • 2013-04-07 10:04 pm
      • 2013-04-04 12:08 pm
      • 2013-04-04 1:35 pm
        • 2013-04-04 5:13 pm
    • 2013-04-04 4:19 pm
      • 2013-04-04 4:50 pm
  8. 2013-04-04 5:11 am
    • 2013-04-04 7:16 am
      • 2013-04-04 12:25 pm
        • 2013-04-05 7:32 am
    • 2013-04-04 2:26 pm
    • 2013-04-04 4:52 pm
    • 2013-04-06 5:17 pm
  9. 2013-04-04 6:56 am
    • 2013-04-04 7:33 am
      • 2013-04-04 3:37 pm
        • 2013-04-04 4:42 pm
          • 2013-04-04 4:58 pm
          • 2013-04-05 1:17 pm
          • 2013-04-04 5:37 pm
          • 2013-04-04 6:42 pm
          • 2013-04-04 7:07 pm
          • 2013-04-04 7:32 pm
          • 2013-04-04 7:40 pm
        • 2013-04-05 1:11 pm
      • 2013-04-04 4:27 pm
      • 2013-04-07 10:21 pm
        • 2013-04-10 9:26 pm
    • 2013-04-06 5:27 pm
      • 2013-04-10 9:45 pm
  10. 2013-04-04 7:27 am
  11. 2013-04-04 7:37 am
    • 2013-04-04 7:45 am
  12. 2013-04-04 8:48 am
  13. 2013-04-04 8:54 am
  14. 2013-04-04 12:05 pm
    • 2013-04-04 12:28 pm
      • 2013-04-04 11:19 pm
    • 2013-04-04 1:45 pm
  15. 2013-04-04 12:12 pm
    • 2013-04-04 12:16 pm
      • 2013-04-04 12:47 pm
    • 2013-04-04 1:12 pm
      • 2013-04-04 5:01 pm
    • 2013-04-04 3:14 pm
      • 2013-04-04 4:50 pm
        • 2013-04-04 6:25 pm
          • 2013-04-04 7:40 pm
          • 2013-04-04 8:00 pm
          • 2013-04-04 8:17 pm
          • 2013-04-04 9:45 pm
          • 2013-04-04 11:01 pm
          • 2013-04-05 6:48 am
          • 2013-04-05 11:17 am
          • 2013-04-07 1:00 pm
          • 2013-04-07 1:24 pm
          • 2013-04-07 2:01 pm
      • 2013-04-04 11:30 pm
      • 2013-04-06 5:21 pm
        • 2013-04-07 6:39 am
  16. 2013-04-04 2:33 pm
    • 2013-04-04 3:36 pm
  17. 2013-04-04 5:57 pm
    • 2013-04-04 6:10 pm
      • 2013-04-04 6:17 pm
        • 2013-04-04 6:43 pm
          • 2013-04-04 6:57 pm
      • 2013-04-04 9:35 pm
    • 2013-04-04 7:25 pm
      • 2013-04-04 8:10 pm
        • 2013-04-04 8:25 pm
          • 2013-04-05 1:11 am
      • 2013-04-05 1:29 pm
  18. 2013-04-04 10:53 pm
    • 2013-04-05 8:33 am
      • 2013-04-05 10:46 am
      • 2013-04-06 5:29 pm
        • 2013-04-08 12:46 pm
  19. 2013-04-05 9:52 am