Dimitri has been doing mostly spec work recently, with a team of engineers based in Tokyo doing implementation work. = High level overview = Web Components is the big umbrella over: * Shadow DOM : An API to expose functionality that already exists in WebKIt. You can hide some DOM elements. * HTML Templates : Likely not its own spec (just part of HTML). Allows you to define inert chunks of DOM. A means to define document fragments declaritvely. * Custom Elements : Allows developers to extend meaning and API surface of elements. * Decorators : A way to add presentational qualities to existing DOM elements declaratively and transiently (based on style matching). == Shadow DOM == * Implementation underway in WebKit * Mozilla is generally interested, but focused on Boot 2 Gecko for now * Microsoft has showed interest as well. Shadow DOM is remininscent of HTC/behaviors. Windows 8 controls effectively have a fake Shadow DOM built in JS. They want this to solve that problem in the long term. * Spec is very robust. Will likely push to Working Draft at F2F in May * Running behind a flag. Only in Canary/Dev in Chrome (basically the Nightly builds) * We will not ship and release to web at large until at least one other implementation in progress. == HTML Templates == * A lot of interest from web developers. * Interesting issues to consider, especially around modifying the HTML parser behavior * Working with Henry Sivonen (sp?) at Mozilla to investigate purely additive things to do to the parser to not break existing content * Hoping to push small delta to HTML spec instead of its own spec. == Custom Elements == * A prototype built using JavaScript and Shadow DOM exists; still test-driving it to see how it feels * Dimitri will be working on it this quarter to spec it up. * There are some trivial pieces (mainly on JavaScript standard semantics), but there are some non-trivial pieces, like firing callback to modify objects (parallels to mutation event problems). == Decorators == * Least support for this piece. Some active detractors. * Not crucial for Web Componets to exist. Read the explainer document (http://dvcs.w3.org/hg/webcomponents/raw-file/tip/explainer/index.html). It's the high level document that informs the direction of the specs, then go back and update it after the specs have been written. Q: Is there more movement to more controls being implemented in WebKit using Shadow DOM? A: It's definitely a better solution, using common infrastructure. All custom rendering in the media element is gone on trunk except for two cases. File upload also doesn't use it. Popup menus aren't shadow DOM and likely won't be (because it can go outside the browser window). = Detailed description = == Shadow DOM == * For any given node, you can have a shadowRoot. You can have more than one of them, in a stack. * Every shadowRoot is a document fragment that can have zero or more nodes of its own that define a DOM subtree. * Those nodes are '''not''' accessible to the document tree (except through teh shadowRoot) * Allows creating a sub-tree associated with an element but not presented as part of it in the DOM * When rendering, there's an algorithm to render them as part of the document tree. * Shadow DOM spec formalizes how they're composed, interact with the document, and what the encapsualtion boundaries are between the document and the shadow tree. * This gives you the capability to add more rendering to an existing node. Example: a navigation bar with no content when viewed from the rest of the document, but renders, has styling, etc in reality. * You to compose the logical DOM children of the node into the shadow DOM for rendering. Without this, all that would render would be in the shadow DOM. * Insertion points are special nodes that allow you to specify "holes" in the shadow DOM where the logical children should render. For example, take the