Google Splits With WebKit to Launch Blink Engine in Chrome 28

Blink Questions Answered — Google for Developers

Google for Developers

Google separated Blink from WebKit because divergent multi-process architectures made joint maintenance unworkable, forcing Chrome to build an independent engine coupled strictly to its own content layer.

AI-assisted summary of Blink Questions Answered — original source. Check the original for full context.

Source published:

Key ideas

  • Google officially forked WebKit to create Blink, transitioning Canary immediately and scheduling Chrome 28 as the first stable release to run the new engine across desktop and Android in roughly ten weeks. (2:30)
  • Blink will run exclusively on Chromium's content layer rather than supporting multiple operating system ports, standardizing directly on V8 for JavaScript and Skia for graphics rendering. (10:26)
  • Blink adopted a strict no-vendor-prefixes policy for new web features, committing instead to runtime flags while systematically auditing, standardizing, or deprecating inherited -webkit- prefixes. (6:58)
  • Google clarified that active patch sharing with upstream WebKit will diminish rapidly as the codebases diverge, with no plans to integrate Blink's multi-process changes back into WebKit2. (12:34)

Detailed notes

## Background Published on YouTube by Google for Developers on April 4, 2013, this video features Chrome platform leads answering the top community questions following the announcement of Blink. Engineering leads Darin Fisher and Eric Seidel, Product Manager Alex Komoroske, and Developer Advocate Paul Irish clarify architecture decisions, project timelines, and policies outlined on the project's developer FAQ.

## TL;DR Following Google's announcement of the WebKit fork Blink, the Chrome platform team addresses major community questions about the engine's future, architecture, and integration timelines. The panel confirms that Blink will officially ship starting in Chrome 28 and operates against Chromium's content layer with deep V8 and Skia integration, removing the need for platform-specific `#ifdef` abstractions. They outline policies to eliminate vendor prefixes, clean up legacy DOM features without breaking the web, maintain existing user-agent strings, and eventually transition Android WebView to a Blink foundation. Additionally, the team clarifies the historical reasons for diverging from WebKit2, affirming that while patch sharing will diminish over time, collaboration across web standards bodies and with peers like Mozilla remains strong.

## Atmosphere & style The session feels like an open, candid, and pragmatic roundtable discussion among experienced engineers navigating a major industry transition. Paul Irish moderates with developer-focused clarity, while Darin Fisher and Eric Seidel offer seasoned architectural insights balanced by Alex Komoroske's measured product perspective. Despite addressing high-stakes questions about technical divergence and industry politics, the tone remains collegial, transparent, and relaxed, seasoned with self-aware humor about user-agent strings, office neighbors, and the infamous `<blink>` tag.

## Bulletin - [02:30](https://www.youtube.com/watch?v=TlJob8K_OwE&t=150s) Google officially forked WebKit to create Blink, transitioning Canary immediately and scheduling Chrome 28 as the first stable release to run the new engine across desktop and Android in roughly ten weeks. - [10:26](https://www.youtube.com/watch?v=TlJob8K_OwE&t=626s) Blink will run exclusively on Chromium's content layer rather than supporting multiple operating system ports, standardizing directly on V8 for JavaScript and Skia for graphics rendering. - [06:58](https://www.youtube.com/watch?v=TlJob8K_OwE&t=418s) Blink adopted a strict no-vendor-prefixes policy for new web features, committing instead to runtime flags while systematically auditing, standardizing, or deprecating inherited -webkit- prefixes. - [12:34](https://www.youtube.com/watch?v=TlJob8K_OwE&t=754s) Google clarified that active patch sharing with upstream WebKit will diminish rapidly as the codebases diverge, with no plans to integrate Blink's multi-process changes back into WebKit2.

## Key takeaways - [00:08](https://www.youtube.com/watch?v=TlJob8K_OwE&t=8s) Blink and WebKit have parted ways with no formal relationship, making ongoing patch synchronization unlikely as architectures diverge. - [02:30](https://www.youtube.com/watch?v=TlJob8K_OwE&t=150s) At launch, Blink remains functionally identical to WebKit, preserving existing User Agent strings to avoid breaking compatibility. - [02:30](https://www.youtube.com/watch?v=TlJob8K_OwE&t=150s) Chrome 28 is the target release for shipping Blink on stable desktop channels and Android. - [04:59](https://www.youtube.com/watch?v=TlJob8K_OwE&t=299s) The team is exploring radical architectural ideas, such as housing the DOM directly inside JavaScript (V8) to remove C++ context switching overhead. - [06:33](https://www.youtube.com/watch?v=TlJob8K_OwE&t=393s) Blink plans to prune obsolete, legacy DOM features like the <isindex> tag by leveraging Google Search web crawl data to quantify breakage risk. - [06:58](https://www.youtube.com/watch?v=TlJob8K_OwE&t=418s) Vendor prefixes are discontinued for future features; runtime flags will gate experiments to prevent permanently locking engines into vendor-specific APIs. - [09:28](https://www.youtube.com/watch?v=TlJob8K_OwE&t=568s) Blink avoids WebKit's platform fragmentation and #ifdef sprawl by targeting Chromium's virtual content layer exclusively. - [10:26](https://www.youtube.com/watch?v=TlJob8K_OwE&t=626s) Standardizing strictly on Skia for graphics and V8 for JavaScript enables deep architectural optimizations previously restricted by WebKit's multi-backend requirements. - [12:34](https://www.youtube.com/watch?v=TlJob8K_OwE&t=754s) The fork was driven largely by diverging multi-process architectures, as Chromium could not adopt WebKit2 without an unreasonable engineering rewrite. - [16:46](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1006s) Android's future platform WebView will transition to a Blink- and Chrome-backed engine, unifying mobile browser infrastructure. - [17:28](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1048s) The Dart VM remains absent from mainline Chromium due to language maturity and long-term maintenance standards, not technical or architectural barriers. - [19:24](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1164s) Google views multiple independent rendering engines as essential to the web's health to prevent developers from coding to a single engine's quirks. - [21:20](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1280s) Blink retains WebKit's mixed BSD and LGPL licensing model without any relicensing. - [21:20](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1280s) Codec decoding like H.264 remains isolated within the Chrome browser pipeline and operates completely decoupled from Blink's core layout boxes. - [26:40](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1600s) The team firmly rejected competing against Mozilla's Servo, contrasting Blink's production-oriented mandate with Servo's experimental research focus. - [29:01](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1741s) Blink will never implement a '-blink-' vendor prefix or natively revive the legacy blink tag.

## Detailed walkthrough ### [00:08](https://www.youtube.com/watch?v=TlJob8K_OwE&t=8s) Introductions and the Future Relationship with WebKit

Developer Advocate Paul Irish introduces the session, noting that within a single day following the Blink announcement, hundreds of questions and votes poured in from the developer community. Joining him on the panel are Darin Fisher (Engineering Lead for the Chrome web platform team), Alex Komoroske (Product Manager on the Chrome web platform team), and Eric Seidel (a longtime WebKit contributor now on the Blink team).

Addressing a multi-part question from Peter Kasting regarding the formal relationship between WebKit and Blink, whether the Chromium port will be stripped from WebKit, and whether tooling or policies will exist to sync bug fixes and features across both engines, Eric Seidel clarifies the informal path forward:

> “There's no real formal relationship between the two teams.”

He explains that while the two projects will likely exchange ideas and share patches early on when the architectures remain close, the codebases will inevitably diverge over time, making direct patch sharing much harder. Eric leaves the decision of removing the Chromium port entirely to the WebKit community's discretion, adding that passionate contributors on both sides will remain motivated to share concepts. Alex Komoroske emphasizes that this mirrors Chrome's existing collaboration with other browser engines through standards bodies, informal discussions, and public bug trackers.

