W3C home > Mailing lists > Public > public-webapps@w3.org > January to March 2013

Re: [webcomponents]: Making Shadow DOM Subtrees Traversable

From: Bronislav Klučka <Bronislav.Klucka@bauglir.com>
Date: Thu, 07 Mar 2013 18:55:18 +0100
Message-ID: <5138D486.4020401@bauglir.com>
To: public-webapps@w3.org

On 7.3.2013 17:51, Scott González wrote:
> On Wed, Mar 6, 2013 at 3:00 PM, Boris Zbarsky <bzbarsky@mit.edu 
> <mailto:bzbarsky@mit.edu>> wrote:
>
>     On 3/6/13 1:31 PM, Scott González wrote:
>
>         but we feel the pros of exposing internals outweigh the cons.
>
>
>     When you say "exposing internals" here, which one of the following
>     do you mean:
>
>     1)  Exposing internals always.
>     2)  Exposing internals by default, with a way to opt into not
>     exposing.
>     3)  Not exposing internals by default, with a way to opt into
>     exposing.
>
>
> I was replying in the context of jQuery, in which we expose most 
> internals always. There is no option to have jQuery hide it's internals.
>
>     And what do you feel the pros are of whichever one you're talking
>     about compared to the items after it on the list, just so we're on
>     the same page?
>
>
> In terms of web components, I'm not sure I (or anyone else on the 
> jQuery team) have too strong of an opinion on the default. However, I 
> can say that I find it extremely annoying that I can't reach into the 
> Shadow DOM for new input types and just kill everything. I want <input 
> type="date"> to render as <input type="text"> because native HTML will 
> likely never be as flexible as custom JS components. Obviously I'd 
> prefer a standard, and web components are supposed to solve this. But 
> in the meantime, we're provided with useful semantics and validation 
> that go unused if you want the flexibility of a JS date picker.
>
> As someone building JS components, I see the benefit of having the 
> internals exposed to me so I can do as I please. I also recognize the 
> pain of maintaining code that reaches into internals. As someone who 
> cares about the future of the web, I see the very real danger of this 
> becoming widespread and ending up in the situation Boris wants us to 
> avoid.

I do not mean to sound cocky here, but I'd really like to know how many 
people here are used to languages that can separate internals and 
externals, because if you are simply not used to it, you simply cannot 
see the benefits and all goes to "I'm used to play with internals of 
controls", regardless how wrong it is. I mean it's like discussion of 
introducing private properties of an class and someone complaining that 
he/she is used to touch everything he/she desires. I find it hard to 
explain how wrong that simply is. You do not touch anything else than 
external API provided by opaque blackbox. As someone building components 
in several languages not being able to hide certain things is scary to me.

I mean why do we wrap JS code in anonymous functions?
(function(){
//place code here
})();
well.. are you advocating in jQuery not to do that? Because someone 
wants to play with internals? are you advocating that it does not matter 
what can anyone change in jQuery internals or what can leak from jQuery 
internals to outside space? - "well he/she likes to play, let him/her, 
and if anything brakes down, his/hers fault, and by the way he/she have 
to be especially careful not to use variable names we are using already 
, functions as well... but he/she gets used to it" - I mean where is the 
difference here? Just open jQuery code... bunch of internal variables... 
why are those not public? Again, how can you advocate for non-private 
DOM while working in script that is whole private... just exposing the 
necessary.
And thanks for making my point, if my control depends on <input 
type=date> I do not want some external script to cripple it!
I opened jQuery datepicker source code (you seem to like it, I cannot 
tell you how glad I am for Chrome date picker that I can finally get rid 
of jQ datepicker [and jQ altogether])... so many private variables... 
should I repeat myself? Where is the difference? Apparently even jQuery 
team does not care whether programers wants to play with everything, but 
cares about that fact, that you can plug jQuery anywhere and it will not 
break by outside scripts and that outside space will not break by jQuery.
And that's what I'm expecting from ShadowDOM = controls you insert and 
they work, no side effects what so ever.

 From my JS/HTML control experience?
* I want all my tables to look certain way - boom jQury datepicker 
brokes down, tinyMCE brokes down
* I want all my tables to have and option for exporting data - boom 
jQury datepicker brokes down, tinyMCE brokes down
* I switch from content-box to border-box - pretty much every 3rd party 
control breaks down
* I want to autogenerate table of contents (page menu links) from 
headings in the article, f*ck, some stupid plugin gets involved
that's like the last week experience
I mean why do I have to spend time learning *internals* of controls in 
HTML? Why do I have to look to what class names that control is using 
not to break thinks? etc.

And I can go on and on and on... I mean there are people who see the 
clear borders as benefit for their work. Why not giving them this option 
(considering HTML/JS controls are like the only major language 
constructed controls without this option... are .NET, Java, Delphi, C++ 
Builder etc. so wrong? all of them?). You do not like it? Don't use it.

B.
Received on Thursday, 7 March 2013 17:55:43 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:57 GMT