/irc-logs / w3c / #webapps / 2016-01-25 / end

Options:

Previous day, Next day

  1. # Session Start: Mon Jan 25 00:00:00 2016
  2. # Session Ident: #webapps
  3. # [00:11] * Joins: Florian (~Florian@public.cloak)
  4. # [00:20] * Quits: wilsonpage (~wilsonpage@public.cloak) ("My Mac has gone to sleep. ZZZzzz…")
  5. # [00:47] * Quits: Florian (~Florian@public.cloak) (Ping timeout: 180 seconds)
  6. # [00:50] * Joins: marcosc (~marcosc@public.cloak)
  7. # [01:18] * Joins: Florian (~Florian@public.cloak)
  8. # [01:44] * Quits: metasansana (~metasansana@public.cloak) ("Leaving")
  9. # [01:56] * Joins: zcorpan (~zcorpan@public.cloak)
  10. # [02:03] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
  11. # [02:56] * Joins: zcorpan (~zcorpan@public.cloak)
  12. # [03:04] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
  13. # [03:57] * Joins: zcorpan (~zcorpan@public.cloak)
  14. # [04:04] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
  15. # [04:26] * Quits: marcosc (~marcosc@public.cloak) (Client closed connection)
  16. # [04:29] * Joins: marcosc (~marcosc@public.cloak)
  17. # [04:29] * Quits: marcosc (~marcosc@public.cloak) (Client closed connection)
  18. # [04:29] * Joins: marcosc (~marcosc@public.cloak)
  19. # [04:58] * Joins: zcorpan (~zcorpan@public.cloak)
  20. # [05:05] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
  21. # [05:43] * Quits: marcosc (~marcosc@public.cloak) (Client closed connection)
  22. # [05:59] * Joins: zcorpan (~zcorpan@public.cloak)
  23. # [06:06] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
  24. # [06:25] * Joins: marcosc (~marcosc@public.cloak)
  25. # [06:32] * Quits: marcosc (~marcosc@public.cloak) (Ping timeout: 180 seconds)
  26. # [06:41] * Joins: marcosc (~marcosc@public.cloak)
  27. # [06:47] * Quits: marcosc (~marcosc@public.cloak) (Client closed connection)
  28. # [06:47] * Joins: marcosc (~marcosc@public.cloak)
  29. # [06:54] * Quits: marcosc (~marcosc@public.cloak) (Ping timeout: 180 seconds)
  30. # [07:00] * Joins: zcorpan (~zcorpan@public.cloak)
  31. # [07:07] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
  32. # [08:00] * Joins: zcorpan (~zcorpan@public.cloak)
  33. # [08:08] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
  34. # [08:41] * Quits: Florian (~Florian@public.cloak) (Client closed connection)
  35. # [08:43] * Joins: zcorpan (~zcorpan@public.cloak)
  36. # [08:50] * Joins: marcosc (~marcosc@public.cloak)
  37. # [08:57] * Quits: marcosc (~marcosc@public.cloak) (Ping timeout: 180 seconds)
  38. # [09:34] * Joins: Florian (~Florian@public.cloak)
  39. # [09:57] * Joins: marcosc (~marcosc@public.cloak)
  40. # [10:31] * Joins: wilsonpage (~wilsonpage@public.cloak)
  41. # [11:11] * wilsonpage is now known as wilsonpage-away
  42. # [11:11] * Quits: wilsonpage-away (~wilsonpage@public.cloak) ("My Mac has gone to sleep. ZZZzzz…")
  43. # [11:14] * Joins: wilsonpage (~wilsonpage@public.cloak)
  44. # [11:25] * Quits: Florian (~Florian@public.cloak) (Client closed connection)
  45. # [11:48] * Joins: Florian (~Florian@public.cloak)
  46. # [11:48] * Joins: Florian_ (~Florian@public.cloak)
  47. # [11:51] * wilsonpage is now known as wilsonpage-away
  48. # [11:52] * Quits: wilsonpage-away (~wilsonpage@public.cloak) ("My Mac has gone to sleep. ZZZzzz…")
  49. # [11:55] * Quits: Florian (~Florian@public.cloak) (Ping timeout: 180 seconds)
  50. # [11:56] * Quits: Florian_ (~Florian@public.cloak) (Ping timeout: 180 seconds)
  51. # [12:26] * Joins: wilsonpage (~wilsonpage@public.cloak)
  52. # [12:49] * Joins: Florian (~Florian@public.cloak)
  53. # [12:54] * Joins: dom (dom@public.cloak)
  54. # [13:09] * Quits: marcosc (~marcosc@public.cloak) (Client closed connection)
  55. # [13:09] * Joins: marcosc (~marcosc@public.cloak)
  56. # [13:21] * Quits: marcosc (~marcosc@public.cloak) (Ping timeout: 180 seconds)
  57. # [13:23] * wilsonpage is now known as wilsonpage-away
  58. # [13:26] * Quits: Florian (~Florian@public.cloak) (Ping timeout: 180 seconds)
  59. # [13:34] * Joins: Florian (~Florian@public.cloak)
  60. # [13:54] * wilsonpage-away is now known as wilsonpage
  61. # [14:12] * wilsonpage is now known as wilsonpage-away
  62. # [14:15] * Joins: smaug (~chatzilla@public.cloak)
  63. # [14:16] * Quits: smaug (~chatzilla@public.cloak) ("ChatZilla 0.9.92 [Firefox 46.0a1/20160119030232]")
  64. # [14:26] * Joins: smaug (~chatzilla@public.cloak)
  65. # [14:34] * wilsonpage-away is now known as wilsonpage
  66. # [15:06] * Quits: Florian (~Florian@public.cloak) (Client closed connection)
  67. # [15:08] * Joins: Florian (~Florian@public.cloak)
  68. # [15:16] * Joins: marcosc (~marcosc@public.cloak)
  69. # [15:24] * Quits: marcosc (~marcosc@public.cloak) (Ping timeout: 180 seconds)
  70. # [16:02] * Joins: rniwa (~textual@public.cloak)
  71. # [16:05] * Joins: rniwa_ (~textual@public.cloak)
  72. # [16:09] * Quits: rniwa (~textual@public.cloak) (Ping timeout: 180 seconds)
  73. # [16:11] * Quits: Florian (~Florian@public.cloak) (Client closed connection)
  74. # [16:49] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
  75. # [17:01] * Quits: rniwa_ (~textual@public.cloak) ("My Mac has gone to sleep. ZZZzzz…")
  76. # [17:07] * Joins: rniwa (~textual@public.cloak)
  77. # [17:07] <rniwa> hello.
  78. # [17:18] * Joins: marcosc (~marcosc@public.cloak)
  79. # [17:25] * Quits: marcosc (~marcosc@public.cloak) (Ping timeout: 180 seconds)
  80. # [18:10] * Joins: shepazu (schepers@public.cloak)
  81. # [18:14] * Joins: zcorpan (~zcorpan@public.cloak)
  82. # [18:15] * Joins: zcorpan_ (~zcorpan@public.cloak)
  83. # [18:21] * Joins: zcorpan__ (~zcorpan@public.cloak)
  84. # [18:21] * Quits: zcorpan_ (~zcorpan@public.cloak) (Client closed connection)
  85. # [18:21] * Quits: zcorpan (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
  86. # [18:21] * Quits: wilsonpage (~wilsonpage@public.cloak) ("My Mac has gone to sleep. ZZZzzz…")
  87. # [18:24] * Joins: wilsonpage (~wilsonpage@public.cloak)
  88. # [18:28] * Quits: zcorpan__ (~zcorpan@public.cloak) (Ping timeout: 180 seconds)
  89. # [18:28] * Joins: zcorpan (~zcorpan@public.cloak)
  90. # [18:30] * Quits: dom (dom@public.cloak) ("")
  91. # [18:31] <smaug> rniwa: hello. I could follow remotely in the background if the conference call thingie is up and running
  92. # [18:36] <smaug> not that I've ever managed to use webex
  93. # [18:36] <smaug> but there is that phonenumber too, and skype isn't too expensive
  94. # [18:36] <rniwa> yeah, i haven't started the conf yet
  95. # [18:37] <rniwa> since it won't start 'til 10am (27min)
  96. # [18:43] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
  97. # [18:46] * Joins: Travis (~Travis@public.cloak)
  98. # [18:46] * Quits: wilsonpage (~wilsonpage@public.cloak) (Client closed connection)
  99. # [18:46] * Joins: wilsonpage (~wilsonpage@public.cloak)
  100. # [18:48] * Joins: chaals (~Adium@public.cloak)
  101. # [18:48] * Quits: wilsonpage (~wilsonpage@public.cloak) (Client closed connection)
  102. # [18:51] * chaals changes topic to 'Web Platform f2f meeting - Custom Elements: https://github.com/w3c/WebPlatformWG/blob/gh-pages/meetings/25janWC.md logged at http://krijnhoetmer.nl/irc-logs/'
  103. # [18:54] * Joins: RRSAgent (rrsagent@public.cloak)
  104. # [18:54] <RRSAgent> logging to http://www.w3.org/2016/01/25-webapps-irc
  105. # [18:58] <chaals> rrsagent, make log public
  106. # [18:58] <RRSAgent> I have made the request, chaals
  107. # [18:58] <chaals> Meeting: Web Platform - custom elements
  108. # [18:58] <chaals> Chair: chaals
  109. # [18:59] <chaals> Present+ PLH, Hober, William_Chen, AnnevK, DGlazkov, AdrianBa, TravisL, ArronEicholz, Léonie, Hayato, Ryosuke
  110. # [19:02] <chaals> agenda?
  111. # [19:02] * Joins: Zakim (zakim@public.cloak)
  112. # [19:02] <chaals> agenda?
  113. # [19:02] * Zakim sees nothing on the agenda
  114. # [19:02] <chaals> agenda+ logistics
  115. # [19:02] * Zakim notes agendum 1 added
  116. # [19:02] <chaals> agenda+ agenda bashing
  117. # [19:02] * Zakim notes agendum 2 added
  118. # [19:03] <chaals> Present+ Jan
  119. # [19:06] * Joins: plh (plehegar@public.cloak)
  120. # [19:06] * Joins: arronei (~arronei@public.cloak)
  121. # [19:06] <smaug> hi
  122. # [19:06] * smaug can hear
  123. # [19:06] <smaug> something
  124. # [19:06] <chaals> Present+ Smaug(remote)
  125. # [19:06] * Joins: wchen (~sid45@public.cloak)
  126. # [19:06] <plh> Present+ Plh
  127. # [19:06] * plh zakim, who is on the phone?
  128. # [19:06] * Zakim Present: Jan, Smaug(remote), Plh
  129. # [19:07] <smaug> chaals: I'll be listening in the background while doing random other stuff.
  130. # [19:07] <rniwa> smaug: can you hear us?
  131. # [19:07] <smaug> not right now
  132. # [19:07] <smaug> I did for awhile
  133. # [19:07] * chaals we muted
  134. # [19:07] <smaug> k
  135. # [19:07] <smaug> yes
  136. # [19:07] <plh> scribeNick: plh
  137. # [19:08] <plh> [introductions]
  138. # [19:08] <plh> Present+ Charles
  139. # [19:08] <plh> Present_ Hayato
  140. # [19:08] <plh> Present+ jan
  141. # [19:08] <plh> Present+ Ryosuke
  142. # [19:08] <chaals> Present+ Antti
  143. # [19:09] * Joins: wilsonpage (~wilsonpage@public.cloak)
  144. # [19:09] <chaals> Present+ Monica
  145. # [19:09] <chaals> Present+ Justin
  146. # [19:09] <plh> rrsagent, make logs public-visible
  147. # [19:09] <RRSAgent> I have made the request, plh
  148. # [19:10] * Joins: kochi2 (~Adium@public.cloak)
  149. # [19:10] * Joins: zcorpan (~zcorpan@public.cloak)
  150. # [19:10] * Quits: kochi2 (~Adium@public.cloak) ("Leaving.")
  151. # [19:11] * Quits: wilsonpage (~wilsonpage@public.cloak) ("My Mac has gone to sleep. ZZZzzz…")
  152. # [19:11] * Joins: kochi2 (~Adium@public.cloak)
  153. # [19:12] <kochi2> just joined on webex.
  154. # [19:12] <chaals> Present+ Kochi(Remote)
  155. # [19:12] <plh> Topic: agenda bashing
  156. # [19:12] * Joins: annevk (~sid614@public.cloak)
  157. # [19:12] <chaals> -> https://github.com/w3c/webcomponents/wiki/Custom-Elements:-Contentious-Bits Contentious bits: things for the agenda
  158. # [19:12] * annevk W3C IRC doesn't support TLS yet?
  159. # [19:13] <plh> Travis: looking at contentious bits, we should do: review of constructors, simple name properties, attribute change callback
  160. # [19:13] * plh it does...
  161. # [19:13] <annevk> plh: ah, what are the settings?
  162. # [19:13] * Joins: wilsonpage (~wilsonpage@public.cloak)
  163. # [19:13] <annevk> plh: you might want to update https://www.w3.org/Project/IRC/ then
  164. # [19:14] * plh hum... I'd need to figure out the proper setting
  165. # [19:14] <plh> Travis: [....]
  166. # [19:15] * Joins: justin (~justin@public.cloak)
  167. # [19:15] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
  168. # [19:16] <plh> dglazkov: we should start with least contentious
  169. # [19:16] <chaals> agenda+ lifecycle callback timing
  170. # [19:16] * Zakim notes agendum 3 added
  171. # [19:16] <chaals> zakim, take up item 3
  172. # [19:16] <Zakim> agendum 3. "lifecycle callback timing" taken up [from chaals]
  173. # [19:16] <plh> Travis: so is it documented yet when to fire a nano task?
  174. # [19:17] <plh> Anne: when IDL returns, but not documented yet
  175. # [19:17] <plh> q?
  176. # [19:17] * Zakim sees no one on the speaker queue
  177. # [19:17] <plh> dglazkov: there is a queue
  178. # [19:14] <plh> Anne: just before the method is called, there would be a nanotask
  179. # [19:15] <plh> Travis: we assume it's introduced when to invoke a method in WebIDL
  180. # [19:15] <plh> Travis: if a nano can queue more work that results in a microtask...
  181. # [19:15] * Joins: jan_miksovsky (~jan_miksovsky@public.cloak)
  182. # [19:16] <plh> Ryosuke: you have a stack of nanotask
  183. # [19:16] <plh> Travis: so sync but delayed after the operation...
  184. # [19:16] * wilsonpage is now known as wilsonpage-away
  185. # [19:16] * wilsonpage-away is now known as wilsonpage
  186. # [19:16] <annevk> s/just before the method is called/just before you return from the method call/
  187. # [19:17] <chaals> ACTION: chaals file issue on WebIDL
  188. # [19:17] * trackbot is creating a new ACTION.
  189. # [19:17] * RRSAgent records action 1
  190. # [19:17] <trackbot> Error creating an ACTION: could not connect to Tracker. Please mail <sysreq@w3.org> with details about what happened.
  191. # [19:17] <plh> [this is resolved]
  192. # [19:17] <chaals> s/issue on WebIDL/issue on WebIDL to get the nanotask flow documented
  193. # [19:17] <chaals> RESOLUTION: We're happy to do it like this
  194. # [19:18] <chaals> Topic: Symbol Name vs String name
  195. # [19:19] <plh> Travis: concern is: what if we move the logic of custom element and put it into mutation observers?
  196. # [19:19] <plh> ... so that you have one API for observing mutations
  197. # [19:19] <plh> ... attach/detach/reparenting should be addressed in mutation observers
  198. # [19:19] <plh> ... in addition to want nanotask timing
  199. # [19:20] <plh> Ryosuke: that would bring queing vs tasking
  200. # [19:20] <chaals> rrsagent, draft minutes
  201. # [19:20] <RRSAgent> I have made the request to generate http://www.w3.org/2016/01/25-webapps-minutes.html chaals
  202. # [19:20] <plh> .... one reason to design this way was that it was easy for mutation observer to step on each other
  203. # [19:20] <plh> ... if you modify something in a mutation observer, you have no idea of the ordering
  204. # [19:21] <plh> ... if we move the logic, we would reintroducing the problem
  205. # [19:21] <plh> Travis: I just want to move the API surface
  206. # [19:21] <plh> .... to make it general purpose
  207. # [19:21] <plh> ... I don't have to create a new API
  208. # [19:21] <chaals> Present- jan, Plh, Charles
  209. # [19:21] <plh> ... just have to take care of the constructor
  210. # [19:22] <plh> Ryosuke: make sense to me
  211. # [19:22] <plh> Travis: I'm saying we should punt on it, but would like to transition
  212. # [19:22] <smaug> one of the reasons for MutionObservers was performance, which is a lot better than with more sync (nanotask-like) MutationEvents.
  213. # [19:22] <plh> Anne: how would we do that?
  214. # [19:22] <smaug> (microtasks give the better performance)
  215. # [19:23] * Domenic_ is stuck in the lobby and sorry to be late...
  216. # [19:23] <plh> [break to bring Domenic]
  217. # [19:23] <annevk> See https://www.w3.org/Bugs/Public/show_bug.cgi?id=23250 Travis
  218. # [19:24] <chaals> Present+ DomenicD
  219. # [19:25] * Joins: monica (~monica@public.cloak)
  220. # [19:26] * Joins: jsbell (~jsbell@public.cloak)
  221. # [19:26] <plh> Ryosuke: some elements affect others only if they are in the document (bese, style)
  222. # [19:26] <Travis> s/saying we should punt/saying we should not punt
  223. # [19:26] <plh> Domenic: detached documents are so rare
  224. # [19:27] <chaals> s/bese/base
  225. # [19:27] <plh> dglazkov&Ryosuke: agreed
  226. # [19:28] <plh> dglazkov: I like the idea of a generic callback
  227. # [19:28] <chaals> s/so rare/so rare that yes, we can leave it as an edge case we don't solve
  228. # [19:28] <plh> Ryosuke: so, if we add the attribute filter, it might be ugly.
  229. # [19:29] <chaals> s/ugly/ugly to have two different was to follow attributes changing
  230. # [19:29] <plh> domenic: making sure they match it's fine, but it's important to have both. eg being notify when creating custom elements
  231. # [19:29] <plh> travis: you can always observe your own attributes, so damage is limited
  232. # [19:29] <chaals> s/always/only
  233. # [19:30] <plh> ryosuke: we have a bunch of other sync events, not sure if it matters
  234. # [19:30] <plh> ... with a microtask ending, you would batch those if lots of elements
  235. # [19:30] <chaals> zakim, who is on the phone?
  236. # [19:30] <Zakim> Present: Smaug(remote), Ryosuke, Antti, Monica, Justin, Kochi(Remote), DomenicD
  237. # [19:32] <plh> ryosuke: range functions will operate on custom elements. nanotask will fire at the end of the range operation
  238. # [19:32] <plh> anne: but that might not involve any IDL
  239. # [19:32] <plh> ... at least, it's not written down
  240. # [19:33] * chaals wonders who is on remote
  241. # [19:34] <plh> Resolved: generic callback need be written down, instead of detach/attach
  242. # [19:34] <rniwa> https://github.com/w3c/webcomponents/issues/362
  243. # [19:35] <plh> Ryosuke: when navigating an iframe, you would fire those callbacks
  244. # [19:36] <plh> Anne: except that script execution is stalled
  245. # [19:36] <plh> Domenic: if had a parent browsing context change callback could do the trick
  246. # [19:37] <plh> Anne: when do we have the more restrictive callback, ie when the doc change
  247. # [19:37] <chaals> s/when/why
  248. # [19:37] <plh> Domenic: very spammy, and not many use cases
  249. # [19:37] <chaals> s/why/when
  250. # [19:37] <chaals> s/when do we/why do we only
  251. # [19:37] <plh> Ryosuke: when you keep inserting substree, it would generate a lot of callbacks
  252. # [19:38] <plh> Anne: so, are shadow tree are in a composed document?
  253. # [19:38] <plh> s/are in/in/
  254. # [19:39] <plh> Ryosuke: ordering is important...
  255. # [19:39] <plh> Ryosuke: when getting a callback, should we have it before invoking callback for subcomponents?
  256. # [19:40] <chaals> i/Anne: why do we/Ryosuke: We don't want the author scripts to run when you navigate away from your iframe… which is notified by pageVisibility rather than attached and detached
  257. # [19:40] <plh> Domenic: use case points to the document
  258. # [19:40] <plh> Ryosuke: but it's important to figure the ordering
  259. # [19:40] * Joins: zcorpan (~zcorpan@public.cloak)
  260. # [19:40] <plh> Ryosuke: top-down order, your subcomponents might not be ready
  261. # [19:41] <plh> Ryosuke: take the layout component. you'll need the subcomponents
  262. # [19:41] <plh> Justin: should components assume they have their subcomponent or get updates
  263. # [19:42] <plh> ... for layout you want to respond as the children are updated
  264. # [19:42] <plh> Justin: we've seen cases when people want to know when children are ready, but it seems the wrong way
  265. # [19:43] <plh> Travis: if you're a tab layout, you'll need at least 2 children
  266. # [19:43] <plh> Justin: I used when you need to setup something up the tree
  267. # [19:43] <plh> Domenic: like when starting to listen to mouse events
  268. # [19:44] <plh> Domenic: bottom-up seem to encourage a bad style
  269. # [19:44] <plh> Justin: yes, I've seen it misused already
  270. # [19:44] <plh> ... I'm partial to encourage to listen to child changes rather than assuming the children are correct
  271. # [19:45] <plh> Domenic: we'll probably top-bottom for constructors so we should do the same
  272. # [19:45] <plh> Ryosuke: agreed
  273. # [19:45] <plh> Jan: some components want to know how they're styled
  274. # [19:45] <plh> ... when do I have style information?
  275. # [19:46] <plh> Ryosuke: sounds like horrible squared problem...
  276. # [19:46] <plh> dglazkov: we should discourage people doing so, but they'll keep doing it :)
  277. # [19:46] <plh> dglazkov: we need to keep looking for answer
  278. # [19:46] <chaals> s/horrible squared problem/it leads to a horrible n-squared algorithm
  279. # [19:46] <plh> Justin: I'd like a style observer
  280. # [19:47] <plh> Travis: combination of mutation observers and style attributes
  281. # [19:47] <plh> Anne: seems weird. there is a term called "in a document" that will return false ina shadow root tree
  282. # [19:47] <plh> ... for those, we have "in a composed document"
  283. # [19:48] <plh> Domenic: we need to change the author facing name or change the spec
  284. # [19:48] <plh> Hayato: "inserted into a document deeply"?
  285. # [19:48] <plh> ... we have to resolve the distribution anyway
  286. # [19:49] <plh> Jan: can we have a name that doesn't have to be precised?
  287. # [19:49] <plh> rrsagent, please generate a name
  288. # [19:49] <RRSAgent> I'm logging. I don't understand 'please generate a name', plh. Try /msg RRSAgent help
  289. # [19:49] <plh> [naming discussion]
  290. # [19:50] * Quits: wilsonpage (~wilsonpage@public.cloak) ("My Mac has gone to sleep. ZZZzzz…")
  291. # [19:52] <plh> [naming discussion...]
  292. # [19:52] * Travis insertedAndAttachedToADocumentDeeply
  293. # [19:52] * dglazkov sounds like plh is gently discouraging bikeshedding by regularly sending [naming discussion] into the notes
  294. # [19:52] <plh> Domenic: if you do document.contained, it won't return true in a deep/composed document
  295. # [19:52] <smaug> s/contained/contains/
  296. # [19:53] * chaals deepSixed
  297. # [19:53] <plh> Anne: inserted and removed are fine
  298. # [19:53] <plh> Justin: the fact that we have removed is an argument against a callback using remove
  299. # [19:54] <plh> Justin: node.remove will not always do a remove
  300. # [19:54] <plh> ... if you're a detached case
  301. # [19:54] <chaals> Resolution: We need to find a good colour^name
  302. # [19:54] <plh> Unresolved: someone to come up with a proper name
  303. # [19:55] <plh> [back to symbol names]
  304. # [19:55] <plh> Domenic: let's separate public API from subclass API, but agree it';s not ergonomic
  305. # [19:55] <chaals> Topic: Symbol or String
  306. # [19:56] <plh> Domenic: one design is to hide those on prototypes but it's disruptive
  307. # [19:57] <chaals> s/those on/those by putting them on another object not directly on
  308. # [19:57] <plh> Anne: problem with symbol things is extending
  309. # [19:57] <plh> Domenic: no two symbols are ever equal to each other
  310. # [19:58] <plh> ... with strings, we would be able to change the semantic as easily
  311. # [19:59] <plh> Domenic: there is a cultural opinion against encouraging subclasses, while we're encourage to do so at the moment
  312. # [19:59] <plh> Jan: we're running the risk of conflicts already
  313. # [20:00] * plh looks for a coin
  314. # [20:00] <plh> Domenic: you don't avoid very much by going to symbols
  315. # [20:01] <plh> ted: the day 2 day cost outweight the purity...
  316. # [20:01] <plh> Domenic: so we have to go back to callbacks on everything...
  317. # [20:01] <plh> [general agreement]
  318. # [20:02] <plh> Resolution: no change from current spec.
  319. # [20:08] * Quits: monica (~monica@public.cloak) (Ping timeout: 180 seconds)
  320. # [20:14] * Quits: jan_miksovsky (~jan_miksovsky@public.cloak) (Ping timeout: 180 seconds)
  321. # [20:18] <Travis> scribe: Travis
  322. # [20:18] * Joins: jan_miksovsky (~jan_miksovsky@public.cloak)
  323. # [20:18] <Travis> scribeNick: Travis
  324. # [20:18] <Travis> domenic: We may have exhausted the non-controversial stuff
  325. # [20:19] <Travis> ... callback timing
  326. # [20:19] <Travis> ... parser stops
  327. # [20:19] <Travis> ... fires attribute changed
  328. # [20:19] <Travis> ... children
  329. # [20:19] <Travis> ... then resumes
  330. # [20:19] <Travis> ... seems there's good cause to fire the callbacks as soon as possible.
  331. # [20:20] <Travis> ... will require some deep parser spec engineering :-(
  332. # [20:20] <smaug> even in case of innerHTML ?
  333. # [20:20] <Travis> anne: formalizing document.write? and applying to other elements?
  334. # [20:20] <Travis> rniwa: we should disallow document.write
  335. # [20:21] <esprehn> Not in the case of innerHTML. That allows you to observe the fragment inside the algorithm
  336. # [20:21] <Travis> ... there's a flag for that already.
  337. # [20:21] <Travis> anne: the other problem is dom mutations. If you remove the element, where does the parser resume?
  338. # [20:21] <Travis> Domenic_: we should just disallow document.write.
  339. # [20:22] <Travis> annevk: the parser already follows the stack
  340. # [20:22] * Quits: zcorpan (~zcorpan@public.cloak) (Client closed connection)
  341. # [20:22] <Travis> Domenic_: this is another level of complicated.
  342. # [20:22] <Travis> ... I'm looking for clear-cut places to disallow things.
  343. # [20:23] <Travis> rniwa: in a constructor, script element is created and sync-inserted into document, what then
  344. # [20:23] <Travis> Domenic_: scripts inserted from XHR are disllowed
  345. # [20:23] <Travis> annevk: because those docs have no browsing context.
  346. # [20:23] * Joins: monica (~monica@public.cloak)
  347. # [20:24] <Travis> annevk: with random scripts, you're just nesting a little
  348. # [20:24] * Joins: sicking (~sicking@public.cloak)
  349. # [20:25] <Travis> rniwa: document.open/write only cases of reentrancy?
  350. # [20:25] <Travis> Travis: parser can stop at any time...
  351. # [20:25] <Travis> annevk: all these concerns already apply to script element. We already have syncronicity.
  352. # [20:25] <Travis> Domenic_: I just disallowed in modules because they are 'bad'
  353. # [20:26] <Travis> annevk: Here it doesn't really buy us anything.
  354. # [20:26] <Travis> Domenic_: [describes the order of operations]
  355. # [20:26] <Travis> q?
  356. # [20:26] * Zakim sees no one on the speaker queue
  357. # [20:27] <Travis> smaug: even in places of innerHTML?
  358. # [20:27] <Travis> Domenic_: good point.
  359. # [20:27] <Travis> ... right now the fragment in innerHTML is a spec fiction. This feature would allow that to become observerable.
  360. # [20:27] <Travis> ... alternatives are to wait until nano-task timing.
  361. # [20:28] <Travis> annevk: with innerHTML, parser has to queue the nano-tasks. We then define when to fire these.
  362. # [20:28] <Travis> Domenic_: according to my new order, parser never queues nano-tasks.
  363. # [20:28] <Travis> annevk: Well,they can be syncronous...
  364. # [20:28] <Travis> ... in innerHTML case they get queued as well.
  365. # [20:29] <Travis> rniwa: inside of parser, it would be sync, but in innerHTML it would be nano-task. Is that what is being proposed?
  366. # [20:29] <Travis> Domenic_: well we have upgrades and parsing... we're saying innerHTML is an upgrade case.
  367. # [20:31] <Travis> rniwa: having the parser act two different ways is weird to me.
  368. # [20:31] <Travis> Domenic_: for authors, I could argue that innerHTML and parsing are understood differently.
  369. # [20:31] <Travis> rniwa: As an author now I have to worry about it?
  370. # [20:32] <Travis> Domenic_: The argument is that you code it as if there are no children.
  371. # [20:33] <Travis> Travis: for consistent world view, should we not fire attribute changed if they're already present at constructor time?
  372. # [20:34] <Travis> dglazkov: I can come to terms with innerHTML being treated as an upgrade case.
  373. # [20:35] * Joins: LJWatson (~LJWatson@public.cloak)
  374. # [20:35] <Travis> justin: I see danger that authors will set attributes (default) during parsing expecting to have the parser overwrite them...
  375. # [20:36] <Travis> Domenic_: Forcing innerHTML to have the upgrade world-view will change author expectations.
  376. # [20:36] <Travis> monica: we rely on default attributes (versus user attributes) for aria. Order is important for us.
  377. # [20:36] <Travis> ... we do this on attached.
  378. # [20:37] <Travis> annevk: for aria we should have an internal API. Then you can set defaults and have them be overwritten.
  379. # [20:37] <Travis> ... you'd have some internal slots for that.
  380. # [20:37] <Travis> ... you don't want to have the attributes be the cannonical state.
  381. # [20:38] <Travis> justin: are you referring to how the properties have the 'computed value' whereas the attribute has whatever state was set.
  382. # [20:38] <Travis> ... there are some cases where you do want to write an attribute for the purposes of styling...
  383. # [20:38] <Travis> dglazkov: are we getting close to resolving this?
  384. # [20:39] <Travis> Domenic_: I'm not really comfortable with saying that [it] happens synchronous. TAble for 20 mins, or decide?
  385. # [20:39] <Travis> rniwa: table it.
  386. # [20:39] <Travis> annevk: Folks always deferring to script, depending on upgrades...
  387. # [20:39] <Travis> Domenic_: I don't think the innerHTML case changes this.
  388. # [20:39] <Travis> Domenic_: OK. New topic.
  389. # [20:40] <Travis> ... registerElement or new API name?
  390. # [20:40] <Travis> dglazkov: new name!!!!!
  391. # [20:40] <chaals> RESOLUTION: use defineCustomElement - void…
  392. # [20:40] <justin> travis: talk slower
  393. # [20:40] <Travis> Domenic_: apple did "defineCustomElement"
  394. # [20:40] * Quits: LJWatson (~LJWatson@public.cloak) ("Page closed")
  395. # [20:41] <Travis> rniwa: the name is kinda long, but I like long names.
  396. # [20:41] <Travis> annevk: I'm happy bikeshedding... er with 'defineElement'
  397. # [20:42] * annevk wonders if plh found the TLS settings
  398. # [20:42] <Travis> jan_miksovsky: I like the similarities between defineElement and createElement... they look nice together.
  399. # [20:42] * plh will be back after lunch
  400. # [20:42] <chaals> RESOLUTION: No, actually defineElement seems a great idea
  401. # [20:43] <Travis> Domenic_: single class per element name?
  402. # [20:43] <Travis> rniwa: ins/del use the same interface.
  403. # [20:43] * plh Anne, asking around.
  404. # [20:43] <Travis> justin: Some folks want to be able to use "is" as a mixin
  405. # [20:43] <Travis> ... not only using single class def for multiple elements.
  406. # [20:44] * plh looking at my config, IU use irc.w3.org port 6697
  407. # [20:44] <Travis> justin: I want some sugar (a custom element definition) and apply to other elements in the document.
  408. # [20:45] * Quits: dfreedm (~sid7859@public.cloak) ("Updating details, brb")
  409. # [20:45] * chaals recalls that once W3C had special secure connections for w3c team, running through a different connection…
  410. # [20:45] <Travis> rniwa: If your module only defines the class, then you can leave it up to author's to define the names.
  411. # [20:45] * Quits: annevk (~sid614@public.cloak) ("Updating details, brb")
  412. # [20:45] * Joins: dfreedm (~sid7859@public.cloak)
  413. # [20:45] <Travis> rniwa: If no one objects to mutliple tag names per class...
  414. # [20:45] * Quits: plh (plehegar@public.cloak) ("Leaving")
  415. # [20:45] <esprehn> I object:)
  416. # [20:46] <esprehn> I think it's a bug in the platform that we didn't have class per tag name
  417. # [20:46] <Travis> ... then there is a problem with how the exotic object is created.
  418. # [20:46] <Travis> Domenic_: fixable if you pass tagname through super(tag_name).
  419. # [20:46] * Joins: annevk (~sid614@public.cloak)
  420. # [20:47] <chaals> [PLH steps out]
  421. # [20:47] <Travis> rniwa: Then you have to propogate the usage of tagname (both externally and internally to your class)
  422. # [20:47] <Travis> Domenic_: during parsing you encounter <x-p> how does the parser tell what to do in the class?
  423. # [20:47] <esprehn> Yeah that seems bad, tag name should be read from a static on the class
  424. # [20:48] <Travis> Domenic_: This constrains the first argument to custom element constructor to have the tag name.
  425. # [20:48] <Travis> rniwa: constructor can return whatever it wants!
  426. # [20:48] <Travis> ... we could allow this.
  427. # [20:48] <Travis> ... It would be a known issue.
  428. # [20:48] <Travis> Domenic_: what happens when constructor throws?
  429. # [20:48] <esprehn> static get tagName() { return "x-foo"; } defineElement tears off the getter just like it does for attached and friends
  430. # [20:49] <Travis> rniwa: When it throws, when in parsing, we probably need to create HTMLUnknownElement.
  431. # [20:49] <Travis> rniwa: It's OK for custom element constructor to return a text node. Then the parser tries to add a child to it... and .... kaboom!
  432. # [20:50] <Travis> annevk: I think you just need to create an HTMLUnknownElement in all these cases.
  433. # [20:50] <esprehn> Hmm... I think if you return something that is not an Element we should abort the process and leave it as an Unknown
  434. # [20:50] <esprehn> Yes
  435. # [20:50] <Travis> justin: back to elements with mutliple tag names... can't you solve this similarly to constructor-call trick.
  436. # [20:50] * chaals checks if esprehn's "yes" means yeah, that makes sense
  437. # [20:50] * chaals where that == what avk said
  438. # [20:50] <esprehn> Yeah, i agree with Anne
  439. # [20:50] <Travis> ... when you call into HTMLElement constructor it has some magic to know what the tag name will be.
  440. # [20:51] <Travis> Travis: So then this becomes implicit and not exposed to web code?
  441. # [20:51] <esprehn> Can it consult the parser state?
  442. # [20:51] <Travis> rniwa: You can call your super constructor multiple times... (via new ...)
  443. # [20:52] <Travis> justin: You have some global state. Showed Eliott, he said...
  444. # [20:52] <Domenic_> https://gist.github.com/domenic/c1566e755c9e14613aa1
  445. # [20:52] <Travis> [lost it]
  446. # [20:52] <esprehn> I think you can just ask the constructor table though
  447. # [20:52] * Quits: jan_miksovsky (~jan_miksovsky@public.cloak) ("Page closed")
  448. # [20:52] * Joins: jan_miksovsky (~jan_miksovsky@public.cloak)
  449. # [20:53] <Travis> Domenic_: [looking at link... hard problem... if a new happens before the super call]
  450. # [20:53] <Travis> justin: given new.target, other state, etc., you might be able to figure it out.
  451. # [20:53] * Joins: bicknellr (~bicknellr@public.cloak)
  452. # [20:53] <Travis> Domenic_: if you call new.target it will have the wrong target (to be sure)
  453. # [20:53] <Travis> ... we can expand a check.
  454. # [20:54] <Travis> justin: you have to check a stack to make sure you haven't re-entered yourself.
  455. # [20:54] <Travis> annevk: What's the problem (summary)?
  456. # [20:54] <esprehn> I need help from the lobby :)
  457. # [20:55] <Travis> rniwa: When super() is called, we need to construct the right element (whatever the parser's trying to create).
  458. # [20:55] <Travis> ... in upgrade, this is really important. The super() call needs to return the right object (you).
  459. # [20:55] * chaals sends help to esprehn
  460. # [20:56] <Travis> ... now when you make a new call to yourself, things get confused.
  461. # [20:56] <Travis> justin: I think you can solve this. With new.target + a stack.
  462. # [20:56] <Travis> rniwa: yes, you can, but ugggg.
  463. # [20:57] <Travis> ... Also, constructor could be inline.
  464. # [20:57] <chaals> [esprehn arrives]
  465. # [20:58] <Travis> rniwa: There is a point when you can detect this... after you return from the constructor. If during the constructor, you already called a constructor, then you could fail out (bail).
  466. # [20:59] <chaals> Present+ ESprehn
  467. # [20:59] * Joins: LJWatson (~LJWatson@public.cloak)
  468. # [20:59] <Travis> ... problem is that super() call is returning completely random object.
  469. # [20:59] <Travis> esprehn: In ES6, if constructor keeps returning random stuff.
  470. # [21:00] <Travis> Domenic_: super() is short for this = new super().
  471. # [21:00] <Travis> esprehn: new.target is the thing at the bottom of the stack.
  472. # [21:00] <Domenic_> https://gist.github.com/domenic/c1566e755c9e14613aa1#gistcomment-1679615
  473. # [21:00] <Travis> rniwa: what if you call you're own constructor (or another element).
  474. # [21:01] <Travis> Domenic_: Did this fix it?
  475. # [21:01] <Travis> rniwa: The inner call will work, but then it will throw.
  476. # [21:01] * Quits: trackbot (trackbot@public.cloak) (Client closed connection)
  477. # [21:02] <Travis> justin: combined with HTMLUnknownElement, this is what you will get.
  478. # [21:03] * Joins: trackbot (trackbot@public.cloak)
  479. # [21:04] <Travis> justin: You can crazy constructor stuff _after_ super. But if you do it before...
  480. # [21:04] <Travis> rniwa: you're just a bad person.
  481. # [21:04] <Travis> [all agree]
  482. # [21:05] <Travis> rniwa: [discovers the white-board]
  483. # [21:06] <Travis> rniwa: describes case with new element created in first line of a constructor.
  484. # [21:06] <Travis> ... then there's a super call...
  485. # [21:07] <Travis> ... conclusion: we have to disallow both before and after new creations in the constructor.
  486. # [21:07] <Travis> justin: without using a stack.
  487. # [21:07] <dglazkov> https://gist.github.com/dglazkov/72ae5223631c525ba6e7
  488. # [21:08] * Quits: LJWatson (~LJWatson@public.cloak) ("Page closed")
  489. # [21:08] <Travis> justin: we may need another global to manage the 'in UA construction'
  490. # [21:08] <Travis> rniwa: Seems desirable to create some kind of element...
  491. # [21:09] <Travis> justin: Well... maybe you could wait till attached[bikeshed]callback.
  492. # [21:09] <Travis> esprehn: can't we just change ES6 construction/creation?
  493. # [21:10] <Travis> esprehn: I think developers will revolt if we disallow creating new elements in the constructor.
  494. # [21:11] <Travis> annevk: input type password, like input type text/button. There's some precident.
  495. # [21:11] <Travis> rniwa: OK, so we can't throw.
  496. # [21:11] <Travis> ... in output we can check to see if the thing we thought would be created was created, and if not throw.
  497. # [21:12] <Travis> rniwa: Working backwards, reviewing the implications of this change...
  498. # [21:12] <Travis> esprehn: in upgrade case, what happens?
  499. # [21:13] <Travis> esprehn: If we swizzle your prototype and things break, then... what?
  500. # [21:13] <Travis> rniwa: Leave it.
  501. # [21:13] <Travis> Domenic_: and things are half-baked and broken.
  502. # [21:14] <Travis> esprehn: You'd queue an exception to fire up the stack (for onerror)
  503. # [21:15] <Travis> jan_miksovsky: We really want a constructor without a required parameter
  504. # [21:16] * Quits: sicking (~sicking@public.cloak) (sicking)
  505. # [21:16] <Travis> ... how would this problem be different if there was an argument to the constructor?
  506. # [21:16] <Travis> ... all these games to make sure we support a constructor without arguments?
  507. # [21:16] <Travis> Domenic_: no, this is more base than that.
  508. # [21:17] <Travis> [discussions and clarifications]
  509. # [21:17] * chaals wonders if we are ready for lunch…
  510. # [21:18] <Travis> Domenic_: someone who understands these implications better than me should write this up.
  511. # [21:18] <Travis> rniwa: I can do this.
  512. # [21:18] * Joins: marcosc (~marcosc@public.cloak)
  513. # [21:18] <Travis> chaals: break for lunch? yes.
  514. # [21:25] * Quits: marcosc (~marcosc@public.cloak) (Ping timeout: 180 seconds)
  515. # [21:30] * Quits: arronei (~arronei@public.cloak) (Ping timeout: 180 seconds)
  516. # [21:31] * Quits: jan_miksovsky (~jan_miksovsky@public.cloak) (Ping timeout: 180 seconds)
  517. # [21:34] * Quits: monica (~monica@public.cloak) (Ping timeout: 180 seconds)
  518. # [21:39] * Joins: LJWatson (~LJWatson@public.cloak)
  519. # [21:41] * Quits: chaals (~Adium@public.cloak) ("Leaving.")
  520. # [21:45] * Joins: monica (~monica@public.cloak)
  521. # [21:53] * Joins: sicking (~sicking@public.cloak)
  522. # [22:01] * Quits: LJWatson (~LJWatson@public.cloak) (Ping timeout: 180 seconds)
  523. # [22:05] * Joins: jan_miksovsky (~jan_miksovsky@public.cloak)
  524. # [22:07] * Joins: chaals (~Adium@public.cloak)
  525. # [22:07] <adrianba> rrsagent, make minutes
  526. # [22:07] <RRSAgent> I have made the request to generate http://www.w3.org/2016/01/25-webapps-minutes.html adrianba
  527. # [22:07] <adrianba> rrsagent, make logs public
  528. # [22:07] <RRSAgent> I have made the request, adrianba
  529. # [22:08] <chaals> ACTION: rniwa write up what the caller for custom element constructor and HTML element constructor should check
  530. # [22:08] * trackbot is creating a new ACTION.
  531. # [22:08] * RRSAgent records action 2
  532. # [22:08] <trackbot> Error creating an ACTION: could not connect to Tracker. Please mail <sysreq@w3.org> with details about what happened.
  533. # [22:09] * Joins: LJWatson (~LJWatson@public.cloak)
  534. # [22:09] * Joins: arronei (~arronei@public.cloak)
  535. # [22:12] <dglazkov> scribe: dglazkov
  536. # [22:13] <dglazkov> [discussion around timing of callbacks/constructors]
  537. # [22:13] <dglazkov> esprehn: the parser will be special and innerHTML and others will have a nanotask timing
  538. # [22:14] <dglazkov> rniwa: disagree. the problem is that this will be inconsistent
  539. # [22:14] <dglazkov> rniwa: compound operations, editing
  540. # [22:14] <dglazkov> esprehn: run all callbacks sync?
  541. # [22:14] <dglazkov> rniwa: just constructors
  542. # [22:15] <dglazkov> [discussion around where to run sizing code for custom element]
  543. # [22:16] <dglazkov> esprehn: defer all interesting work until it's time to run attach
  544. # [22:16] <dglazkov> rniwa: disagree, you can't just change my opinion by repeating the same thing
  545. # [22:17] <dglazkov> rniwa: I added EventQueueScope and we still sometimes run script during editing
  546. # [22:17] <dglazkov> esprehn: would like to avoid running script during editing, and if they do, treat them as a bug
  547. # [22:18] <dglazkov> domenic_: this is one of our "can not live with" issues
  548. # [22:19] <dglazkov> rniwa: in this case we can't reach the agreement today
  549. # [22:20] <dglazkov> esprehn: this has benefits, right? you have to make it work with both upgrade and non-upgrade, you have a better design
  550. # [22:20] <dglazkov> esprehn: [provides an analogical design decision]
  551. # [22:20] <dglazkov> esprehn: [ ... in android]
  552. # [22:22] <dglazkov> jan_miksovsky: asking clarifying question: am I hearing correctly that esprehn is suggesting I should defer important work until "attached" callback?
  553. # [22:22] <dglazkov> [clarifying discussion]
  554. # [22:22] <dglazkov> hober: probably good to distinguish the discussion between how we want people to write code and how they will actually write code
  555. # [22:23] <dglazkov> jan_miksovsky: may make sense if you change the stakes (throws in the case we don't want people to write code)
  556. # [22:23] <dglazkov> Domenic_: has been my opinion that this does not come up very often
  557. # [22:24] <dglazkov> Domenic_: devs will not see a lot of difference unless they do a lot of work
  558. # [22:25] <dglazkov> esprehn: complaints we see from devs: 1) finishedParsing callback for element; 2) attribute setting during constructor
  559. # [22:25] <dglazkov> annevk: part of the mismatch might be that Blink believes that they can defer everything that happens, and WebKit does not quite believe that.
  560. # [22:26] <dglazkov> Domenic_: Gecko delays some of the mutation events already
  561. # [22:26] <dglazkov> annevk: not all cases
  562. # [22:26] <dglazkov> jan_miksovsky:
  563. # [22:26] <dglazkov> jan_miksovsky: what's the reason for synchronous constructor?
  564. # [22:27] <dglazkov> rniwa: ideally, we want to do everything synchronously
  565. # [22:27] <dglazkov> rniwa: easiest ergonomics, consistent world state, do something -> happens
  566. # [22:28] <dglazkov> rniwa: in some cases it is okay, like attributeChanged
  567. # [22:28] * Joins: cdata (~cdata@public.cloak)
  568. # [22:28] <dglazkov> rniwa: not okay for the cases when the object is being created and constructor is not called
  569. # [22:29] <dglazkov> justin: but this is true for upgrades?
  570. # [22:29] <dglazkov> rniwa: right, this is why we don't like them
  571. # [22:29] <dglazkov> justin: since you already have to assume the upgrade case, why do you need to have sync constructor?
  572. # [22:30] <dglazkov> rniwa: for attributeChanged case, at least you can call a method on an object, but with async constructors you literally don't have the right proto/identity of an object
  573. # [22:31] <dglazkov> [discussion around when this would happen]
  574. # [22:31] <dglazkov> monica: this is why we don't do any important work in created, except for creating a stub shadow tree maybe
  575. # [22:32] * Joins: shepazu_ (schepers@public.cloak)
  576. # [22:32] <dglazkov> annevk: in HTML spec, most of the work happens when an element is inserted or removed. Creating element does nothing most of the time.
  577. # [22:33] <dglazkov> esprehn: another case, innerHTML fragment is spec fiction, and ideally we should not make it be observable
  578. # [22:33] <dglazkov> rniwa: interested in what Mozilla/Microsoft thinks, may help sway
  579. # [22:34] <dglazkov> annevk: if we can prove that we can move all events to nanotask timing. If we did, then we will be convinced. Otherwise, the sync argument stronger
  580. # [22:34] <dglazkov> Travis: nanotask looks like sync
  581. # [22:35] <dglazkov> annevk: no, there are some cases where you can see
  582. # [22:35] <dglazkov> annevk: from the spec perspective it would be better if we did everything deferred
  583. # [22:35] * Quits: shepazu (schepers@public.cloak) (Ping timeout: 180 seconds)
  584. # [22:35] <dglazkov> Travis: in spec, if you clone the tree, do you get 3 callbacks?
  585. # [22:36] <dglazkov> annevk: yes
  586. # [22:36] <dglazkov> Travis: so it's identical to microtask?
  587. # [22:36] <dglazkov> rniwa: no, because is a stack of queues
  588. # [22:36] * Joins: plh (plehegar@public.cloak)
  589. # [22:36] <dglazkov> [discussion]
  590. # [22:37] <dglazkov> esprehn: modeled after auto-release pools
  591. # [22:37] * plh wonders if rniwa or hober can come and fetch him in the lobby
  592. # [22:37] * hober brt
  593. # [22:37] <plh> me thanks!
  594. # [22:37] <dglazkov> jan_miksovsky: what's the right model to prevent component model? If I were to create a boilerplate, what's my general model?
  595. # [22:38] <dglazkov> jan_miksovsky: I don't think I can explain to someone when to do what. As a component author, I am a little confused.
  596. # [22:38] <chaals> [PLH returns]
  597. # [22:38] <dglazkov> jan_miksovsky: "here's a bunch of hooks, use them as you see fit". I would prefer a good boilerplate
  598. # [22:38] <dglazkov> annevk: there are many different models?
  599. # [22:39] <dglazkov> Domenic_: pretty decent consensus on what the boilerplate is
  600. # [22:39] * plh annevk, try port 994 for irc ssl access
  601. # [22:39] <dglazkov> annevk: in img element, you might want to start as early as possible
  602. # [22:39] <dglazkov> esprehn: that might be an anti-pattern
  603. # [22:40] <dglazkov> jan_miksovsky: ask for a tighter range of options
  604. # [22:40] <dglazkov> justin: not sure the sync/async changes this boilerplate
  605. # [22:41] <dglazkov> jan_miksovsky: if no useful work happens in constructor, would this be significant for this discussion?
  606. # [22:41] * Quits: annevk (~sid614@public.cloak) ("Updating details, brb")
  607. # [22:41] <dglazkov> Travis: no one here is saying we should take away the constructor callback, right?
  608. # [22:41] * Joins: annevk (~sid614@public.cloak)
  609. # [22:42] <dglazkov> esprehn: use constructor to set up shape of the object (and stop changing it if you want to run fast)
  610. # [22:42] <dglazkov> esprehn: might not be the same time quantum as the one to look at your attributes and children
  611. # [22:43] <dglazkov> Domenic_: [some proposal about attribute change listening, not clear]
  612. # [22:43] <dglazkov> justin: what's the relationship between attributeChangedCallback and insertedIntoDocumentCallback?
  613. # [22:44] <dglazkov> Domenic_: inserted is called after
  614. # [22:44] <dglazkov> justin: that's okay then
  615. # [22:44] * Quits: jan_miksovsky (~jan_miksovsky@public.cloak) (Ping timeout: 180 seconds)
  616. # [22:44] <dglazkov> justin: [explains how complex elements need a state machine]
  617. # [22:44] <dglazkov> Domenic_: upgrade should call attributeChangedCallback and cal insertedIntoDocumentCallback
  618. # [22:45] <dglazkov> Domenic_: and need to define an order
  619. # [22:45] <dglazkov> annevk, esprehn: call before
  620. # [22:45] <dglazkov> [discussion around order]
  621. # [22:46] <dglazkov> annevk: most good elements should work either way. Script src is different, but should work either way
  622. # [22:47] <rniwa> Here are events that fire synchronously in both WebKit/Blink: v
  623. # [22:47] <rniwa> https://jsfiddle.net/gxwdv5vv/2/
  624. # [22:48] <rniwa> https://jsfiddle.net/h3L8sz2w/2/
  625. # [22:48] * Joins: jan_miksovsky (~jan_miksovsky@public.cloak)
  626. # [22:49] <dglazkov> [looking at what does Edge do]
  627. # [22:49] <dglazkov> [and what Firefox does]
  628. # [22:50] <dglazkov> s/prevent component model/build components
  629. # [22:50] <dglazkov> s/prevent component model/build components/
  630. # [22:51] * Travis I think the third event listener was wrong...
  631. # [22:51] <dglazkov> rniwa: looks like only Blink/WebKit fire these sync
  632. # [22:51] <dglazkov> Travis: focus is sync
  633. # [22:52] <dglazkov> rniwa: so at least one event is fired sync
  634. # [22:52] <dglazkov> Travis: are we still stuck on constructor/nanotask discussion?
  635. # [22:53] <dglazkov> wchen: I don't think we can confidently say that we'll be robust against sync constructor
  636. # [22:53] <dglazkov> annevk: bz says it will be significant amount work
  637. # [22:54] <dglazkov> jan_miksovsky: so your preference would be to be async in non-constructor case
  638. # [22:54] <dglazkov> annevk: yes
  639. # [22:54] <dglazkov> annevk: we are already moving to nanotask timing somewhat
  640. # [22:54] <dglazkov> jan_miksovsky: so that adds up to proposal non-parser async constructor
  641. # [22:54] <dglazkov> jan_miksovsky: Travis?
  642. # [22:54] <dglazkov> Travis: parsing is fine
  643. # [22:55] <dglazkov> Travis: otherwise, thinking of our design, we have a consistent tree model, which matches all changes to the tree
  644. # [22:56] <dglazkov> Travis: [describes how Edge model works]
  645. # [22:56] <dglazkov> Travis: will need archeology
  646. # [22:56] <dglazkov> Domenic_: definitely will need archeology
  647. # [22:56] * Joins: wilsonpage (~wilsonpage@public.cloak)
  648. # [22:56] <dglazkov> wchen: seems like we need it anyway
  649. # [22:56] <dglazkov> rniwa: we should have a comprehensive list of methods/getters/setters
  650. # [22:56] <dglazkov> Travis: that could modify DOM
  651. # [22:57] <dglazkov> rniwa: I am sure browser will have extensions, etc.
  652. # [22:57] <Domenic_> https://code.google.com/p/chromium/codesearch#search/&q=CustomElementCallbacks&sq=package:chromium&type=cs
  653. # [22:57] <dglazkov> Travis: I think it's fine, we can build support for architecture
  654. # [22:57] <dglazkov> Travis: it's probably harder to nanotask than sync
  655. # [22:58] <dglazkov> annevk: you need to make sure it doesn't mess with your state
  656. # [22:58] <dglazkov> Travis: yes, but it's a smaller set
  657. # [22:58] <dglazkov> Travis: we can implement, and dev ergonomics will be better
  658. # [22:58] <dglazkov> Travis: these are all good reasons to go with nanotask
  659. # [22:59] <dglazkov> jan_miksovsky: I heard support from Mozilla and Edge
  660. # [22:59] <dglazkov> wchen: we already have something like this
  661. # [22:59] <dglazkov> rniwa: it seems that there's support, so there's no reason to argue
  662. # [23:00] <dglazkov> RESOLUTION: Nanotask timing for constructor
  663. # [23:00] <dglazkov> [break!]
  664. # [23:01] <monica> unbreak!
  665. # [23:01] <dglazkov> Domenic_: the only issue that was remaining was attribute filter for style attribute
  666. # [23:01] <dglazkov> dglazkov: does anyone not want it
  667. # [23:02] <dglazkov> chaals: put a proposal on IRC
  668. # [23:02] <smaug> ( hmm, ok, skype kicked me out. )
  669. # [23:03] <Domenic_> Attribute filter proposal: at defineElement time, we grab constructor.attributeFilter and convert it to an IDL sequence<DOMString> (i.e. iterate over it and ToString each element). If it's not present, defineElement throws.
  670. # [23:05] <smaug> Domenic_: so how do you get notifications for all the attributes?
  671. # [23:05] * Quits: chaals (~Adium@public.cloak) ("Leaving.")
  672. # [23:05] <smaug> null attributeFilter?
  673. # [23:08] <Domenic_> you can't, I think
  674. # [23:08] <Domenic_> no built-in elements have that
  675. # [23:08] <smaug> ah, true
  676. # [23:12] * Joins: chaals (~Adium@public.cloak)
  677. # [23:18] <rniwa> scribe: rniwa
  678. # [23:19] <rniwa> Domenic_: there is a question of style attribute spamming attributeChanged callbacks
  679. # [23:19] <rniwa> Domenic_: the proposal is to add an attribute filter which is a static property on class
  680. # [23:19] * Joins: marcosc (~marcosc@public.cloak)
  681. # [23:20] <rniwa> Domenic_: It's a mandatory property and it's statically bound at the time of `defineElement` call time
  682. # [23:20] <arronei> class XFoo { static get attributeFilter() { return [ "a", "b" ]; } }
  683. # [23:21] <rniwa> justin: why don't we not invoke attribute callbacks instead
  684. # [23:21] <rniwa> Domenic_: that sounds better
  685. # [23:21] <rniwa> justin: how about prefixing matching
  686. # [23:21] <rniwa> esprehn: some libraries requested. e.g. for on*.
  687. # [23:22] <smaug> (sounds like something not for v1)
  688. # [23:22] <smaug> (that prefix matching )
  689. # [23:22] <rniwa> chaals: the point of this filter is reducing the number of attributes being observed
  690. # [23:22] <chaals> [agree with smaug]
  691. # [23:23] <rniwa> justin: but how about an element that proxies attributes / properties?
  692. # [23:23] <rniwa> esprehn: if we were to add *, I wish it would exclude "style" so that you'd have to write "*+style" in order to receive callbacks for style attribute
  693. # [23:24] <rniwa> dglazkov: for v1, no * and no attribute change callback if it's missing.
  694. # [23:25] * Quits: marcosc (~marcosc@public.cloak) (Client closed connection)
  695. # [23:25] * Joins: marcosc (~marcosc@public.cloak)
  696. # [23:25] <rniwa> jan_miksovsky: there is already mutation observer that can observe all attributes
  697. # [23:26] <rniwa> jan_miksovsky: in MO, you can modify the list of attributes being observed dynamically
  698. # [23:27] <rniwa> Domenic_: for those who think reading the filter value once is weird, both the callback function and the attribute filter values are read once at `defineElement` time
  699. # [23:27] <chaals> rniwa: missing attributeFilter with no callbacks, mutation observer you always get callback… that's weird
  700. # [23:28] <rniwa> Domenic_: what if we renamed it to attributeChangeFilter.
  701. # [23:28] * Quits: kochi2 (~Adium@public.cloak) ("Leaving.")
  702. # [23:29] <rniwa> rniwa: my point was that semantics is different
  703. # [23:30] <rniwa> esprehn: in the case when attribute filter is present, the behavior is the same
  704. # [23:31] <rniwa> annevk: on a different topic, why do we keep the callback at the time of `defineElement`?
  705. # [23:31] <rniwa> annevk: if we had a subclass and called `super()`, it wouldn't be calling something different
  706. # [23:32] <chaals> rniwa: agree, it is weird if DOM has this stuff on the side.
  707. # [23:32] <chaals> esprehn: It's slow to do it like justin wants, working dynamically.
  708. # [23:33] <chaals> DD: You don't get at queue time you do it at call time.
  709. # [23:33] <chaals> esprehn: then we queue stuff we will drop on the floor
  710. # [23:33] <chaals> DD: What if you @@
  711. # [23:33] <chaals> Justin: kind of leaky
  712. # [23:33] <chaals> AvK: If you don't have attributeChange you don't have attributefilter
  713. # [23:33] <chaals> … subclasses will always be slow because when they invoke super thereis a get and call
  714. # [23:34] <chaals> esprehn: no it is at registration time.
  715. # [23:34] <chaals> … you have a bunch of static getters used at definition time
  716. # [23:35] <chaals> Avk: if you have a subclass that invokes super, the call will do a get on the super class, and you will then have the slow stuff to do
  717. # [23:35] <chaals> rniwa: You don't want to queue stuff.
  718. # [23:35] <chaals> justin: guessing for most elements a framework will be there always defining these callbacks
  719. # [23:35] <chaals> DD: I'm a bad person.
  720. # [23:36] <chaals> esprehn: You can write a super.attributeFilter …
  721. # [23:36] <rniwa> rniwa: if we had an attribute filter, you want to create a static internal structure for each custom element
  722. # [23:36] <rniwa> esprehn: ^
  723. # [23:36] <rniwa> esprehn: instead of having to keep querying to the engine.
  724. # [23:37] <rniwa> esprehn: for callbacks, we can still cache the existence of methods
  725. # [23:37] <rniwa> annevk: mostly to determine the shape?
  726. # [23:37] <rniwa> Domenic_: I also like the idea of not being able to change the behavior of class
  727. # [23:38] <rniwa> annevk: we can also do the shape check at runtime
  728. # [23:38] * Joins: kochi2 (~Adium@public.cloak)
  729. # [23:38] <rniwa> annevk: as to whether it has a callback or not
  730. # [23:38] <rniwa> justin: that might lead to even more confusion because author can change function and some changes take into effect and others don
  731. # [23:38] <rniwa> 't
  732. # [23:39] <rniwa> Domenic_: I don't think you should really mess with your class structure after calling `defineElement`
  733. # [23:39] * chaals me.addEventListener('youAreABadPerson'
  734. # [23:40] <rniwa> esprehn: the old design involved passing arguments around and chained it across super calls and that's how the server side stuff works
  735. # [23:40] <rniwa> esprehn: but nobody liked that design
  736. # [23:40] <rniwa> Domenic_: we should throw when an attribute callback is there but no attribute filter is set
  737. # [23:41] <rniwa> ACTION: Domenic_ will write a formal spec for attribute filter
  738. # [23:41] * trackbot is creating a new ACTION.
  739. # [23:41] * RRSAgent records action 3
  740. # [23:41] <trackbot> Error creating an ACTION: could not connect to Tracker. Please mail <sysreq@w3.org> with details about what happened.
  741. # [23:43] <chaals> Topic: is=
  742. # [23:43] <rniwa> hober: I think we kind of agreed not to do it.
  743. # [23:43] * chaals wonders about firing a youAreABadPerson event
  744. # [23:43] <rniwa> justin: Polymer uses "is" and perhaps this is an instance in which the views of Chrome / Polymer are different.
  745. # [23:44] <rniwa> monica: there is a lot of element for which parser treats differently
  746. # [23:44] <Domenic_> (Attribute filter writeup: https://github.com/w3c/webcomponents/issues/367)
  747. # [23:44] <rniwa> monica: for example, td has a special behavior in HTML parser
  748. # [23:45] <rniwa> monica: so unless you can extend an existing element, you can't have parser treat it differently
  749. # [23:45] <rniwa> justin: the most important use case for us is template element
  750. # [23:46] <rniwa> justin: this might be a case in which wrapping with another element might work but we've seen some customers experiencing performance problems due to the sheer number of nodes in the document
  751. # [23:46] <rniwa> Travis: what are those custom elements doing?
  752. # [23:46] <rniwa> Domenic_: what they are is that they want to have these callbacks be involved on elements that already exist
  753. # [23:47] <rniwa> Travis: this feels like the use case of end-of-nano task mutation observer
  754. # [23:47] <rniwa> esprehn: that's not right. they also want to be able to add methods or accessibility features
  755. # [23:47] <rniwa> Travis: and you probably don't want to write everything yourself
  756. # [23:48] <rniwa> Travis: so if you had HTMLAnchorElement defined and extended it, it's still an anchor element browser supports but you're supplementing it with callbacks and methods?
  757. # [23:49] <rniwa> Domenic_: it's important to separate functionality from the particular syntax of is=~.
  758. # [23:49] <rniwa> Domenic_: in theory, this should be also achievable via custom tag name but bz pointed out that this would require a large rewrite of browser engines that check tag names
  759. # [23:49] <rniwa> plh: what happens with selectors?
  760. # [23:49] <rniwa> Travis: I'm still not sold on why you can't wrap it
  761. # [23:50] <rniwa> Travis: is= is like creating a new object to an existing element
  762. # [23:51] <rniwa> esprehn: browser creates an exotic object which is anchor and then browser sticks the prototype into the instance
  763. # [23:51] <rniwa> esprehn: it's just like upgrades
  764. # [23:51] <rniwa> esprehn: the API currently doesn't have any checks for your custom element class not actually inheriting from a subclass of HTMLElement
  765. # [23:52] <rniwa> justin: it seems like there was a consensus to drop this feature in v1, but for Polymer, this goes a long way
  766. # [23:52] <rniwa> monica: templates and lists are big use cases
  767. # [23:52] <rniwa> hober: does component kitchen use it?
  768. # [23:52] <rniwa> jan_miksovsky: no
  769. # [23:53] <monica> (and inputs and buttons and forms, for use cases)
  770. # [23:53] <rniwa> dglazkov: if i were to remove myself from implementation, this whole this is about unveiling things that you can't get out of right now
  771. # [23:53] <rniwa> dglazkov: I want the same behavior parsing as "td" and want the same ARIA role, etc...
  772. # [23:54] <rniwa> annevk: it feels like is= is not the right solution for this
  773. # [23:54] <rniwa> Domenic_: but it would take a really time to resolve all of these problems property
  774. # [23:54] <rniwa> jan_miksovsky: we didn't find not being able to insert a random element inside option, select, etc... haven't been that much of pain
  775. # [23:55] <rniwa> jan_miksovsky: there has been a few cases like defining button without is= with the right style was hard
  776. # [23:55] <rniwa> jan_miksovsky: we have seen it's painful to proxy properties and methods when wrapping elements
  777. # [23:56] <rniwa> jan_miksovsky: syntax of is= seems a bit cranky saying this is one class but then it's another class
  778. # [23:56] <rniwa> Travis: you can't use these elements plainly with createElement
  779. # [23:56] <rniwa> justin: in terms of weirdness, we see tag names as roles
  780. # [23:57] <rniwa> justin: and is= is the actual implementation
  781. # [23:57] <rniwa> justin: there is also a consideration for third party tools that may expect standard HTML tag names
  782. # [23:57] <rniwa> LJWatson: feels like this might be a similar problem as ones encountered in epubs
  783. # [23:58] <rniwa> Domenic_: this isn't a must have but this seems to solve many issues like accessibility
  784. # [23:58] <rniwa> Domenic_: shadow DOM already has restrictions on which element it can attach
  785. # [23:58] <rniwa> chaals: restricting has a nice appeal
  786. # [23:59] <rniwa> annevk: what if you wanted to apply new behaviors on a subset of elements
  787. # [23:59] <rniwa> esprehn: parser also closes head when it hits an element other than one of the three elements
  788. # Session Close: Tue Jan 26 00:00:00 2016

Previous day, Next day

Think these logs are useful? Then please donate to show your gratitude (and keep them up, of course). Thanks! — Krijn