[Bug 27401] New: [Shadow]: Fully explore composition

https://www.w3.org/Bugs/Public/show_bug.cgi?id=27401

            Bug ID: 27401
           Summary: [Shadow]: Fully explore composition
           Product: WebAppsWG
           Version: unspecified
          Hardware: PC
                OS: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Component Model
          Assignee: dglazkov@chromium.org
          Reporter: dglazkov@chromium.org
        QA Contact: public-webapps-bugzilla@w3.org
                CC: mike@w3.org, public-webapps@w3.org
            Blocks: 14978

This is a meta bug for polishing Shadow DOM as a composition primitive.
https://gist.github.com/dglazkov/716913d889c38e42d55c

With Shadow DOM, the developers finally have the composition boundaries to help
them reason about larger web apps in terms of smaller chunks. The actual
concept is not unique. What's unique about it is that the Web Platform is also
aware of these boundaries.

We have a whole set of challenges ahead of us. We need to make sure that the
composition boundaries have the right crunchy/gooey balance to be truly useful,
we need to build introspection tooling to make these composition boundaries
more grokkable. We also need to ensure that these boundaries are designed in a
way that allows the browser to help developer build modern UX
(http://bit.ly/blink-midnight-train as an example of UX guidelines).

Some of these challenges are conflicting with each other, and the problem
easily gets into the over-constrained territory.

We also need better terminology. "Information hiding" sounds negative and
purposeless. Why would anyone want to hide information?

"Encapsulation" is a super-overloaded term. When you say it to one crowd, they
hear iframe. To another crowd, it sounds like something different.

I suggest we use the term "composition" and see how far we can get. 

For example, the question "when should I put things in Shadow DOM?" is a
symptom of approaching the problem from the wrong angle. It's effectively the
same question as "when should I put things in a class?"

I, as a developer, should use Shadow DOM when I need to draw composition
boundaries in my code. The consistency of these composition boundaries should
be flexible enough to express the degrees of composition I need in each
particular case.

For example, when I build a <my-app> element, it seems nonsensical for
document.activeElement to return <my-app> when I focused something inside of
it. However, it's equally non-sensical for <datetime-input> element to _not_ do
that.

Unfortunately, too often, "flexibility" is another word for "added complexity"
and "unpredictable performance characteristics". This is the hardest
constraint. We should avoid adding more bloat to the platform.

-- 
You are receiving this mail because:
You are on the CC list for the bug.

Received on Friday, 21 November 2014 18:46:56 UTC