Blink’s First Birthday

Thursday, April 03, 2014

Last April we introduced Blink as the new rendering engine for Chromium. Since then, the project has grown to include over 200 active contributors, and code complexity has been reduced significantly. We’ve also made encouraging progress on our top priority for 2014: mobile web performance.

A productive community emerged on our mailing list within Blink’s first few months. Each week, we now see on average 23 new discussion threads and 5 new “intents” to change the web API surface. We’re honored that 41% of our “intents” have come from folks outside of Google, and 33% of our active contributors are non-Googlers. We’re especially excited about recent contributions like Yoav Weiss’s implementation of the <picture> element, the Opera team’s prolific improvements and feature removals, Intel’s performance work, Adobe’s continued work on making the web awesome with CSS Shapes and other graphics and layout work, Samsung’s investment in mobile functionality, and more.

We also built the Chromium Feature Dashboard, a tool for staying up-to-date on Blink’s web API surface. It’s currently tracking implementation of 168 web platform features and anonymous usage statistics for 295 JavaScript APIs & HTML tags and 428 CSS properties. We use these usage statistics to see which features can be safely deprecated. In the offline world, last September we held our first bi-annual contributors’ conference with over 160 participants from 10+ organizations.

On the technical side, code size and complexity remains an ongoing challenge for Blink. Code complexity slows development and leads to bugs. Fortunately, we’ve been able to aggressively remove and simplify our code because Blink’s only supported port is Chromium. In aggregate, nearly half the codebase has been eliminated since work on Blink began last year. Notable simplification efforts include unifying CSS and SVG animations with the Web Animations engine, replacement of our WebIDL compiler, factoring of a blink_platform layer out of core code, and continued work on a C++ garbage collector.

2014 promises an even greater increase in mobile computing, thus we continue to focus Blink’s efforts there. Software performance is critical on mobile devices because of constrained hardware and high user expectations. To improve mobile web performance, we have projects to speed up rendering, minimize binary size, reduce input latency, preserve battery power, shrink memory consumption, and more.

We’ve seen some results already. For example, the tight relationship between Blink and Chromium has allowed us to improve the abstraction layer between Blink and Chromium’s compositor. We’re now much more careful to do work for Blink only just before Chrome draws to the screen, avoiding wasting CPU cycles generating results that will overwritten before the next frame is drawn anyway. Through tighter integration, we’ve also achieved 50% savings in compositing updates that change only CSS transforms. This is just the beginning of our performance work; we expect even further improvements from newer efforts like GPU rasterization and better scheduling.

As we enter our second year, we plan to continue to improve Blink on mobile devices, grow our community, and fight the good fight against complexity creep. Join us or follow along to stay in touch!

Posted by Eric Seidel, Software Engineer and Code Complexity Curtailer

Post a Comment