[02:30](https://www.youtube.com/watch?v=TlJob8K_OwE&t=150s) Release Timelines, Availability, and Android Integration

Addressing questions from Mihai in Bucharest and several other developers regarding when Blink will hit Canary and Stable channels, Alex Komoroske stresses that at launch, Blink is functionally identical to WebKit. Developers running the latest Canary build will already be running Blink without noticing any difference, as the User Agent string remains unchanged for the time being. Paul Irish confirms that Canary builds have already switched under the hood, but developers will face no sudden disruptions.

Turning to Android and the future of the stock browser, Darin Fisher explains that Chrome will use Blink uniformly across all platforms, while decisions regarding the legacy Android browser depend on the broader product cycle. Paul Irish points out that Chrome for Android and desktop will officially ship Blink starting in version 28:

> “So 28 is the first Chrome release.”

Paul notes that Chrome 28 is currently in Canary and is expected to hit the Stable channel in roughly ten weeks, with an Android beta heading to the Google Play Store along the way.

[04:59](https://www.youtube.com/watch?v=TlJob8K_OwE&t=299s) Exploring Architectural Ideas: Moving the DOM into JavaScript

Addressing Greg’s question about ambitious architectural changes mentioned in the announcement documentation—specifically the concept of moving the entire Document Object Model (DOM) directly into JavaScript to accelerate performance—Eric Seidel outlines how the engine currently operates. In the legacy layout, the DOM is implemented in C++ within WebCore. Whenever a script touches a DOM node, execution must leave the JavaScript virtual machine, cross the boundary into WebCore C++, and return. While this interaction is already heavily optimized, moving the DOM directly inside the JavaScript engine would allow scripts to manipulate nodes without ever leaving the virtual machine.

```mermaid flowchart TD accTitle: Legacy WebCore DOM Crossing vs Proposed Blink DOM Architecture accDescr: Diagram illustrating JavaScript crossing into C++ WebCore compared to unified execution within the V8 engine.

subgraph LegacyArchitecture["Legacy WebCore Architecture"] JSVM["JavaScript Virtual Machine (V8)"] Boundary["Bridge Crossing Overhead"] WebCore["WebCore (C++ DOM Implementation)"] JSVM -->|"Script DOM Call"| Boundary Boundary -->|"Context Switch"| WebCore end

subgraph FutureBlink["Proposed In-JS DOM Architecture"] UnifiedVM["JavaScript Engine (Direct DOM Storage)"] FastAccess["Native In-VM DOM Access (No Crossing Overhead)"] UnifiedVM --- FastAccess end ```

Darin Fisher cautions that this concept is an experimental exploration rather than a guaranteed enhancement:

> “Crazy, because it's not exactly an automatic win.”

Darin explains that any radical re-architecture comes with distinct trade-offs that the engineering team must investigate carefully. Alex Komoroske adds that the project wiki is currently gathering a wishlist of bold ideas that were previously impossible when constrained by WebKit's architectural boundaries.

[06:33](https://www.youtube.com/watch?v=TlJob8K_OwE&t=393s) Deprecating Legacy Features and Ending Vendor Prefixes

The panel addresses plans mentioned in the documentation to make backwards-incompatible changes by stripping out obscure DOM features to shed technical debt and gain performance. Eric Seidel explains that this cleanup reflects an industry trend that began with HTML5, which purged obsolete elements like the `<isindex>` tag (an outdated HTML2/HTML3 concept) as well as unused entity reference nodes from the DOM specification.

Darin Fisher emphasizes the engineering philosophy behind these deprecations:

> “The idea is to identify the low hanging fruit, and clean up the platform, if we can.”

Darin notes that an engine cannot simply accumulate features indefinitely without degrading the platform over time, though removals must be handled cautiously through developer evangelism and migration paths so websites do not break. Alex Komoroske points out that Google has been indexing the web via search data to evaluate real-world usage and calculate the exact breakage risk of pruning specific APIs.

In terms of CSS and prefixes, Alex Komoroske notes:

> “We announced yesterday that going forward we'll have a policy of no vendor prefixes, which is similar to what Mozilla is doing, and the policy they've adopted.”

Alex explains that Blink will systematically audit inherited `-webkit-` prefixes on a case-by-case basis: unprefixing features that are stable, standardizing features that provide value, or fully deprecating nonstandard remnants until the engine is completely free of prefixes.

- Legacy tags such as `<isindex>` and entity reference nodes have already been slated for removal in WebKit and Blink following web standards. - Google uses search index crawl data to measure the precise percentage of web pages relying on obscure DOM methods. - Moving forward, Blink adopts a strict no-vendor-prefix rule for newly implemented web features, mirroring Mozilla's approach.

[09:28](https://www.youtube.com/watch?v=TlJob8K_OwE&t=568s) Avoiding Collaboration Bottlenecks via a Virtual Platform

Paul Irish presents a question asking how Blink will avoid the collaboration friction, review slowdowns, and architectural hurdles that plagued WebKit as more external contributors join and port it to other operating systems.

Darin Fisher responds that the fundamental difference lies in porting. Rather than scattering platform-specific code and operating system abstractions throughout the engine core, Blink operates against a unified virtual platform layer. Because Chromium's multi-process, sandboxed security model required stripping out all direct operating system dependencies from the WebCore layer years ago, Blink targets this single abstraction layer. Consequently, running Blink on new devices—spanning high-end desktop machines down to tiny embedded environments—requires little bespoke porting work within the rendering engine itself.

[10:26](https://www.youtube.com/watch?v=TlJob8K_OwE&t=626s) The Content Layer, Modularity, and Deep Integration with V8 and Skia

Darin Fisher explains that going forward, Chromium's content layer is the only platform that will support Blink. This architectural focus makes the Blink codebase extraordinarily portable. Developers have already achieved widespread success using Chromium's content layer—the multi-process embedding layer that wraps around Blink—to port the engine to other operating systems and diverse application types without needing to fork the project or inject excessive platform-specific code. This structure allows broad community participation without littering the source tree with conditional preprocessor directives (`#ifdef`s).

Alex Komoroske references a blog post Paul Irish wrote a few weeks prior detailing the difficulty of WebKit’s layered architecture, where every new port forced maintainers to bring a massive set of custom platform implementations to the table. In Blink, the content layer provides these components in a clean, cross-platform manner. Fisher emphasizes that while Blink is modular enough to allow embedders to strip out unused modules, Chromium prefers structural modularity over hacking up the codebase with preprocessor macros.

Addressing the dependencies of the engine, Irish asks whether V8 and Skia come bundled as part of this layer. Fisher confirms that both are implied; Blink relies strictly on Skia for graphics and V8 as its JavaScript engine. Komoroske points out that this tight coupling offers an unprecedented opportunity to optimize the interfaces between the rendering engine and its core subsystems. Fisher notes that both the V8 and Skia teams are eager to revamp their integration points with the renderer, which will involve deeper changes to those internal interfaces.

```mermaid flowchart TD accTitle: Chromium Content Layer and Blink Architecture accDescr: Diagram showing how the Content Layer embeds Blink alongside V8 and Skia without ifdef sprawl. subgraph ContentLayer["Chromium Content Layer (Multi-Process Embedding)"] direction TB Blink["Blink Rendering Engine"] V8["V8 JavaScript Engine"] Skia["Skia Graphics Library"] Blink <--> V8 Blink <--> Skia end Embedders["Third-Party Embedders & Platforms"] --> ContentLayer ```

- Blink runs exclusively on Chromium's multi-process content layer, eliminating platform-specific variations within the rendering core. - The codebase avoids macro sprawl: “We strive in the Chromium to modularize, as opposed to using preprocessor directives to hack up the code base,” explains Darin Fisher. - Tighter coupling with V8 and Skia enables architectural interface redesigns that were previously constrained by WebKit's multi-engine support.

---

[12:34](https://www.youtube.com/watch?v=TlJob8K_OwE&t=754s) Upstream Contributions and the WebKit2 Multi-Process Split

Paul Irish asks whether changes made in Blink will be contributed back to the upstream WebKit project. Eric Seidel stresses that Blink and WebKit are now entirely separate projects with separate codebases, and Google has no active plans to backport patches. Drawing an analogy to WebKit's original fork from KHTML, Seidel notes that while many patches initially bounced between the two projects due to their close lineage, diverging code paths naturally reduce backporting over time. Komoroske and Seidel observe that while anyone in the open-source community is free to port patches, divergence will make it increasingly difficult. Fisher expects that although some Googlers may still submit changes to WebKit in the short term, those contributions will diminish.

Irish raises a pointed question from the community regarding the historical multi-process dispute: Google stated that difficulties working with WebKit2's multi-process model motivated the fork, yet Apple engineers have stated they invited Chromium to integrate its multi-process architecture into WebKit prior to the creation of WebKit2 and were refused.

Fisher confirms that Apple did express interest in Chromium's multi-process model shortly after Chrome launched. However, Chromium's architecture was already mature, tightly coupled to Chrome-specific libraries, and foreign to WebKit conventions:

> “However, we saw that as a mountain of work, a large, technically challenging engineering project for us.” — Darin Fisher

Because the engineering effort was prohibitive and timelines did not align, Google found no practical path to contribute that code to WebKit. Instead, both teams decided to collaborate where mutual benefit was highest: WebCore. Sharing the sensitive code responsible for HTML parsing, DOM construction, and CSS rendering delivered immense value for five years. However, Fisher explains that Google's desired changes to the shape of WebCore are fundamentally incompatible with what WebKit is prepared to accept. Seidel clarifies that comparing Apple's early offer to Google's later evaluation of WebKit2 compares two different architectures at two entirely different points in time—five years ago versus one or two years ago. Ultimately, both teams simply chose different architectures to solve similar problems.

- Eric Seidel on patch sharing: “And we don't have any plans, currently, to be moving patches.” - Apple asked to adopt Chromium's multi-process architecture after Chrome's initial launch, but Chromium's infrastructure was already too deeply integrated with internal Chrome libraries to extract without massive friction. - Both teams focused their shared energy on WebCore (HTML, DOM, CSS) where collaboration was most effective. - Eric Seidel on the divergent paths: “The reality is they're just very different architectures to serve very different needs.”

---

[16:46](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1006s) Android WebView Implementation

Irish shifts the conversation to mobile, asking what the Blink announcement means for the Android WebView implementation. Fisher notes that public activity in the Chromium open-source project already reveals active development on an Android WebView API built on top of Chrome.

Fisher states that in the fullness of time, as that Chrome-based WebView lands in Android, Blink will naturally become the underlying engine for the platform WebView. The engineering team is eager to see WebView transition to a Chrome- and Blink-based foundation because having unified plumbing across the mobile browser and embeddable WebView enables the Chrome team to directly drive performance and platform quality forward.

- Android WebView development is actively underway directly within the Chromium tree. - Once the Chromium-backed WebView ships to Android devices, Blink will replace the legacy WebKit WebView engine. - Consolidating on Blink allows the Chrome engineering team to maintain and improve WebView alongside the mobile browser.

---

[17:28](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1048s) Scripting Engines, the Dart VM, and API Responsibility

Irish asks whether Blink will support multiple scripting languages, pointing toward community speculation around integrating the Dart VM. Fisher clarifies that the Dartium project already provides a Chromium build embedding the Dart VM via an existing patch that sits on WebKit without causing massive disruption. The absence of the Dart VM in mainline Chromium is not an architectural limitation of WebKit or Blink; rather, it is a deliberate decision tied to the maturity of Dart itself. Google is unwilling to make a permanent, long-term commitment in the shipping browser until the VM reaches the right milestone.

Komoroske underscores that the Blink project enforces stringent standards regarding web compatibility risk and shipping features responsibly. Fisher recounts an internal engineering maxim—that every addition must justify its place on the device:

> “I think the web platform is famous for having multiple solutions to the same problem. And we see that as a problem. We have to be responsible to not create more of those problems.” — Darin Fisher

Fisher emphasizes that Blink must avoid redundant ways of solving the same problem. Because deprecating platform APIs is historically painful and hazardous for developers, the engineering team intends to validate every feature thoroughly and commit only to capabilities they are prepared to maintain over the long term.

- Dartium proves that alternative VMs like Dart can integrate into the engine without disrupting the core architecture. - Mainline Blink excludes the Dart VM not due to technical barriers, but due to product timeline decisions and long-term maintenance criteria. - Blink's API policy seeks to eliminate platform redundancy to prevent future deprecation cycles.

---

[19:24](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1164s) Impact on Other Browsers and Google's Ongoing Role in WebKit

Irish reads a question submitted by user "spiffytech" asking how Blink will impact the myriad of other browsers that have historically adopted WebKit. Komoroske responds that Google fundamentally views multiple independent rendering engines as an engine of innovation that safeguards the long-term health of the open web. Fisher adds that while the Chromium team remains committed to web standards, shared web platform tests, and cross-browser consensus, having multiple implementations prevents web developers from writing code tailored to the quirks and bugs of a single dominant engine.

Seidel highlights that Blink provides other browser vendors with meaningful choices. However, he clarifies an important architectural distinction: embedding Blink is not directly comparable to embedding WebKit, because Blink is inseparable from the Chromium content layer. Any browser or application vendor wanting to leverage Blink must embed Chromium's content layer rather than treating Blink as a standalone drop-in component.

Returning to Google's relationship with WebKit, Seidel reminds the audience that Google contributed to WebKit long before Chrome was officially launched and anticipates continued contributions from Google in various capacities. Fisher notes that Google is not telling its engineers they are forbidden from contributing to WebKit; rather, the Chromium team itself is given full freedom to direct its focus toward Blink.

| Topic | WebKit Embedding | Blink Embedding | |:--- |:--- |:--- | | **Architectural Boundary** | Standalone rendering library with custom platform ports | Coupled to the Chromium Content Layer | | **Dependencies** | Pluggable graphics and JS engines per port | Standardized on Skia (graphics) and V8 (JavaScript) | | **Code Customization** | Relies heavily on `#ifdef` macros across platform ports | Structural modularity through the content layer | | **Engine Diversity Goal** | Single codebase adapted across multiple platforms | Multiple independent browser engines adhering to shared web standards |

- Multiple competing rendering engines protect developers from relying on single-engine engine bugs and quirks. - Embedding Blink requires integrating Chromium's content layer, unlike the standalone port structure of WebKit. - Darin Fisher on Google's policy toward WebKit: “I think is important to say that, as Google, we're not telling people they shouldn't contribute to WebKit. We're just telling them that, feel free to focus on Blink.”

[21:20](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1280s) Open-Source Licensing and Codec Support

Addressing the licensing structure of the new fork, Darin Fisher clarifies that the team is not performing any relicensing as part of Blink's creation. Because WebKit itself historically absorbed source code from numerous external projects, Blink remains a mixture of licenses—primarily BSD and LGPL.

When Paul Irish asks whether Blink will continue to support the H.264 video codec, Fisher emphasizes that media format compatibility is fundamentally a browser-level concern: “Will it continue to support the H.264 codec? That's really more of a Chrome question.” Eric Seidel expands on this architectural boundary, pointing out that Blink operates completely decoupled from video decoding mechanics: “Blink doesn't know what codecs even exist. It has a box in which the video goes. And something outside of Blink makes the video go there.”

```mermaid flowchart LR accTitle: Separation of Blink Rendering and Media Codecs accDescr: Diagram showing Blink rendering a video element box while external Chrome components feed decoded media streams like H.264 into it. subgraph Browser["Chrome Browser Layer"] A["Media Pipeline / Codecs (H.264, VP8)"] end subgraph Engine["Blink Rendering Engine"] B["Layout Box (&lt;video&gt; container)"] end A -->|"decodes and feeds video frames"| B ```

[22:11](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1331s) User-Agent Strings and Web Compatibility

Addressing developer speculation over whether a new `Blink` token will appear alongside historic engine tokens like `KHTML` or `Gecko`, Fisher states that there are currently no plans to alter the user-agent string. Specifically, the version token following `AppleWebKit` and `Safari` will remain unchanged; only the version number appended to `Chrome` will continue to increment.

While the team openly laments the convoluted state of user-agent strings across the industry, they recognize the fragility of the broader ecosystem: “Because, like it or not, people do all kinds of interesting string compares against it,” notes Fisher. Alex Komoroske agrees that current user-agent strings are “crazy,” pointing out that if the string is ever modified in the future, the conversation will take place transparently on the open `blink-dev` mailing list. While Fisher recalls an effort from a couple of years earlier that successfully stripped out a few unnecessary tokens, Seidel and Irish summarize the core engineering constraint with a shared web-platform mantra: “Just don't want to break the web.”

[23:37](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1417s) Testing Blink and Following Ongoing Development

Turning to code availability, Fisher and Irish confirm that Blink is already accessible in Chrome Canary as of the day of the announcement, and developers can build Chromium with Blink directly from source. Seidel credits the team's infrastructure engineers who pulled an all-nighter to ensure that developers could compile Blink and that incoming patches could already be landed on day one.

To help developers track commits, architecture discussions, and bugs without getting overwhelmed, the panel highlights several resources: - Joining the open `blink-dev@chromium.org` mailing list or the `#Blink` IRC channel on Freenode. - Visiting `chromium.org/blink` for direct links to repositories, mailing list archives, and change sets. - An IRC-based commit bot (modeled after WebKit’s bot) to announce commits in real time. - Chrome beta release summary posts that outline newly enabled features, flags, and deprecated prefixes. - Viewing `chromestatus.com`, a platform dashboard tracking feature implementation status and standardization progress across the entire browser ecosystem, which has already received contributions from engineers at Adobe and Mozilla.

[26:40](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1600s) Impact on Dart and Relationship with Mozilla’s Servo

When asked whether Blink’s separation from WebKit will influence the Dart language or result in a Dart VM being integrated into Chrome, Fisher and Seidel clarify that Dart remains an independent open-source project whose roadmap is unaffected by the rendering engine fork.

The panel also rejects the notion that Blink is positioned as an aggressive competitor to Mozilla's experimental Servo project, noting that the two initiatives serve fundamentally different purposes:

- **Blink**: A pragmatic, production-focused fork that iterates directly on WebKit’s established codebase to reliably ship software to users immediately. - **Servo**: A ground-up research experiment built from scratch to explore radical concurrency and novel architectural concepts that may or may not eventually ship in a final browser.

Seidel explains that the ecosystem relies on both philosophies: “One of WebKit's goals was WebKit is not a science project. We're about shipping a product today. And the reality is the world and the web ecosystem need both kinds. We need exploratory crazy new things. And we also need to ship something today.”

The team describes their relationship with Mozilla as collaborative rather than adversarial. Seidel remarks that he can see Mozilla's San Francisco offices right from his window, prompting Fisher to joke, “Do they know you can see them?” Komoroske shares that visiting Mozilla engineers had stopped by the Google offices just days earlier to chat about their proximity and shared web standards goals.

[29:01](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1741s) Phasing Out Vendor Prefixes

Discussing how legacy `-webkit-` vendor prefixes will be handled, Komoroske reiterates that Blink will introduce zero new vendor prefixes going forward, relying instead on runtime flags for experimental features. Phasing out inherited prefixes, however, must be approached with caution on a case-by-case basis: 1. **Long-standardized features**: Where an un-prefixed implementation has existed and been broadly adopted for years while the prefixed alternative has fallen out of use, the legacy prefix will simply be removed. 2. **Non-standardized experiments**: Features that were never standardized will either be taken through the formal standards process or formally deprecated and scheduled for removal.

Fisher explains that vendor prefixes failed in their original goal because shipping prefixed APIs still locks the engine into supporting them permanently: “And the reason why we don't want to do vendor prefixes anymore is because, vendor prefix or not, when you add something to the platform and you ship it, you can get stuck with it.” Seidel underscores the absurdity of the current legacy prefix situation, remarking that standards bodies have even debated standardizing `-webkit-` prefixes directly into official specifications to maintain web compatibility—a scenario the team hopes to avoid. Both Fisher and Seidel conclude with absolute certainty: there will never be a `-blink-` vendor prefix.

[30:17](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1817s) Banter on the Blink Tag and Wrapping Up

The conversation closes on a lighthearted note when Paul Irish mentions a community request asking whether the newly named Blink engine might support the infamous `text-decoration: blink` styling. Darin Fisher dismisses the notion with a laugh, saying, “I'm pretty sure we will not be doing that,” before adding that it might only ever appear behind an experimental flag just for fun. Alex Komoroske recalls a running joke within the team that developers do not even need browser vendors to implement it anymore, noting that with Web Components, developers can trivially build custom `<x-blink>` elements if they truly desire the retro effect. However, he leaves no room for ambiguity about core engine support, declaring, “We will not ship the Blink tag.”

Paul Irish then officially concludes the Q&A session, expressing gratitude to everyone in the web developer community who submitted and upvoted questions. He directs developers seeking further details to `chromium.org/blink`, where Google has published a comprehensive overview of the Blink project, outlines of their policies regarding feature additions, and a Developer FAQ addressing additional technical questions not fully covered in the livestream.

- Darin Fisher joked that any support for blinking text would at most live behind an enable flag strictly for amusement. - Alex Komoroske emphasized that developers can easily create their own custom `<x-blink>` tag using Web Components without native browser intervention. - Viewers are encouraged to visit `chromium.org/blink` to read the project overview, policy guidelines for feature implementation, and the Developer FAQ.

## Notable quotes > [29:01](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1741s) And the reason why we don't want to do vendor prefixes anymore is because, vendor prefix or not, when you add something to the platform and you ship it, you can get stuck with it. — Darin Fisher

> [17:28](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1048s) I think the web platform is famous for having multiple solutions to the same problem. And we see that as a problem. We have to be responsible to not create more of those problems. — Darin Fisher

> [26:40](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1600s) One of WebKit's goals was WebKit is not a science project. We're about shipping a product today. And the reality is the world and the web ecosystem need both kinds. We need exploratory crazy new things. And we also need to ship something today. — Eric Seidel

> [21:20](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1280s) Blink doesn't know what codecs even exist. It has a box in which the video goes. And something outside of Blink makes the video go there. — Eric Seidel

## Mentioned Blink, WebKit, Chromium, Google, Google Chrome, Paul Irish, Darin Fisher, Alex Komoroske, Eric Seidel, Peter Kasting, Apple, Mozilla, Adobe, Android, WebCore, WebKit2, V8, Skia, KHTML, Servo, Dart, Dartium, H.264, Safari, Gecko, Web Components, Freenode, chromestatus.com

## Video description Answers to the top questions (listed with timecodes here http://chromium.org/blink/developer-faq#TOC-Q-A-Video) asked by the developer community about Blink. Engineering leads Darin Fisher and Eric Seidel are joined by PM Alex Komoroske and Developer Advocate Paul Irish.

[Source](https://www.youtube.com/watch?v=TlJob8K_OwE)

中文简报

Google脱离WebKit并在Chrome 28中推出Blink引擎 Google将Blink从WebKit中分离出来,是因为分歧的多进程架构导致联合维护难以为继,迫使Chrome构建一个严格与自身内容层绑定的独立引擎。 在Google宣布从WebKit分叉出Blink之后,Chrome平台团队针对该引擎的未来、架构及集成时间表等社区关心的重大问题进行了解答。专家团队确认,Blink将从Chrome 28开始正式发布,并在Chromium的内容层上运行,与V8和Skia深度集成,从而消除了对平台特定“#ifdef”抽象的需求。他们概述了取消厂商前缀、在不破坏现有网页的前提下清理旧版DOM特性、维持现有用户代理(user-agent)字符串,并最终将Android WebView过渡到Blink底座的政策。此外,团队还阐明了脱离WebKit2的历史原因,并证实虽然补丁共享会随着时间推移而减少,但与网络标准机构以及Mozilla等同行的合作依然紧密。 Google正式从WebKit分叉出Blink,Canary版本立即完成迁移,并计划在大约十周后推出的Chrome 28作为首个在桌面端和Android端运行该新引擎的稳定版本。 (2:30) Blink将专门运行在Chromium的内容层上,不再支持多个操作系统移植版,并直接在JavaScript上标准化采用V8,在图形渲染上标准化采用Skia。 (10:26) Blink针对新的网络特性采取了严格的“无厂商前缀”政策,转而承诺使用运行时标志,同时系统性地审查、标准化或弃用继承的-webkit-前缀。 (6:58) Google澄清,随着代码库分道扬镳,与上游WebKit的积极补丁共享将迅速减少,并且没有将Blink的多进程改动合并回WebKit2的计划。 (12:34)

Reading summary

Following the announcement of Blink, Google's Chrome engineering team explained that forking WebKit allows Chromium to discard legacy platform abstraction debt, tightly integrate V8 and Skia, and adopt a strict policy against vendor prefixes. Decoupling from WebKit and WebKit2 (12:34) Blink's split from WebKit stems from divergent architectural choices regarding multi-process architectures. Darin Fisher recounts that while Apple invited Google to integrate Chromium's multi-process model into WebKit shortly after Chrome launched, doing so presented a technically prohibitive workload due to Chromium's reliance on custom libraries. Both engineering teams subsequently focused their shared efforts on WebCore for five years. However, as Chromium's architectural requirements diverged from WebKit2, shared development became untenable. Eric Seidel clarifies that no formal relationship exists between the Blink and WebKit teams, and Google has no active plans to backport patches. Drawing parallels to WebKit's historical split from KHTML, Seidel and Alex Komoroske observe that while patches may occasionally be adapted across projects in the short term, the codebases will naturally diverge over time, making cross-engine porting increasingly difficult. Content Layer and Subsystem Integration (10:26) Unlike WebKit, which required custom platform ports and extensive preprocessor macros (#ifdefs) to support different operating systems, Blink runs exclusively on Chromium's multi-process content layer. Fisher emphasizes that this virtual platform layer isolates the rendering core from direct operating system dependencies, enabling embedders to port Blink across desktop and embedded environments without fragmenting the core rendering engine. This structural boundary couples Blink directly with Google's V8 JavaScript engine and Skia graphics library. Komoroske and Fisher note that standardizing on these dependencies allows developers to optimize internal interfaces previously constrained by WebKit's multi-engine support. As an experimental exploration, the team is evaluating whether moving Document Object Model (DOM) storage directly inside V8 can eliminate language-boundary crossing overhead between C++ WebCore and JavaScript, though Fisher stresses that this concept represents an architectural trade-off rather than a guaranteed performance gain. Platform Cleanup and Ending Vendor Prefixes (6:33) Blink intends to shed technical debt by pruning obsolete DOM features and legacy HTML tags, such as <isindex>, in accordance with modern HTML5 specifications. To mitigate breaking existing websites, Komoroske explains that Google uses search index crawl data to quantify real-world usage and calculate breakage risks before deprecating APIs. Fisher notes that platforms cannot continuously accumulate legacy features without degrading overall software quality. Addressing developer friction with styling rules, Komoroske confirms that Blink has adopted a strict policy against introducing new vendor prefixes, mirroring Mozilla's approach. Experimental features will instead rely on runtime flags, and the team will not create a -blink- prefix. Inherited -webkit- prefixes will be audited individually to either standardize, un-prefix, or formally deprecate them. Fisher notes that prefixes failed their original purpose because shipping prefixed APIs still forced engines into permanent backward-compatibility support. Deployment Timelines and Compatibility Safeguards (2:30) Blink was enabled in Chrome Canary on the day of the announcement, with Paul Irish confirming that Chrome 28 will serve as the first official release shipping Blink on desktop and Android within approximately ten weeks. Fisher adds that development is underway within the Chromium repository to replace the legacy WebKit-based Android WebView with a Chromium- and Blink-based implementation, creating shared plumbing across the mobile browser and embeddable web views. To prevent site-compatibility failures, Fisher confirms there are no plans to alter Chrome's User-Agent string, as many websites still rely on brittle string comparisons. The engine tokens for AppleWebKit and Safari will remain intact, with only the Chrome version number incrementing. Media decoding boundaries also remain unchanged: Seidel and Fisher clarify that video codecs like H.264 are handled by the outer browser layer, leaving Blink decoupled from specific codec implementations. Blink represents a transition from WebKit's multi-vendor, multi-port model toward a specialized rendering engine optimized strictly for Chromium's multi-process architecture. While Google asserts that maintaining an independent engine fosters web innovation, third-party adopters must now integrate Chromium's content layer rather than treating Blink as a standalone drop-in component.

精炼阅读摘要

Google Chrome 团队宣布从 WebKit 分叉并推出自主渲染引擎 Blink,旨在摆脱历史架构束缚,通过深度绑定 Chromium 内容层来推进底层现代化与多进程优化。 分叉渊源与 WebKit 协作的演变 (0:08) Blink 团队成员 Eric Seidel 与 Darin Fisher 说明,分叉源于双方在多进程模型等底层架构上的根本分歧。尽管 Apple 在 Chrome 推出初期曾邀请 Chromium 将其多进程架构合入 WebKit,但由于 Chromium 当时已重度依赖 Chrome 专属库,合入需付出极大的工程代价;此后双方长期共享 WebCore 代码,但 Google 期望的结构性重构已超出 WebKit 社区的接受范围。Seidel 指出,Apple 早期的邀请与 Google 后续评估 WebKit2 是不同时期的产物,两套架构本质上服务于不同需求。 面对未来的上下游协作,Seidel 表示 Blink 与 WebKit 之间不存在正式的官方合作关系,团队目前没有向 WebKit 反向合并补丁的计划。尽管在分支初期两者架构接近时可能存在技术借鉴,但随着代码库演化,差异化势必加剧。Google 并不禁止员工继续向 WebKit 提交修改,但 Chrome 团队的精力将完全专注于 Blink 本身。 内容层抽象与依赖体系重构 (9:28) 与 WebKit 为适配多种操作系统而大量引入预处理器宏开关(#ifdef)的做法不同,Blink 仅面向单一抽象运行环境——Chromium 的多进程内容层(Content Layer)。Fisher 指出,多年以前 Chromium 的沙箱安全模型就已将具体操作系统的调用从核心层剥离,因此 Blink 可以统一运行在虚拟平台上,极大地降低了向各类桌面或嵌入式设备移植引擎的复杂度。第三方若需集成 Blink,必须通过嵌入 Chromium 内容层实现,无法再将其当作孤立的独立组件。 在底层子系统集成方面,Blink 与 V8 JavaScript 引擎以及 Skia 图形库形成了高度紧密的绑定。Komoroske 与 Fisher 强调,这种收敛消除了适配多种外部 JS 或图形库的抽象负担,使工程团队得以重新设计渲染引擎与底层组件之间的接口。针对激进的架构探索,Seidel 提及团队正研究将 DOM 直接置入 JavaScript 虚拟机的方案,以消除从 JS 跨边界进入 C++ WebCore 的性能开销;Fisher 对此审慎说明,该重构存在复杂的权衡,属于实验性探索而非短期内立即可实现的收益。 发布节点、平台迁移与兼容策略 (2:30) 在发布周期上,Paul Irish 与 Fisher 确认 Blink 在 Chrome 28 中正式搭载于桌面端和 Android 端,并已进入 Canary 渠道测试,预计十周左右推向稳定版。针对移动生态,Android 原生 WebView 的 Chrome 化改造正在 Chromium 开源项目中推进,未来随着 Chrome 基础的新 WebView 落地 Android,Blink 将替代旧有的 WebKit WebView 引擎,从而使移动浏览器与应用内嵌入视图的技术管道完全统一。 对于 Web 兼容性,团队采取了极度保守的过渡策略以防止破坏既有网站。Fisher 与 Seidel 强调,User-Agent 字符串在短期内不会增加 Blink 标识,AppleWebKit 与 Safari 的版本号维持现状,仅更新 Chrome 的版本号。此外,视频编解码支持(如 H.264)由 Chrome 浏览器外部管道处理,Blink 仅负责提供承载渲染的布局盒子,不参与解码逻辑;Blink 的开源许可证也沿用历史遗留状态,主要保持 BSD 与 LGPL 的混合结构。 废弃技术债务与终结厂商前缀 (6:33) Blink 致力于通过剔除陈旧的 DOM 特性来清理平台技术债务。Seidel 指出这一思路继承自 HTML5 规范对历史元素的清理,如淘汰 <isindex> 标签和未使用的实体引用节点。为了在清理时不破坏现有网站,Komoroske 透露 Google 利用搜索爬虫索引数据精确统计冷门 API 的实际使用率,以量化评估废弃特性的安全边际;Fisher 强调引擎不能无限堆积功能,必须审慎建立迁移路径与淘汰机制。 在样式与 API 标准化方面,Blink 全面倒向与 Mozilla 一致的无厂商前缀策略。Komoroske 与 Fisher 明确宣布,未来 Blink 绝不会引入新的厂商前缀,也不会存在 -blink- 前缀,实验性功能均通过运行时开关进行测试。对于既有的 -webkit- 前缀,团队将分类处理:长期标准化且已有广泛无前缀实现的特性直接去除前缀;未标准化的实验特性则视情况推动标准化或列入废弃日程,从而避免规范机构被迫将私有前缀写入正式标准的恶性循环。 Blink 的分立标志着 Chromium 彻底转向以自身多进程与内容层为核心的技术路线。团队展现出通过剔除前缀与陈旧 API 来重塑 Web 平台的决心,但对于 DOM 移入 JS 等根本性架构重组仍保持谨慎评估;随着与 WebKit 代码基线的日渐偏离,跨引擎补丁共享将迅速收窄,其长期成效仍取决于标准化协作与生态兼容性的平衡。

Detailed notes — zh

## Background 该视频由 Google for Developers 官方频道于 2013 年 4 月 4 日发布在 YouTube 上。根据页面介绍,本次问答直播由 Chrome 团队的工程负责人 Darin Fisher、Eric Seidel、产品经理 Alex Komoroske 以及开发者倡导者 Paul Irish 共同参与,旨在解答开发者社区针对 Google 刚刚宣布从 WebKit 分叉出的新渲染引擎 Blink 所提出的核心高频问题。 ## TL;DR 在宣布从 WebKit 分叉出独立渲染引擎 Blink 的次日,Chrome 核心团队技术领导层就社区高度关切的架构演变与生态影响展开了详尽解答。团队澄清了与 WebKit 代码库的渐进分离关系,阐述了依托 Chromium Content Layer 多进程抽象层以彻底摆脱多平台移植碎片化的核心逻辑,并探讨了将 DOM 移入 JavaScript 虚拟机等前沿性能构想。同时,团队宣布全面转向“无厂商前缀”政策、保持 UA 字符串稳定,并强调多引擎竞争对于 Web 长期健康生态的积极价值,首个搭载 Blink 的 Chrome 28 也已进入发布周期。 ## Atmosphere & style 整场直播散发着务实、严谨且充满技术底气的极客氛围,面对社区抛出的“为何当年拒绝 WebKit2”等尖锐质问,工程主创们毫不避讳、坦诚剖析历史抉择与工程权衡。四位嘉宾配合默契,既有底层架构师对性能极限和移动硬件约束的审慎克制,也有对摆脱历史包袱后轻装上阵的由衷振奋。而在探讨严肃的标准生态之余,团队穿插着对 <blink> 标签和与 Mozilla 隔窗相望的幽默调侃,使这场重磅技术分叉的答疑会显得亲切、透明且兼具温度。 ## Bulletin - [02:30](https://www.youtube.com/watch?v=TlJob8K_OwE&t=150s) Google 宣布从 WebKit 正式分叉出全新渲染引擎 Blink,首个搭载版本为 Chrome 28,预计约 10 周后推向稳定版。 - [10:26](https://www.youtube.com/watch?v=TlJob8K_OwE&t=626s) Blink 架构解耦宿主操作系统,深度绑定 Chromium 的 Content Layer、V8 引擎与 Skia 图形库,彻底终结了通过 #ifdef 宏维护多平台移植的传统做法。 - [06:33](https://www.youtube.com/watch?v=TlJob8K_OwE&t=393s) 团队宣布全面执行零厂商前缀(No vendor prefixes)政策,绝不引入 Blink 专属前缀,并通过全网搜索索引大数据评估存量前缀的安全下线路径。 - [26:40](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1600s) Blink 定位为保障当前稳定产品交付的工程实现,与 Mozilla 从零构建的实验性科研引擎 Servo 形成互补而非直接竞争。 ## Key takeaways - [01:05](https://www.youtube.com/watch?v=TlJob8K_OwE&t=65s) Blink 与 WebKit 代码库之间没有正式的合作机制,双方将各自独立演化,跨项目移植补丁的难度会随时间推移而大幅增加。 - [02:30](https://www.youtube.com/watch?v=TlJob8K_OwE&t=150s) Chrome 28 为首个搭载 Blink 的正式版本,且短期内 User-Agent 字符串将保持现有格式冻结,确保不对现有 Web 生态造成兼容性冲击。 - [04:59](https://www.youtube.com/watch?v=TlJob8K_OwE&t=299s) Blink 正在探索将 DOM 完全移入 JavaScript 虚拟机内部的长远构想,以消除 JS 与 WebCore C++ 层之间的跨边界切换性能开销。 - [06:33](https://www.youtube.com/watch?v=TlJob8K_OwE&t=393s) 团队将利用 Google 全网搜索索引的大数据分析,精准扫描并量化废弃陈旧冷门特性的风险,坚决避免破坏现有 Web 应用。 - [09:28](https://www.youtube.com/watch?v=TlJob8K_OwE&t=568s) 得益于 Chromium 的多进程沙箱架构与虚拟平台抽象层,Blink 避免了 WebKit 历史上的多平台碎片化移植困境。 - [10:26](https://www.youtube.com/watch?v=TlJob8K_OwE&t=626s) Blink 将宿主环境统一收敛至 Chromium Content Layer,使 V8 与 Skia 团队能够放开手脚开展端到端的深度性能调优。 - [13:33](https://www.youtube.com/watch?v=TlJob8K_OwE&t=813s) 当年未采纳苹果 WebKit2 架构的主因在于 Chrome 现成的成熟多进程体系与 WebKit 严重脱节,迁移改造成本过高且时间线完全错位。 - [16:46](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1006s) 基于 Chrome 构建的全新 Android WebView API 最终将正式并入 Android 系统,使移动端系统级 WebView 统一采用 Blink 底座。 - [16:46](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1006s) Dart VM 尚未合入 Chromium 主线并非架构存在技术阻碍,而是受限于 Dart 语言自身的发展规划与团队对长期维护承诺的审慎考量。 - [16:46](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1006s) Blink 团队秉承克制的工程哲学,拒绝为一个问题提供重复冗余的 API 解决方案,坚持所有新功能都必须适配严苛的移动端硬件资源约束。 - [19:24](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1164s) Google 坚信多元独立的渲染引擎能够激发行业竞争并促进行业健康发展,避免 Web 开发者被迫绑定于单一引擎的偶发怪癖。 - [21:20](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1280s) Blink 沿用原 WebKit 的 BSD 与 LGPL 等开源许可证组合,且视频编解码管线(如 H.264)由 Chromium 外部层处理,引擎内部对此完全解耦。 - [26:40](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1600s) 团队与 Mozilla 保持着频繁的技术互访与思路共享,Blink 专注于面向当下的可靠产品交付,而 Servo 则定位于激进的科研探索。 - [29:01](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1741s) 历史经验证明厂商前缀不仅没有实际价值反而造成严重平台债务,Blink 决定彻底封死任何新增私有前缀的可能性。 - [30:17](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1817s) 团队明确拒绝在 Blink 中原生重新引入 <blink> 标签或闪烁样式,建议有怀旧需求的开发者使用现代 Web Components 规范自行封装实现。 ## Detailed walkthrough ### [00:08](https://www.youtube.com/watch?v=TlJob8K_OwE&t=8s) 见面会介绍与小组阵容 在 Google 正式宣布从 WebKit 分叉出新渲染引擎 Blink 的次日,Chrome 团队举办了一场问答直播,旨在解答开发者社区在过去一天中提交并投票选出的各类关键问题。Chrome 团队的开发者倡导者(Developer Advocate)Paul Irish 担任主持,并向观众介绍了来自 Chrome Web 平台团队的核心技术领导阵容:工程主管 Darin Fisher、产品经理 Alex Komoroske,以及长期担任 WebKit 核心贡献者、现为 Blink 团队成员的资深工程师 Eric Seidel。 ### [01:05](https://www.youtube.com/watch?v=TlJob8K_OwE&t=65s) WebKit 与 Blink 未来的代码库关系与协作 问答环节以 Chromium 工程师 Peter Kasting 提出的三连问开场:未来 WebKit 与 Blink 代码库之间将维持怎样的关系?Chromium 移植版(Chromium port)是否会从 WebKit 代码库中移除?是否有既定的政策或工具链来确保一个代码库中的 Bug 修复和新特性能够迁移合并到另一个代码库? 针对两者的代码库关系,Eric Seidel 直言:“There's no real formal relationship between the two teams.”(两个团队之间并没有真正正式的合作关系)。他预计,虽然起初两个代码库差异尚小,双方还会共享思路甚至少量补丁,但随着时间推移,两套代码库必然会走向分道扬镳,相互移植补丁的难度也会越来越大。至于 WebKit 何时或是否清理 Chromium port,Eric 认为这完全取决于 WebKit 开源项目社区自身的决策与评估。 Alex Komoroske 则补充道,Chrome 团队长期以来都在通过 W3C 等标准组织活动、非正式技术探讨、跨项目提交 Bug 以及在彼此的问题追踪系统中交流等方式,与其他各大浏览器厂商保持合作,因此 Blink 与 WebKit 之间的协作互动并不会脱离这种行业常态。 ### [02:30](https://www.youtube.com/watch?v=TlJob8K_OwE&t=150s) Blink 的发布时间表与 Android 平台过渡 针对布加勒斯特的 Mihai 及多位开发者关心的可用性问题——Blink 究竟何时进入 Canary 渠道、何时进入稳定版(Stable)、目前开发进度究竟如何,团队给出了明确的节奏与预期。Alex Komoroske 安抚开发者称,在项目最早期阶段,Blink 与 WebKit 几乎没有任何实质区别,两者是随着时间演进才逐步走向不同方向的。即使当天的 Chrome Canary 已经技术性地切换为 Blink 构建,但对普通 Web 开发者来说是完全无感知的,甚至连 User-Agent 字符串在短期内都保持不变。 针对 Android 平台的 WebKit 迁移以及 Chrome for Android 和系统原生浏览器(Stock Android Browser)的前景,Darin Fisher 明确了技术边界:无论是桌面版还是移动平台,未来的所有 Chrome 都会统一基于 Blink 运行;而原生 Android 浏览器的产品路线则依附于系统自身的产品周期。团队目前的重点是确保 Blink 能够在 Chrome 所支持的各类软硬件平台上提供卓越的 Web 渲染性能。 - **首发版本**:Chrome 28 是首个搭载 Blink 的正式版本,桌面版与 Android 版节奏一致。 - **发布节奏**:该版本当天已进入 Canary 阶段,预计在约 10 周后推送至稳定版。 - **移动端预览**:Android 用户亦可通过 Google Play 商店的 Chrome Beta 渠道体验后续集成进展。 ### [04:59](https://www.youtube.com/watch?v=TlJob8K_OwE&t=299s) 架构设想:将 DOM 完全移入 JavaScript 在官方随公告发布的架构说明文档中,有一项极为引人注目的长远构想——探索将整个 DOM(文档对象模型)完全移入 JavaScript 虚拟机内部。Paul Irish 邀请技术负责人展开阐述这一设想的技术动机与深层考量。 Eric Seidel 解释了现代浏览器的性能瓶颈所在:目前 DOM 是在底层的 WebCore 中完全使用 C++ 实现的;每当网页中的 JavaScript 访问或操作 DOM 节点时,执行流程都必须跳出 JavaScript 虚拟机并跨越边界进入 WebCore 的 C++ 层,这一跨边界上下文切换存在固有的性能开销。尽管当前经过优化已经相当敏捷,但团队追求的是极致性能:“And the way to make it way faster is for your code to not ever have to leave the JavaScript virtual machine, but instead be able to access the DOM directly.”(而大幅提升速度的方法,就是让代码完全不必离开 JavaScript 虚拟机,而是能够直接访问 DOM)。 Darin Fisher 与 Alex Komoroske 补充强调,之所以称其为“疯狂的构想”(Crazy idea),是因为技术改造绝非稳赚不赔,背后牵涉极其复杂的工程权衡与优缺点评估。但分叉 Blink 的最大价值,正在于团队能够摆脱过去的架构包袱,自由调整架构边界,将心愿单上的大胆假设付诸原型验证。 ### [06:33](https://www.youtube.com/watch?v=TlJob8K_OwE&t=393s) 清理历史包袱与厂商前缀策略 开发者十分关注文档中提到的“移除晦涩/冷门的 DOM 部件,为了性能与降低复杂度不惜引入向后不兼容变动”。Eric Seidel 说明这实际上顺应了现代 Web 平台的大趋势,正如 HTML5 规范积极清理了许多源自 HTML 2 或 HTML 3 时代、长达二十年无人问津的陈旧特性一样。例如历史遗留的 `<isindex>` 标签已被现代简洁标准取代,而 DOM 理论规范中存在的实体引用节点(Entity Reference Nodes)在真实世界也几乎没有实际用例。 Darin Fisher 强调团队绝不会粗暴地破坏开发者生态:“But we plan to do so very carefully, to ensure that we are not breaking or torturing web developers along the way.”(但我们计划非常谨慎地进行,以确保一路走来不会破坏网页或折磨 Web 开发者)。为了实现精准、负责任的废弃,团队通过 Google 的全网搜索索引(Search Index)对真实网页的代码使用情况进行大数据扫描与数据发布,量化评估特性下线的风险。 在厂商前缀(Vendor Prefixes)方面,Alex Komoroske 宣布 Blink 将全面转向与 Mozilla 类似的“无厂商前缀”政策(No vendor prefixes policy): ```mermaid flowchart TD accTitle: Blink 厂商前缀处理与演进路径 accDescr: 展示 Blink 针对继承的历史前缀属性进行分类评估与逐步淘汰的流程图。 A["继承的历史前缀属性 (Legacy Prefixes)"] --> B{"是否有对应无前缀标准实现?"} B -->|"是 (标准属性已可用)"| C["逐步废弃并移除 -webkit- 前缀版本"] B -->|"否 (仍属非标准特性)"| D{"评估特性的真实价值与全网依赖"} D -->|"具备广泛需求"| E["推向 W3C 等标准组织进行标准化"] D -->|"无价值或低频滥用"| F["安全负责地下线与完全废弃"] C --> G["终极目标:零厂商前缀的干净 Web 平台"] E --> G F --> G ``` ### [09:28](https://www.youtube.com/watch?v=TlJob8K_OwE&t=568s) 避免 WebKit 协作困境与 Blink 的虚拟平台架构 针对“随着贡献者增多及移植平台扩展,Blink 是否会重蹈此前困扰 WebKit 的跨团队协作泥潭”这一犀利问题,Darin Fisher 剖析了 WebKit 过去多平台移植(Porting)所面临的架构根因。在 WebKit 体系下,每个厂商为了支持不同的操作系统或 GUI 工具包,都在底层插入了大量 OS 专有代码,导致分支逻辑碎片化严重。 而 Blink 走了一条完全不同的架构路线。得益于 Chromium 长期坚持的多进程沙箱安全架构(Sandboxed, Multi-process Architecture),渲染引擎本身已被完全剥离了对具体宿主操作系统的直接依赖。团队在历年工程实践中构建了一套高度抽象的“虚拟平台层”(Virtual Platform / Abstraction Layer),使得无论是在高性能桌面环境还是在受限的嵌入式设备上运行 Blink,几乎都不需要对渲染引擎的核心代码进行重型移植改造。这种统一的平台抽象极大降低了多系统维护的代码分歧,从根源上规避了阻碍过去 WebKit 社区高效协作的架构隐患。 ### [10:26](https://www.youtube.com/watch?v=TlJob8K_OwE&t=626s) Chromium Content Layer 与跨平台模块化设计 随着 Blink 的独立,它唯一支持的宿主环境就是 Chromium 的 Content Layer(内容层),这使得整个代码库具有极高的可移植性。Darin Fisher 指出,业界已经有许多团队成功将 Chromium 的 Content Layer 作为多进程嵌入层移植到不同的操作系统,并应用于形形色色的应用程序中,而无需对 Chromium 进行大规模的 Fork(代码分叉)或打入大量补丁。团队对于未来的前景感到振奋,因为开发者不再需要用繁复的预处理指令(`#ifdef`)去“折磨”代码库,就能以全新的方式集成并参与 Blink 的开发。 Alex Komoroske 提到了 Paul Irish 不久前发表的一篇技术博客,该文详细拆解了 WebKit 复杂的层级架构,指出过去为了支持各个平台,移植者必须亲自实现大量底层接口。而在 Blink 体系下,借助 Content Layer,所有这些能力都是开箱即用的跨平台实现。Darin Fisher 进一步阐明,这并不意味着 Content Layer 是一块铁板铁壁的单一整体,它本身具备模块化特性,开发者如果不想要某些模块,完全可以将其剔除。Chromium 始终秉承的理念是通过模块化解耦,坚决摒弃通过预处理器宏来切割代码的做法。 当 Paul Irish 问及 V8 引擎和 Skia 图形库是否直接绑定在 Content Layer 中时,Darin Fisher 给予了肯定答复:Blink 将深度依赖 Skia 进行图形渲染,依赖 V8 处理 JavaScript。Alex Komoroske 和 Darin Fisher 均强调,这种明确的技术栈收敛并非限制,反而赋予了团队绝佳的机会——Skia 团队和 V8 团队对这种深度整合感到极为兴奋,因为他们终于可以放开手脚重构底层交互接口,对渲染引擎进行深度的端到端性能调优。 ```mermaid flowchart TD accTitle: Chromium 与 Blink 架构关系 accDescr: 展示 Blink 嵌入在 Content Layer 中,并与 Skia 和 V8 引擎深度集成的架构关系。 subgraph HostApp["宿主应用程序 / 嵌入环境"] App["各种平台应用 (无需维护大量 ifdef)"] end subgraph ContentLayer["Chromium Content Layer"] CL["多进程嵌入与抽象层 (可按需增减模块)"] subgraph EngineCore["Blink 渲染引擎"] Blink["Blink 核心渲染逻辑"] Skia["Skia 图形库"] V8["V8 JavaScript 引擎"] end end App --> CL CL --> Blink Blink --- Skia Blink --- V8 ``` - Darin Fisher 总结 Chromium 团队在工程架构上的取舍哲学:“We strive in the Chromium to modularize, as opposed to using preprocessor directives to hack up the code base.” --- ### [12:34](https://www.youtube.com/watch?v=TlJob8K_OwE&t=754s) Blink 代码是否会回流 WebKit 与两者开源关系 面对社区最关心的“Blink 的代码改动未来是否会回流(contribute back)到 WebKit 项目”这一问题,Eric Seidel 直言两者已经是完全独立的两个项目。他回顾了当年 WebKit 最初从 KHTML 分叉出来的历史:由于两者的起跑线几乎一模一样,早期确实有大量的 Patch 在两个代码库之间来回移植,他预计在 Blink 诞生初期也会出现类似的互动现象。但归根结底,它们如今拥有各自的代码仓库,Chromium 团队目前没有任何主动向 WebKit 批量同步 Patch 的计划。 Alex Komoroske 和 Eric Seidel 补充道,这两个项目都是完全开源的,社区中的任何人都拥有在它们之间移植代码的自由。Alex 坦言,随着时间推移,两个引擎在架构演进上必然会渐行渐远,代码移植的难度会成倍增加,不过在项目分离的最初阶段,互相借鉴依然相对容易。Darin Fisher 补充表示,如果社区开发者密切关注 WebKit 的提交日志,在短期内依然能看到部分 Google 工程师在向 WebKit 提交代码,但随着重心全面转移,这种现象在长期来看会逐步减少。 - Eric Seidel 明确界定了两者的关系:“They're separate projects. They are separate code bases. And we don't have any plans, currently, to be moving patches.” --- ### [13:33](https://www.youtube.com/watch?v=TlJob8K_OwE&t=813s) 多进程架构之争:为何没有采用 WebKit2 Paul Irish 抛出了一个来自社区的尖锐质问:Google 在宣布成立 Blink 时曾表示“无法适应 WebKit2 的多进程模型”是自立门户的核心诱因之一,但苹果公司的工程师却透露,在苹果动手打造 WebKit2 之前,曾提议将 Chromium 的多进程架构直接合入 WebKit 主干,却遭到了 Google 的拒绝,这究竟是怎么回事? Darin Fisher 毫不避讳地证实了这段往事。他解释说,在 Chrome 刚刚发布后不久,苹果确实对 Chromium 研发的多进程架构表达了浓厚兴趣。但外界需要理解当时的现实:那是 Chrome 已经正式发布上线的阶段,其多进程代码库已经相当成熟,并且与 Chrome 自身的运行体系高度耦合,底层调用了大量 WebKit 体系根本没有的辅助库。面对苹果的合作意向,团队最初在技术上也觉得很兴奋,但在深入评估后发现,要想把这套架构剥离并重写以契合 WebKit,其工程量不啻于“一座难以逾越的高山”,加之双方的业务时间表完全错位,Google 最终认为在当时根本找不到一条可行的路径将该代码直接合并进 WebKit。 尽管多进程底层未能合流,但双方在随后长达五年的时间里,将精力和智慧集中投入到了能够最大化实现共赢的领域——共享 WebCore。Darin Fisher 回忆道,WebCore 是整个引擎中最敏感、最核心的阵地,涵盖了 HTML 解析、DOM 树构建以及 CSS 布局渲染等核心逻辑。双方在 WebCore 内的通力合作极为成功,极大地推动了现代 Web 标准的发展。然而,随着 Chrome 技术的演进,Chromium 团队计划对 WebCore 展开极其激进的大手术,这些变动将彻底改变 WebCore 的代码形态,而这绝非当时的 WebKit 社区所能接受。因此,分道扬镳成了无法避免的选择。Eric Seidel 对此总结道,将五年前双方错过的多进程合并与一两年前的 WebKit2 进行对比是不切实际的,它们诞生于截然不同的时间线,是为了解决不同需求而演进出的两套截然不同的架构;双方在 WebCore 成功携手合作了五年,而现在只是各自走上了不同的技术道路。 - Eric Seidel 就两个团队当年的架构分野给出了最透彻的评价:“The reality is they're very different architectures, very different answers to similar questions.” --- ### [16:46](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1006s) Android WebView 迁移 Blink 与多语言虚拟机支持(Dart) 讨论转向移动生态与多语言支持时,Paul Irish 询问了 Android 原生 WebView 对 Blink 的接纳计划。Darin Fisher 透露,只要持续追踪 Chromium 开源项目的人都能注意到,团队已经在基于 Chrome 构建全新的 Android WebView API。在时机成熟的“完满之时”(in the fullness of time),这套实现将正式集成进 Android 操作系统,届时 Blink 也会自然而然地成为 Android 原生 WebView 的底座。整个团队对此无比振奋,因为将系统级的 WebView 全面切换到 Chrome 和 Blink 的技术栈,意味着他们能够以更快的节奏修补缺陷并大幅提升其渲染性能与稳定性。 随后,现场解答了“Blink 未来是否会原生支持除 JavaScript 外的多脚本语言(例如 Dart VM)”的疑问。Darin Fisher 指出,该问题的实质指向的是 Dart VM。他澄清说,很多人以为是 WebKit 或 Blink 在技术架构上无法支持多虚拟机,但事实并非如此——实际上社区早已有了集成 Dart VM 的 Chromium 构建版本“Dartium”,负责 Dart 的工程师编写了一套对 WebKit 侵入性极小的优雅补丁,成功挂载了 Dart VM。Dart VM 之所以迟迟没有正式合入 Chromium 主线,技术架构从来不是障碍,真正的瓶颈在于 Dart 语言本身的发展时间表,团队必须等到有充分把握为 Dart VM 提供长期、稳定的维护承诺时,才会做出决策。 谈及此处,Alex Komoroske 与 Darin Fisher 强调了 Blink 项目极其严苛的工程哲学。Alex 指出,团队对待 Web 兼容性风险和新特性的实装秉持着极高的原则,任何新功能上线前都必须经过严格审视。Darin Fisher 回忆起团队中一位工程师的警醒之语:“无论我们在 Blink 里加什么,它最终都得装得进这部手机里。”因此,团队绝不会仅因为某个点子听起来很棒就贸然引入引擎。Web 平台向来饱受“为一个问题提供五六种重叠解法”的诟病,而团队的终极目标是避免日后被动地废弃(deprecate)API,绝不能在 Blink 中继续制造这类冗余和历史包袱。 - Darin Fisher 引述团队工程师的原则,强调在移动硬件约束下开发引擎的克制态度:“Whatever we do, whatever we put in Blink, it's got to fit on here.” - Darin Fisher 批判 Web 平台的冗余通病并声明 Blink 的防范立场:“We don't want to add multiple different ways of doing the same thing. I think the web platform is famous for having multiple solutions to the same problem. And we see that as a problem.” --- ### [19:24](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1164s) 对其他基于 WebKit 浏览器生态的影响及 Google 的态度 在回答名为 spiffytech 的开发者提出的“Chromium 的这一举措将如何影响市场上大量采用 WebKit 的第三方浏览器”时,Alex Komoroske 率先给出了定调:Google 始终深信,拥有多个独立的渲染引擎不仅能激发良性竞争与技术创新,更是 Web 平台长期健康生态的基石。从宏观角度来看,Blink 的独立对整个生态系统是一场积极的变革。 Darin Fisher 从标准与开发者体验的角度展开论述。他强调,Chromium 团队会继续全力投入 Web 标准建设与跨浏览器测试套件的共享,推动所有浏览器在 Web 标准的定义上达成共识。但在这个共识之下,拥有多个独立的底层实现极为关键。如果市场上只剩下一套独大的引擎实现,Web 开发者最终将身不由己地被绑定在某个特定引擎特有的偶发怪癖(quirks)与私有实现细节上,这无论对平台的发展还是对开发者而言都极其危险。Eric Seidel 补充道,Blink 的出现为其他浏览器厂商提供了更多样化的技术选型;不过他也提醒大家,嵌入 WebKit 和嵌入 Blink 是两码事——由于 Blink 与 Chromium 的 Content Layer 紧密绑定,任何人想要嵌入 Blink,实际上都是通过嵌入 Content Layer 来实现的。 针对“这是否意味着 Google 将彻底停止向 WebKit 贡献代码”的疑虑,Eric Seidel 和 Darin Fisher 作出了明确分层: - Eric Seidel 回顾道,Google 甚至在 Chrome 浏览器对外公开发布之前,就已经在向 WebKit 提交大量核心代码,而在 Chrome 独立发布之后,这种贡献依然持续了多年。 - Darin Fisher 澄清,Google 公司层面绝对没有下达“禁止员工向 WebKit 贡献代码”的禁令,Google 内部其他项目的员工依然拥有完全的自由去向 WebKit 提交补丁。 - Eric Seidel 明确指出分工的边界:Chromium 浏览器未来将直接搭载 Blink 上线,因此 **Chromium 团队**的工作重心将全神贯注地聚焦于 Blink。 - Alex Komoroske 阐述多元渲染引擎对 Web 的长远价值:“We fundamentally believe that having multiple rendering engines will help spur innovation, and is ultimately good for the long-term health of the web.” ### [21:20](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1280s) 开源许可证与 H.264 编解码器支持 谈及项目的代码贡献与法律许可,团队首先澄清了他们与原项目的关系。许多 Blink 团队成员长期以来都是 WebKit 的贡献者,Darin Fisher 表示他们未来仍计划向 WebKit 提交补丁,其他同事也是如此。针对社区关心的开源许可证问题,Darin Fisher 明确表示分叉并不会引发重新授权(relicensing),“这是一堆许可证的拼贴(collage of licenses)”。Eric Seidel 补充解释,由于 WebKit 历史上吸收了来自各种项目的代码,其底层主要由 BSD 和 LGPL 许可证构成。 关于 Blink 是否会继续支持 H.264 编解码器,Darin Fisher 指出这本质上是 Chrome 浏览器层面的决策,而不是渲染引擎的问题。Eric Seidel 用极具画面感的比喻解释了架构解耦:“Blink 甚至不知道有哪些编解码器的存在。它只有一个用来放视频的盒子,而 Blink 外部的机制负责把视频送进这个盒子里。因此 Blink 根本不关心、也不知道具体是什么编解码器。” ```mermaid flowchart LR accTitle: Video decoding architectural boundary in Blink accDescr: Blink provides a layout box for video while external Chrome mechanisms handle the actual codec pipeline. subgraph BlinkEngine["Blink 引擎内部"] VBox["视频渲染占位框 (Video Box)"] end subgraph BrowserCore["Chrome 外部机制"] CodecPipeline["编解码管线 (如 H.264 / WebM)"] end CodecPipeline -->|"投递解码帧"| VBox ``` ### [22:11](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1331s) User-Agent 字符串的处理考量 社区对 User-Agent(UA)字符串中是否会出现类似 Gecko 或 KHTML 的 “Blink” 关键字十分好奇。Darin Fisher 给出明确回应:目前完全没有修改 User-Agent 字符串的计划。在现有格式中,紧随 AppleWebKit 和 Safari 后面的版本号将保持原样冻结,后续唯一会随版本迭代而改变的仅有紧跟在 Chrome 后面的版本号。 Darin Fisher 直言:“我们当然在极力抱怨 User-Agent 字符串,但也意识到对此处的任何修改都必须非常非常谨慎,因为无论你喜欢与否,人们都会对它执行各种奇奇怪怪的字符串比对。” Alex Komoroske 也附和称只要翻看任何浏览器的 UA 字符串就会发现它们简直“疯狂”。如果未来重新审视或清理 UA,讨论都会公开在 blink-dev 邮件列表上进行。Darin Fisher 回忆道,几年前曾有过成功缩减部分 UA 片段的尝试,他虽然极为渴望看到 UA 字符串迎来大刀阔斧的彻底简化,但眼下无法给出时间表,Eric Seidel 与 Paul Irish 则异口同声地点出最关键的底线:“不能搞坏网络(Don't break the web)。” ### [23:37](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1417s) 代码获取时间表与生态追踪工具 针对“何时能测试第一个 Blink 版本”的疑问,Darin Fisher 斩钉截铁地回答“就在今天(Today)”。Blink 在问答录制当天便已随 Chrome Canary 推出,Chromium 开发者也可直接自行拉取源码编译。Eric Seidel 感慨地透露,基础设施工程师们熬了通宵才促成了这一切,目前团队已经开始接受社区合并进来的补丁。 为了让习惯在 WebKit 社区盯代码的开发者无缝过渡,团队提供了全面的追踪渠道。除了 chromium.org/blink 项目主页与代码变更集链接外,Eric Seidel 建议大家加入 blink-dev@chromium.org 邮件列表以及 Freenode 上的 `#Blink` IRC 频道,并提到团队正计划像 WebKit 那样搭建基于 IRC 的自动提交机器人(commit bot)。 针对不想通读每一条 commit 的普通前端开发者,团队强调了更高效的追踪方式: - **Chrome 测试版更新总结**:每个 Beta 版本发布时均提供汇总文章,明确列出启用了哪些新特性、哪些特性被置于 flag 实验开关后、哪些私有前缀已被弃用。 - **chromestatus.com 特性看板**:列出平台讨论中的各项特性、各浏览器的实现进度以及标准化状态。Alex Komoroske 和 Paul Irish 特别提到,该面板正向功能完备的仪表盘进化,不仅展示 Chromium 的健康状况,甚至已吸引了来自 Adobe 和 Mozilla 工程师的提交贡献。 ### [26:40](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1600s) 与 Dart 语言的关系及与 Mozilla Servo 的定位差异 针对分叉是否会加速将 Dart VM 内置集成到 Chrome 中的疑问,Darin Fisher 明确表示这不会对 Dart 语言的推进产生实质影响,Eric Seidel 也指出 Dart 是独立的开源项目,底层引擎变动并不直接干涉其路线图。 对于社区关于 Blink 是否旨在正面抗衡 Mozilla 新引擎的疑问,Eric Seidel 澄清对方所指的正是 Servo 引擎。虽然 Brendan Eich 刚发表了相关博文,但 Servo 已经公开研发了很长时间。Eric Seidel 认为两者绝非直接竞争对手,Darin Fisher 也强调了本质差异:“Blink 是基于 WebKit 的演进与分叉,而 Servo 是一个从零开始完全新建的渲染引擎。” Eric Seidel 进一步援引官方文档指出,Servo 定位是一项实验性探索,甚至可能永远不作为正式产品交付: > “WebKit 的目标之一就是‘WebKit 不是一个科研项目’。我们的职责是交付当下的产品。而现实是,整个世界和 Web 生态系统这两种项目都需要:我们需要探索性质的、疯狂的新尝试,同时也需要能够于今天发布投产的产品。Blink 的核心就是保证当下的产品交付。” Alex Komoroske 对 Servo 从零探索宏大设想的做法表达了由衷赞赏,Darin Fisher 也坚信两大阵营未来会有大量的思路共享。Eric Seidel 甚至指着窗外开玩笑说,他站在自己的办公室窗前就能直接看到 Mozilla 的大楼,双方团队几天前还在办公室互访交流,彼此之间是高度协同的伙伴,而非剑拔弩张的竞争对手。 ### [29:01](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1741s) 彻底终结 Vendor Prefix 机制 问答最后深入探讨了存量前缀的处理策略。Alex Komoroske 重申,Blink 未来绝不会引入任何新的私有厂商前缀(vendor prefixes),但清理既有的存量前缀将是一个漫长的过程,必须谨慎评估以防破坏网络现有站点: - **已有标准无前缀实现**:若标准版本已成熟运行多年且无前缀使用率极低,将直接安全移除对应的私有前缀。 - **未进入标准化的特性**:根据实际情况逐案分析(case-by-case),评估是彻底废弃还是继续推进其标准化流程。 Darin Fisher 剖析了摒弃厂商前缀的深层技术教训:“无论有没有前缀,只要你把东西加到平台上并发布出去,你就会被它绑死,它就变成了平台的一部分。因此添加厂商前缀只会制造出一大堆烂摊子,实际上似乎没有带来任何价值。” Eric Seidel 更是补充指出现状的荒谬性——标准组织甚至一度讨论过是否必须把带 `-webkit-` 前缀的特性直接写进 Web 规范里,这种本末倒置的困境坚定了团队的决心。Darin Fisher 与 Eric Seidel 最终郑重宣告:“绝对不会再出现 Blink 专属前缀。” ### [30:17](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1817s) 关于 `<blink>` 标签的玩笑与问答收尾 在问答环节的尾声,现场气氛变得轻松欢快。Paul Irish 笑着提到社区里出现了一个有趣的请求,有人询问新引擎 Blink 是否会顺势支持曾经臭名昭著的 CSS 属性 `text-decoration: blink`。Darin Fisher 斩钉截铁地予以否决,表示坚决不会让这种历史倒退重演:“I'm pretty sure we will not be doing that.”(我很确定我们不会这么做。)不过他也打趣补充道,或许未来可以考虑把它藏在某个实验性功能开关(flag)后面纯当娱乐。随后,Alex Komoroske 补充了一个社区内部的笑话,指出在即将到来的现代 Web Components 体系下,如果开发者真的对闪烁效果念念不忘,完全可以自己封装并实现一个 `<x-blink>` 自定义标签,而官方立场非常明确:“We will not ship the Blink tag. That's for sure.”(我们绝对不会内置发布 Blink 标签,这是肯定的。) 调侃过后,Paul Irish 代表团队对本次问答进行了总结致谢。他感谢所有提交问题以及参与投票的开发者社区成员,并希望今天的解答澄清了外界对 Blink 分支的诸多疑虑。他说明本期问答视频将会与官方已发布的其他资料一同整理发布,并建议开发者访问 chromium.org/blink,以全面了解 Blink 项目的全貌、新功能引入与实现的相关政策规范,以及涵盖更多细节的技术开发者常见问题解答(Developer FAQ)。最后,Darin Fisher 与 Paul Irish 共同向收看节目的观众致谢,正式结束了本次问答。 - **关于 `<blink>` 标签与样式的态度**:明确不会在 Blink 引擎中重新引入 `<blink>` 标签或原生 `text-decoration: blink` 属性;开发者若有怀旧需求,可通过 Web Components 自行构建 `<x-blink>` 组件。 - **后续资源与文档指引**: - 项目官方主页:`chromium.org/blink`(包含引擎概览与特性添加策略) - 开发者常见问题:Developer FAQ(补充解答配套的技术细节) ## Notable quotes > [19:24](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1164s) We fundamentally believe that having multiple rendering engines will help spur innovation, and is ultimately good for the long-term health of the web. — Alex Komoroske > [16:46](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1006s) We don't want to add multiple different ways of doing the same thing. I think the web platform is famous for having multiple solutions to the same problem. And we see that as a problem. — Darin Fisher > [26:40](https://www.youtube.com/watch?v=TlJob8K_OwE&t=1600s) 我们需要探索性质的、疯狂的新尝试,同时也需要能够于今天发布投产的产品。Blink 的核心就是保证当下的产品交付。 — Eric Seidel > [10:26](https://www.youtube.com/watch?v=TlJob8K_OwE&t=626s) We strive in the Chromium to modularize, as opposed to using preprocessor directives to hack up the code base. — Darin Fisher ## Mentioned Blink, WebKit, Chromium, Google, Chrome, Paul Irish, Darin Fisher, Alex Komoroske, Eric Seidel, Peter Kasting, V8, Skia, Apple, WebKit2, Android, Dart, Dartium, Mozilla, Servo, Brendan Eich, Adobe, W3C ## Video description Answers to the top questions (listed with timecodes here http://chromium.org/blink/developer-faq#TOC-Q-A-Video) asked by the developer community about Blink. Engineering leads Darin Fisher and Eric Seidel are joined by PM Alex Komoroske and Developer Advocate Paul Irish. [Source](https://www.youtube.com/watch?v=TlJob8K_OwE)

Source quotes

[19:24] Alex Komoroske: We fundamentally believe that having multiple rendering engines will help spur innovation, and is ultimately good for the long-term health of the web. [16:46] Darin Fisher: We don't want to add multiple different ways of doing the same thing. I think the web platform is famous for having multiple solutions to the same problem. And we see that as a problem. [26:40] Eric Seidel: 我们需要探索性质的、疯狂的新尝试,同时也需要能够于今天发布投产的产品。Blink 的核心就是保证当下的产品交付。 [10:26] Darin Fisher: We strive in the Chromium to modularize, as opposed to using preprocessor directives to hack up the code base.

Source quotes

[29:01] Darin Fisher: And the reason why we don't want to do vendor prefixes anymore is because, vendor prefix or not, when you add something to the platform and you ship it, you can get stuck with it. [17:28] Darin Fisher: I think the web platform is famous for having multiple solutions to the same problem. And we see that as a problem. We have to be responsible to not create more of those problems. [26:40] Eric Seidel: One of WebKit's goals was WebKit is not a science project. We're about shipping a product today. And the reality is the world and the web ecosystem need both kinds. We need exploratory crazy new things. And we also need to ship something today. [21:20] Eric Seidel: Blink doesn't know what codecs even exist. It has a box in which the video goes. And something outside of Blink makes the video go there.

Original transcript

[0:08] PAUL IRISH: Hi, and welcome to Blink Questions Answered. [0:12] Over the past day we've collected hundreds of [0:14] questions and votes from you, getting your [0:17] questions about Blink. [0:19] And today we're going to be answering all the top [0:21] questions with this panel. [0:23] So as a matter of introduction, my [0:25] name is Paul Irish. [0:26] And I'm a developer advocate on the Chrome team. [0:28] And we have a whole host of other really smart folks to [0:32] answer these questions. [0:33] So if you can introduce. [0:35] DARIN FISHER: Hi, I'm Darin Fisher. [0:36] I'm engineering lead for the Chrome web platform team. [0:40] ALEX KOMOROSKE: I'm Alex Komoroske. [0:41] I'm a product manager on the Chrome web platform team. [0:45] ERIC SEIDEL: My name is Eric Seidel. [0:45] I'm a long time WebKit contributor, and now a member [0:49] of the Blink team. [0:51] PAUL IRISH: Great. [0:51] So we're just going to go through from the top questions [0:56] that were submitted and voted up by everyone, and get some [0:59] answers to some of the things that everyone's wondering [1:01] about with the new Blink announcement. [1:05] The first one that we have is from Peter Kasting. [1:08] And it's a three-parter. [1:10] But I'll read it out right now. [1:12] What will be the relationship between the WebKit and Blink [1:15] code bases going forward? [1:16] Will the Chromium port be removed from WebKit? [1:18] Is there any policy or tooling to ensure that changes, either [1:22] bug fixes and features, in one code base [1:24] migrate to the other? [1:27] ERIC SEIDEL: I'll take that. [1:28] There's no real formal relationship [1:30] between the two teams. [1:31] I expect that they'll be sharing ideas and some [1:35] patches, maybe more so in the beginning. [1:38] In the beginning it'll be easier to share patches. [1:41] Over time I expect that the two code bases will diverge, [1:44] and will become not as easy to share patches. [1:49] As far as the removal of Chromium port from WebKit, [1:52] that's really up to the WebKit project to figure out what [1:55] makes sense for them. [2:02] It'll be interesting to see how it evolves. [2:04] I think there's people on both sides who care passionately [2:06] about the web platform, and the web platform [2:09] implementations that are in WebKit and in Blink. [2:12] And people will be motivated to share ideas. [2:16] ALEX KOMOROSKE: I should point out, too, that we already work [2:19] with other browser vendors as well. [2:21] Standards, activities, and informal discussions, and [2:24] filing bugs, and commenting on their bug databases. [2:26] And I imagine this will be no different. [2:30] PAUL IRISH: Great. [2:31] The next question is about availability. [2:33] A lot of people were curious about this. [2:36] So we got a question from Mihai in Bucharest, and from a [2:40] number of other people. [2:42] When will Blink ship on Canary? [2:44] When will it be available in stable? [2:47] How far along in development is it? [2:49] ALEX KOMOROSKE: One thing that I want to emphasize is that at [2:51] the very beginning there's really nothing [2:54] different from WebKit. [2:55] It's over time that they will evolve in different [2:57] directions. [2:58] Technically, today's canary will be using Bink. [3:01] But in reality there's going to be no difference for web [3:03] developers, nothing that you can even see. [3:05] The user agent, for example, will remain the same for the [3:07] time being. [3:08] PAUL IRISH: If you want, you can test out [3:10] today's canary build. [3:12] Blink is in it. [3:14] But really it's basically the exact same [3:17] as yesterday's canary. [3:18] So you won't have any big changes to deal with. [3:24] We'll move forward. [3:25] What is the plan for transitioning the WebKit [3:28] integrated in Android to Blink look like? [3:32] So what's the story for the Chrome on Android and the [3:37] stock Android browser? [3:41] DARIN FISHER: I think the story is very similar to the [3:43] previous question. [3:45] Chrome, going forward will be using Blink instead of WebKit. [3:49] That means Chrome, on all platforms, [3:52] will be using Blink. [3:55] The second part about that, the Android browser, that has [3:59] to do with the product cycle for Chrome, [4:01] and Chrome on Android. [4:04] As far as this team is focused on, we're just trying to make [4:06] sure that Blink runs really great, and is a great web [4:10] rendering engine for Chrome, on all platforms where Chrome [4:13] can be found. [4:14] PAUL IRISH: I should point out that Chrome and Android will [4:18] essentially have Blink as of version 28. [4:23] This is the same for Chrome on desktop. [4:25] So 28 is the first Chrome release. [4:29] It's in its canary right now. [4:31] And it'll be in stable in about 10-ish weeks. [4:34] Hopefully, we'll see. [4:36] DARIN FISHER: I'm not sure when they'll be [4:37] pushing the next beta. [4:41] PAUL IRISH: There's a Chrome on Android beta via the Play [4:43] store they can take a look at. [4:46] Not exactly sure when it'll be there. [4:48] Again, don't expect any big changes. [4:51] It's the same code base, for the most. [4:59] In some of the documentation that came out yesterday, there [5:03] was a point around some of the architectural changes that [5:05] we're looking at. [5:07] So one of them was we said, we'd like to exploring larger [5:11] ideas, like moving the entire DOM into JavaScript. [5:14] This has the potential to make JavaScript DOM access [5:16] dramatically faster. [5:18] Is there anything that we can elaborate on on [5:20] this kind of idea? [5:21] ERIC SEIDEL: I'm happy to take that. [5:22] So one of things to understand is the Document Object Model, [5:25] the DOM is implemented in the part we call WebCore, [5:28] which is all C++. [5:29] And when you, in your JavaScript page, access the [5:32] DOM, your code has to leave the JavaScript virtual machine [5:36] and enter into WebCore. [5:37] There's a cost of that. [5:39] And although it's pretty fast today, we'd like [5:41] it to be way faster. [5:42] And the way to make it way faster is for your code to not [5:45] ever have to leave the JavaScript virtual machine, [5:47] but instead be able to access the DOM directly. [5:49] And to do that we'd have to move the DOM into JavaScript. [5:52] And this is one of the many crazy ideas that were [5:56] exploring in the future of Blink. [5:58] DARIN FISHER: Crazy, because it's not exactly [6:00] an automatic win. [6:02] There's pros and cons to any such change. [6:05] And we're going to explore that, and see what kind of [6:07] benefits we can derive and what opportunities can be had [6:11] from such a crazy idea that. [6:14] ALEX KOMOROSKE: There are a lot of ideas [6:15] on the project page. [6:17] We're just collecting a wish list of things we want to look [6:19] into and investigate that now we can. [6:21] Because we can change architectural boundaries if [6:24] necessary, and really dream big. [6:27] I think we're all really excited try all these crazy [6:30] ideas, and see which ones work. [6:33] PAUL IRISH: Another question that we had-- [6:35] this is from Greg again-- something [6:37] that was in the Docs. [6:39] This was around removing things. [6:42] We had a note and there around removing obscure parts of the [6:46] DOM, and making backwards incompatible changes to [6:49] obscure parts that benefit performance or remove [6:52] complexity. [6:53] What can we share around this? [6:57] ERIC SEIDEL: I'm happy to take that as well. [6:58] This actually a larger trend in the web platform right now. [7:02] If you look at HTML5, HTML5 did a lot of work to try to [7:06] remove some of the old crufty bits that were perhaps speced [7:09] in HTML2 or 3, but haven't been used in 20 years. [7:12] A good example of this is the isindex tag, which was an idea [7:17] long ago, and has now been replaced by a much simpler [7:20] implementation in HTML5. [7:22] And the same thing is true of these things called entity [7:24] reference nodes, which exists technical in the DOM, but [7:27] nobody's ever used. [7:28] So we've been removing these out of WebKit and out of [7:31] Blink, as the specs have moved forward to also remove them. [7:35] DARIN FISHER: But we plan to do so very carefully, to [7:37] ensure that we are not breaking or torturing web [7:40] developers along the way. [7:41] The idea is to identify the low hanging fruit, and clean [7:44] up the platform, if we can. [7:47] And hopefully in a way that moves a platform forward in a [7:51] very positive way. [7:52] Because over time, if you just keep accumulating features, [7:55] the platform suffers. [7:57] ALEX KOMOROSKE: We've been investigating looking at, for [7:59] example, across the web with the search index, and seeing [8:03] where these different features are being used. [8:05] We published a few of those results. [8:06] We're looking into that more. [8:07] Because that helps give us a better lens into what features [8:10] are actually being used, and how much of a risk there is in [8:13] removing them. [8:14] Certain features, like isindex, no one's using that. [8:16] But other ones, it helps figure out [8:18] which ones you can-- [8:20] [INAUDIBLE] [8:20] responsibly. [8:21] DARIN FISHER: Sometimes we have to do some work to help [8:23] people migrate. [8:24] We have some evangelism work, and so on. [8:26] Because there can be some people stuck on an old way of [8:29] doing something. [8:30] And there's a new way that would be better. [8:34] PAUL IRISH: Some of that, taking a look at the real [8:36] world usage of CSS, whether the prefix to prefix DOM [8:41] things, we've looked into this as a way to identify how we [8:45] can responsibly deprecate things like prefixed CSS [8:48] properties as well. [8:50] ALEX KOMOROSKE: We announced yesterday that going forward [8:52] we'll have a policy of no vendor prefixes, which is [8:54] similar to what Mozilla is doing, and the [8:57] policy they've adopted. [8:59] There are a lot of legacy prefixes for [9:00] stuff that we've inherited. [9:02] And over time, on a case by case basis, we'll be [9:05] investigating which of these we can just deprecate the [9:08] prefix version, because the non-prefixed version works. [9:11] Which ones are nonstandard? [9:12] Should those just be fully deprecated? [9:13] Should they be standardized? [9:15] And really on a case by case basis trying to work [9:17] through this list. [9:18] Ultimately, sometime in the future, getting to a point [9:20] where hopefully there are no prefixes. [9:22] That'll take us some time to get to. [9:24] We have to do it responsibly so we don't break stuff. [9:28] PAUL IRISH: Next question is, what will prevent the same [9:31] collaborative development difficulties that hampered [9:33] WebKit emerging in Blink as it gains more contributors, and [9:36] is ported to more platforms? [9:38] DARIN FISHER: The key comment here is porting. [9:41] And actually Blink will be built on a virtual platform, [9:48] if you will, that doesn't require a lot of porting [9:50] effort to bring it to new platforms. [9:52] You can see already that Chrome runs on variety of [9:54] devices, from desktop down to embedded systems. [9:58] And the point is that not a lot of work is required to [10:03] move that code base across these different systems. [10:06] This is all true because Chromium's sandboxed, [10:09] multi-process architecture forced us to take away [10:15] OS-specific integration from the web platform [10:18] implementation, from WebKit. [10:20] So we, over the course of time, developed this [10:23] abstraction layer, this virtual platform on which [10:24] WebKit's built. [10:26] And going forward with Blink, that's the only platform that [10:28] will support Blink, which means that it will be very [10:32] portable code base. [10:33] We've already seen people having plenty of success [10:36] taking Chromium's content layer, which is the [10:40] multi-process embedding layers, that it [10:43] will enclose Blink. [10:45] And they've taken that to many other platforms, and used it [10:47] in many different sorts of applications, all without [10:49] having to substantially fork or add code to Chromium. [10:56] We're really excited about the prospects of allowing a lot of [10:59] people to participate on Blink, and make use of it in [11:02] new ways, without having to torture the code base with a [11:05] lot of ifdefs or variations. [11:09] ALEX KOMOROSKE: Paul, you had a post a few weeks ago that I [11:12] thought was amazing. [11:13] I learned a lot from that post, actually. [11:14] And you talked about how there are different layers in WebKit [11:18] supporting them all. [11:18] You have to bring a lot of things to the table, every [11:21] platform you want to run on. [11:22] And with Blink, in with the content layer, you get all [11:26] this stuff just more easily. [11:28] We don't have to implement a special version. [11:29] DARIN FISHER: You get a cross-platform implementation [11:31] of these things. [11:32] It isn't like it's an atomic unit. [11:34] There is some modularity to it. [11:36] It allows people to subtract modules that they don't want [11:39] to bring with them to the platform. [11:40] But we strive in the Chromium to modularize, as opposed to [11:47] using preprocessor directives to hack up the code base. [11:56] PAUL IRISH: Say, for instance, V8 and Skia-- do those come [11:59] along with the content layer of Chromium? [12:01] DARIN FISHER: That's right. [12:01] V8 and Skia are implied by this system. [12:05] So Blink will depend on Skia for its graphics and V8 for [12:08] its JavaScript engine. [12:10] ALEX KOMOROSKE: And actually that coupling allows us to [12:12] potentially change those architectural layers, they way [12:16] those interact, and optimize those. [12:18] DARIN FISHER: This is a really important point. [12:19] I think both the Skia team and V8 are both pretty excited [12:23] about the opportunity to improve the integration of [12:26] those libraries with the rendering engine. [12:28] That's going to mean changes in those interfaces. [12:32] PAUL IRISH: Great. [12:34] Moving on to the next question, will the changes [12:36] from Blink be contributed back to the WebKit project. [12:40] ERIC SEIDEL: They're separate projects. [12:41] Definitely when we forked WebKit from KHTML, we saw a [12:46] lot of changes that got moved back and forth between the [12:49] code bases. [12:49] Because they began so similarly. [12:51] And I would predict that similar effects will happen [12:54] with Blink. [12:56] But they are separate projects. [12:57] They are separate code bases. [12:59] And we don't have any plans, currently, [13:02] to be moving patches. [13:04] ALEX KOMOROSKE: But they're both open source. [13:06] ERIC SEIDEL: They're both open source. [13:06] And anybody can do that. [13:08] ALEX KOMOROSKE: Over time, as they evolve in different [13:10] directions, that will get harder and harder to do. [13:12] But in the beginning especially, hopefully it won't [13:14] be too hard for sharing back and forth. [13:17] DARIN FISHER: I think those watching the change logs and [13:20] will see probably see some Googlers contributing some [13:24] changes to WebKit, certainly in the near term. [13:27] I think over time that will probably diminish. [13:33] PAUL IRISH: The next question, Google said problems living [13:35] with the WebKit2 multi-process model was a prime reason to [13:38] create Blink. [13:39] But Apple engineers say they asked to integrate Chromium's [13:42] multi-process into WebKit prior to creating WebKit2 and [13:44] were refused. [13:46] What gives? [13:50] DARIN FISHER: It's true that Apple, shortly after launching [13:53] Chrome, Apple expressed interest in our multi-process [13:57] layer that we had developed. [13:59] I think it's important to understand that that code [14:01] base, the multi-process layer was fairly [14:04] mature at that point. [14:05] We had launched Chrome. [14:07] We had developed a system that was very coupled into Chrome's [14:12] system, it's way of doing stuff. [14:16] It leveraged libraries that WebKit didn't use, and so on. [14:19] And so for us we viewed that opportunity to work with Apple [14:24] on the multi-process code as-- actually that sounded quite [14:28] exciting to us. [14:29] However, we saw that as a mountain of work, a large, [14:34] technically challenging engineering project for us. [14:40] Perhaps it's a matter of the timelines not being favorable. [14:44] But we just didn't see a path forward that allowed us to [14:47] contribute that code to WebKit. [14:51] ALEX KOMOROSKE: But overall I think what the teams ended up [14:54] doing was collaborating really effectively within WebCore. [14:57] DARIN FISHER: We focused on where we can maximize the [15:00] benefits of working together with Apple. [15:02] And that was sharing WebCore. [15:04] The parts that is a very sensitive part of the code [15:06] base, where HTML is parsed, where the DOM is constructed, [15:10] where CSS is used to render that DOM into the web pages as [15:14] we know it. [15:15] That part of the web, there was so much value in sharing [15:18] that code that we did our best to streamline or our way of [15:25] using WebKit, so that we could get as many developers focused [15:28] on WebCore as possible, and working with Apple. [15:30] And I think it's been very successful. [15:34] Going forward, I think, as we hinted to, there's some [15:37] significant changes that we want to make that we feel will [15:44] affect the shape of WebCore in ways that the WebCore project, [15:52] WebKit, might not be ready to receive. [15:53] So we don't want to keep on constraints. [15:58] That's what these us to where we are today. [16:01] Do you guys have anything to add? [16:03] ERIC SEIDEL: The reality is they're just very different [16:06] architectures to serve very different needs. [16:09] And the question of whether WebKit could have adopted our [16:13] model, or whether we would adopt their model are [16:18] questions comparing different timelines. [16:20] One was five years ago. [16:21] One was a year or two ago. [16:24] So they're almost incomparable. [16:25] But the reality is they're very different architectures, [16:27] very different answers to similar questions. [16:31] And we chose different paths. [16:33] And we successfully collaborated in the WebKit [16:35] project for the last five years. [16:37] And it's been great. [16:38] And I think we'll continue to collaborate [16:39] with the WebKit project. [16:41] But we've chosen different paths. [16:46] PAUL IRISH: Is there anything that we can say around [16:49] Android's web view implementation and its [16:52] adopting Blink? [16:55] DARIN FISHER: Those following along in the Chromium project [16:57] can see that there's been development of Android web [17:01] view API on top of Chrome. [17:04] In the fullness of time, when that comes to Android, then [17:06] Blink will come to Android. [17:08] I'm excited about that. [17:09] I think it's great from our point of view of our team to [17:14] help enable the use of web view to be based on Chrome. [17:18] So that we can help make it better. [17:20] And have it be based on Blink means we can [17:22] help make it be better. [17:23] I'm excited about that. [17:25] PAUL IRISH: Absolutely. [17:28] Will Blink be able to support multiple scripting languages? [17:36] DARIN FISHER: Sorry, I think our plan going forward-- [17:39] I think this is a reference to Dart, perhaps? [17:41] The Dart VM. [17:45] It's important to understand that even today, you can go [17:49] and get Dartium, which is a build of Chromium, [17:51] uses the Dart VM. [17:53] And the engineers working on that project have developed a [17:56] patch that allowed them to add the Dart VM to WebKit in a way [18:00] that wasn't terribly disruptive to WebKit. [18:03] The reason why Dart VM is not in Chromium today doesn't [18:07] really have to do with whether or not WebKit supports or [18:11] Blink supports multiple VMs. [18:12] It has a lot more to do with the timeline for the Dart [18:15] itself, and getting to the point where we feel like we [18:18] can make a long term-- or should make a long term-- [18:20] commitment to the Dart VM. [18:23] ALEX KOMOROSKE: We have very strong principles, with Blink [18:25] especially, about compatibility risk, and making [18:27] sure that we responsibly ship new features. [18:31] These are things that we are going to hold all features up [18:33] to as we decide whether or not to ship them. [18:35] DARIN FISHER: I think somebody made a really good point. [18:37] I forget who it was. [18:38] Maybe one of the other engineers on our team. [18:40] He said, whatever we do, whatever we put in Blink, it's [18:42] got to fit on here. [18:44] And so we can't just put everything in there just [18:46] because it seems like a good idea. [18:48] We have to validate that. [18:49] And be confident that we can stick with that decision, make [18:52] a long term commitment. [18:53] And build this platform responsibly. [18:55] We don't want to have-- [18:59] this relates to our whole strategy [19:01] around deprecating APIs. [19:02] We don't want to be in a situation where we have to [19:04] deprecate API. [19:05] So we don't want to add multiple different ways of [19:08] doing the same thing. [19:09] I think the web platform is famous for having multiple [19:12] solutions to the same problem. [19:14] And we see that as a problem. [19:17] We have to be responsible to not create [19:19] more of those problems. [19:24] PAUL IRISH: This is a question from spiffytech. [19:25] How does the Chromium team expect this will affect the [19:28] myriad of other browsers that have adopted WebKit. [19:32] ALEX KOMOROSKE: I should say, too, one thing to start off. [19:35] We fundamentally believe that having multiple rendering [19:37] engines will help spur innovation, and is ultimately [19:40] good for the long-term health of the web. [19:42] And so in that respect, I think it's actually very [19:44] healthy for the whole ecosystem. [19:47] So just to get started with that. [19:50] DARIN FISHER: As a team, we're really focused on web [19:51] standards, and sharing tasks, and helping this ecosystem of [19:59] browsers all agree on what the web platform should be. [20:03] But having multiple [20:04] implementations is really valuable. [20:07] Without that, developers are stuck maybe with the quirks of [20:12] a particular engine. [20:14] And that's not healthy for the platform. [20:17] It's not great for developers, as far as we can tell. [20:21] ERIC SEIDEL: I hope, if anything it just gives other [20:23] browsers choice. [20:27] Embedding WebKit is not comparable, really, to [20:30] embedding Blink. [20:30] Because Blink requires the Chromium content layer. [20:34] So you would embed the Chromium content layer if you [20:36] wanted to embed Blink. [20:39] But it just gives you choice. [20:44] PAUL IRISH: I think we covered this. [20:46] Does this mean that Google stops contributions to WebKit? [20:50] ERIC SEIDEL: Google contributed WebKit before [20:54] Chrome was announced. [20:54] And I expect that Google will continue to contribute after. [20:57] DARIN FISHER: I think is important to say that, as [21:01] Google, we're not telling people they shouldn't [21:03] contribute to WebKit. [21:04] We're just telling them that, feel free to focus on Blink. [21:10] ERIC SEIDEL: Chromium is going to ship Blink. [21:13] And so the Chromium team is focused on Blink. [21:18] But that doesn't mean that other parts of Google, or even [21:20] parts of the Blink team-- [21:21] some of us are long time WebKit contributors. [21:24] I plan to post patches to WebKit. [21:26] I expect other of my colleagues do too. [21:31] PAUL IRISH: What open source license will Blink have? [21:33] Will it continue to support the H.264 codec? [21:35] DARIN FISHER: There's no relicensing happening as part [21:37] of this fork. [21:39] PAUL IRISH: What's the-- [21:40] DARIN FISHER: It's a collage of licenses. [21:42] ALEX KOMOROSKE: A collage-- that's a good [21:42] way of putting it. [21:44] DARIN FISHER: The history of WebKit is that it's absorbed [21:46] code from a variety of projects. [21:47] I think a lot of it is BSD. [21:49] ERIC SEIDEL: BSD and LGPL. [21:51] DARIN FISHER: Will it continue to support the H.264 codec? [21:54] That's really more of a Chrome question. [21:56] ERIC SEIDEL: Blink doesn't know what codecs even exist. [22:00] It has a box in which the video goes. [22:03] And something outside of Blink makes the video go there. [22:06] So Blink doesn't care or know. [22:11] PAUL IRISH: We saw a lot of questions about this. [22:13] People are curious about the user-agent string. [22:17] Will we see a Blink keyword in the user-agent string, like [22:20] KHTML, like Gecko? [22:21] DARIN FISHER: We have no plans to change [22:24] the user-agent string. [22:25] And going forward, in fact, there's a version number after [22:29] Apple WebKit and Safari. [22:32] At this point we have no plans to change that number. [22:35] What will change, going forward, is just to the number [22:37] after Chrome. [22:39] We, of course, lament the use-agent string profusely. [22:44] But we also see that any changes there have to be [22:47] handled very, very carefully. [22:49] Because, like it or not, people do all kinds of [22:52] interesting string compares against it. [22:55] ALEX KOMOROSKE: As you can tell from looking at anyone's [22:56] user-agent string, they're crazy. [22:59] I should say, too, this is the kind of thing that ultimately, [23:02] if we revisit this-- [23:03] I'm sure at some point we will-- will be doing it on [23:05] blink-dev, the open mailing list. [23:07] And this will be definitely discussion that we can take [23:09] care of for you if we come to it. [23:10] DARIN FISHER: I think it was a couple years ago that there [23:13] was a successful effort to trim out a few bits of the [23:17] user-agent strings. [23:19] Certainly be looking for opportunities. [23:21] I would love to see this user-agent string be [23:25] simplified radically. [23:26] But it's hard to say when or if that will happen. [23:32] ERIC SEIDEL: Just don't want to break the web. [23:34] PAUL IRISH: Don't break the web. [23:37] When we'll be able to test the first version Blink? [23:42] Again this is available-- [23:43] DARIN FISHER: Today. [23:43] PAUL IRISH: Blink is available in Chrome Canary as of today. [23:46] DARIN FISHER: And you can build it yourself. [23:47] This question was asking about Blink in Chromium as well. [23:50] You can just build it yourself. [23:52] ERIC SEIDEL: We had some tireless infrastructure [23:53] engineers who stayed up all night making that true. [23:56] ALEX KOMOROSKE: I was watching blink-dev this morning. [23:57] I think people succeed in building it, correct? [24:00] ERIC SEIDEL: Yes. [24:01] ALEX KOMOROSKE: So at this point we're focusing-- [24:02] ERIC SEIDEL: We have taken patches already. [24:04] ALEX KOMOROSKE: Great. [24:06] ERIC SEIDEL: Blink is up and running today. [24:07] You can build it today. [24:08] And I believe the Chromium canary tomorrow is likely to [24:12] have Blink in it. [24:15] PAUL IRISH: Another thing I wanted to ask about this, a [24:22] lot of people are used to watching change that's coming [24:24] on the WebKit side. [24:26] To do the same in Blink, we have a similar [24:29] way of doing that. [24:30] ERIC SEIDEL: We do have URLs. [24:30] I don't know them off the top of my head. [24:32] ALEX KOMOROSKE: We do. [24:33] And I think it's on the project page. [24:35] Our goal is for everyone to be able to watch this, and watch [24:37] all the discussions and bugs, and everything. [24:40] So if there is something where it's hard to follow along, we [24:42] want to make that easier for people. [24:44] ERIC SEIDEL: The easy way to answer that is to join [24:45] blink-dev@chromium.org, or to join the [24:48] #Blink channel on Freenode. [24:51] We've also talked about having an IRC-based commit bot, just [24:55] like the WebKit project does, where it tells you what the [24:57] commits as they come in. [24:59] But that's the way to answer that question, is to join one [25:01] of our mailing lists or IRC. [25:03] PAUL IRISH: And all that information is available on [25:04] chromium.org/blink, where you can see our current mailing [25:07] lists, a link to where all the change sets are coming in, [25:11] where you can browse them, and everything else. [25:13] ALEX KOMOROSKE: One thing too, watching the change sets takes [25:17] a lot of effort for a lot of web developers. [25:18] And one thing that we're doing is, especially recently, we're [25:22] getting better at having summary posts. [25:24] And so we do that for every beta release now for Chrome. [25:28] Those summarize what things we've enabled, which things [25:31] are now behind a flag, which prefixes we've deprecated. [25:35] That's a great way for web developers to follow along, [25:37] where you don't have to be reading every single commit [25:40] that's going through. [25:41] And chromestatus.com is also great. [25:42] We're going to be-- [25:43] Max and Eric were just talking on blink-dev. [25:45] They have plans to make that into more of a full future [25:47] dashboard which is really cool. [25:49] PAUL IRISH: Chromestatus.com lists out all the various [25:52] features of the platform that are in discussion these days, [25:56] lists out what their implementation status is, and [26:00] also what their standardization status is [26:02] across the browser ecosystem. [26:03] ALEX KOMOROSKE: I love watching. [26:04] If you haven't looked at it, you should look at it. [26:05] It's really interesting to get a snapshot. [26:08] DARIN FISHER: We all had this idea in our head of what it [26:10] might look like. [26:11] But to actually see it. [26:12] ALEX KOMOROSKE: Oh wow, it's very interesting. [26:14] PAUL IRISH: It's a great snapshot of the web ecosystem [26:17] in one view. [26:18] And we've already been getting some great contributions from [26:20] Adobe over the past two days. [26:23] ALEX KOMOROSKE: And others, as well. [26:23] I think we got a few guys from Mozilla also [26:26] helped us as well. [26:27] The goal is to have that be a snapshot of the health, the [26:32] state, of the web ecosystem. [26:33] Specifically Chromium, but over time it could be for the [26:36] whole web ecosystem. [26:36] I think that's cool. [26:38] We'll see. [26:40] PAUL IRISH: Next question. [26:42] How will this impacts Dart language's process? [26:45] Can we expect a Dart VM to be integrated [26:47] into Chrome as a result? [26:49] DARIN FISHER: I already answered the question. [26:50] But I think it doesn't really impact Dart language at all. [26:56] ERIC SEIDEL: Dart's a separate open source project. [26:58] I don't think changes to our open source [27:00] really affect them directly. [27:04] PAUL IRISH: When we get our hands on Blink code? [27:07] Again, today. [27:10] Yesterday. [27:11] We're good. [27:13] Will this be a direct competitor against Mozilla's [27:16] new engine? [27:17] Is co-working with Mozilla out of the question? [27:20] ERIC SEIDEL: The engine I believe they mean is Servo, [27:22] which although Brendan posted about it yesterday, it's been [27:25] in the public for a long time. [27:27] ALEX KOMOROSKE: I remember design docs [27:28] about that a year ago. [27:30] ERIC SEIDEL: I've been following it for a while. [27:31] It's very, very cool what they're doing. [27:33] ALEX KOMOROSKE: Really cool ideas. [27:34] ERIC SEIDEL: But I don't see Blink as really a direct [27:37] competitor. [27:38] DARIN FISHER: Blink is an iteration from WebKit. [27:40] It's a fork of WebKit. [27:42] Servo is a new rendering engine [27:45] constructed from scratch. [27:46] ERIC SEIDEL: According to their docs, it's an [27:47] experiment. [27:48] The docs say that they may not actually ever ship. [27:51] So that's a very different kind of project then Blink or [27:55] WebKit, which is really about-- [27:57] ALEX KOMOROSKE: A shipping product. [27:59] ERIC SEIDEL: Yeah, it's about an iteration. [28:00] One of WebKit's goals was WebKit is [28:03] not a science project. [28:04] We're about shipping a product today. [28:06] And the reality is the world and the web ecosystem need [28:10] both kinds. [28:11] We need exploratory crazy new things. [28:13] And we also need to ship something today. [28:16] And Blink is about shipping today. [28:17] ALEX KOMOROSKE: I think we're really excited to see some of [28:19] those ideas they're trying. [28:20] Because we're trying to dream big with our wish list of [28:23] things to try. [28:23] They're dreaming even bigger. [28:24] Because they're building a new one from scratch. [28:26] ERIC SEIDEL: Which is amazing. [28:27] ALEX KOMOROSKE: And so that will be really cool to see [28:28] which of those really big ideas work, and which ones-- [28:30] DARIN FISHER: I'm sure there will be a lot of idea sharing. [28:32] ALEX KOMOROSKE: Absolutely. [28:33] ERIC SEIDEL: And I can see the Mozilla [28:34] offices from my window. [28:37] And we talk to Mozilla guys with some frequency. [28:40] And I think of them as very cooperative, not competitors. [28:46] DARIN FISHER: Do they know you can see them? [28:49] ERIC SEIDEL: I'm not sure. [28:50] PAUL IRISH: The buildings are right next to each other. [28:50] ERIC SEIDEL: The buildings are right next to each other. [28:52] ALEX KOMOROSKE: Actually we discussed this with some folks [28:54] from Mozilla. [28:54] They were visiting a few days ago in the offices. [28:57] We talked about the fact that we could see them. [29:01] PAUL IRISH: So the question is about vendor prefixes. [29:05] When will the existing vendor prefixes in [29:07] Blink be phased out? [29:08] ALEX KOMOROSKE: I think I already touched on this as [29:10] part of an earlier question. [29:12] Again, going forward, no new vendor prefixes. [29:15] But course there are a number of legacy [29:16] ones that we've inherited. [29:17] DARIN FISHER: It could take a long time to-- [29:19] ALEX KOMOROSKE: It could take a long time. [29:20] Because we want to do it responsibly. [29:21] Want to figure out-- we don't want to break the web. [29:23] So some of them are, there's been the un-prefixed version [29:27] for years and years and years. [29:28] And no one's using the prefix version. [29:30] Go ahead and take that out. [29:31] Other ones are things that were never standardized. [29:33] And we want to either figure out, should we [29:35] just deprecate these? [29:36] Or should we take these to standardization? [29:39] But it's going to be a case by case basis. [29:40] DARIN FISHER: I think this really hits on the point. [29:43] And the reason why we don't want to do vendor prefixes [29:45] anymore is because, vendor prefix or not, when you add [29:48] something to the platform and you ship it, you can [29:51] get stuck with it. [29:52] And it becomes part of the platform. [29:53] And so adding vendor prefixes just makes a big old mess. [29:58] It doesn't actually seem to add any value. [30:00] ERIC SEIDEL: Standards bodies have even discussed the idea [30:03] of needing to standardize WebKit prefixed features, [30:07] which is crazy to me. [30:08] But may need to happen if we fail to be [30:11] able to remove these. [30:12] ALEX KOMOROSKE: It's crazy. [30:13] Hopefully it doesn't come to that. [30:14] DARIN FISHER: So there will be no Blink prefix. [30:16] ERIC SEIDEL: There will be no Blink prefix. [30:17] The madness must stop. [30:20] PAUL IRISH: I saw a request, actually, that we would maybe [30:23] support -blink text-decoration-blink. [30:30] DARIN FISHER: I'm pretty sure we will not be doing that. [30:34] Maybe behind an enable flag, just for fun. [30:37] ALEX KOMOROSKE: Someone was joking-- [30:38] I forget who it was-- [30:40] joking that with web components actually someone [30:42] could make an x-blink if they really wanted to, their own [30:45] version of it. [30:48] We will not ship the Blink tag. [30:50] That's for sure. [30:51] PAUL IRISH: I think that can wrap it up for now. [30:53] I appreciate everyone for submitting [30:55] questions, voting them up. [30:57] Hope we answered a lot of your questions. [30:59] We'll be posting this video, along with our [31:02] content already out there. [31:04] So if you haven't checked it out, chromium.org/blink gives [31:07] an overview of the entire project, our policies towards [31:11] adding features. [31:13] And then the Developer FAQ answers a lot of other [31:15] questions that go along with these ones. [31:18] So I encourage you to check that out. [31:19] And I think that'll wrap it up. [31:21] DARIN FISHER: Thank you. [31:22] PAUL IRISH: Thanks guys, very much, for joining us.