/irc-logs / w3c / #css / 2011-11-09 / end

Options:

  1. # Session Start: Wed Nov 09 00:00:00 2011
  2. # Session Ident: #css
  3. # [00:00] <fantasai> works for me
  4. # [00:00] <brianman> Tab?
  5. # [00:00] <TabAtkins> Not really happy about it, but my caring is *far* outdwarfed by my desire to resolve.
  6. # [00:00] <brianman> heh, 100% agree
  7. # [00:01] <brianman> So are we 3/4 resolved on everything but cover/contain, and leaving that to WG to decide?
  8. # [00:01] <brianman> [editorial issues aside]
  9. # [00:01] <brianman> s/WG/larger WG/g
  10. # [00:01] <TabAtkins> Yeah.
  11. # [00:02] <fantasai> ok, brian want to run a summary so I can edit this in?
  12. # [00:02] <brianman> I can try
  13. # [00:02] <stearns> brianman: you want *more* people in the CSS WG!?!?
  14. # [00:02] <fantasai> (live editing, of course)
  15. # [00:02] <brianman> hah @ stearns
  16. # [00:02] <brianman> Is a grammar enough to get you going Elika?
  17. # [00:02] <brianman> s/going/unblocked/g
  18. # [00:02] <fantasai> toss in whatever's relevant
  19. # [00:02] <fantasai> I'll edit, update, and you'll check
  20. # [00:02] <brianman> I'll fire off an email in 30min to an hour
  21. # [00:02] <brianman> and you can run from there?
  22. # [00:03] <fantasai> just write it here
  23. # [00:03] * Parts: stearns (anonymous@192.150.22.5)
  24. # [00:03] <fantasai> and then we can draft an email
  25. # [00:03] <fantasai> I just want to make sure I don't miss anything
  26. # [00:03] * Joins: stearns (anonymous@192.150.22.5)
  27. # [00:03] * fantasai looks at this grammar
  28. # [00:03] <fantasai> uhhhhhhh
  29. # [00:03] <fantasai> >________<;;;;;;;;
  30. # [00:04] <fantasai> I don't know how to incorporate that into the grammar without making it completely opaque
  31. # [00:05] <fantasai> Let me try a different approache
  32. # [00:05] <fantasai> s/e//
  33. # [00:05] <TabAtkins> fantasai: google doc for realtime editing collab?
  34. # [00:05] <fantasai> don't feel like importing it
  35. # [00:05] <fantasai> give me a minute
  36. # [00:06] <fantasai> we'll just cvs checkin a bunch
  37. # [00:06] <TabAtkins> I just meant grab the grammar, specifically.
  38. # [00:06] <fantasai> ah
  39. # [00:06] <TabAtkins> kk
  40. # [00:06] * Joins: danbeam (bitlbee@75.83.194.56)
  41. # [00:08] <danbeam> anybody know why combinators are not allowed within :not() pseudo-class in CSS 3 selectors? (only simple selector atm)
  42. # [00:08] <TabAtkins> danbeam: 'cause it's confusing (also harder to implement)
  43. # [00:08] <fantasai> danbeam: complexity
  44. # [00:08] <fantasai> danbeam: also, ambiguity
  45. # [00:08] <danbeam> fantasai: amiguity in what?
  46. # [00:08] <fantasai> hm
  47. # [00:09] * fantasai tries to remember what the issue was
  48. # [00:09] <fantasai> no, that was a different issue about parentheses :)
  49. # [00:09] <fantasai> nm then
  50. # [00:09] <danbeam> I understand the complexity and confusing arguments
  51. # [00:09] <fantasai> definitely complexity, though
  52. # [00:09] <fantasai> danbeam: L4 will allow compound selectors
  53. # [00:09] <danbeam> L4 = CSS 4?
  54. # [00:09] <fantasai> danbeam: Although still no combinators, unless some implementor comes and says "I did it and I want it in the spec now"
  55. # [00:09] <fantasai> danbeam: Selectors Level 4
  56. # [00:09] <danbeam> ah
  57. # [00:10] <fantasai> http://www.w3.org/TR/selectors4/
  58. # [00:10] <fantasai> brianman: Are we allowing 'ellipse to 50%'?
  59. # [00:11] <brianman> no
  60. # [00:11] <brianman> "ellipse to 50% 50%" yes
  61. # [00:11] <brianman> "circle to 50px" yes
  62. # [00:11] <brianman> "ellipse to 50px 75px" yes
  63. # [00:11] <TabAtkins> Agreed.
  64. # [00:11] <danbeam> fantasai: so if it was implemented in WebKit and was pretty much already accounted for in the grammar of L3, that might be a candidate for inclusion?
  65. # [00:12] <fantasai> alright, we'll put this all together and post to the WG for comment, see what they think
  66. # [00:12] <fantasai> danbeam: yes
  67. # [00:12] <fantasai> danbeam: Note that :not() and :matches() would be equivalent in this respect wrt complexity
  68. # [00:13] <fantasai> danbeam: :not() just negates :matches()
  69. # [00:13] <fantasai> danbeam: The definition would remain :matches() is an element that matches the selector in its argument
  70. # [00:13] <fantasai> danbeam: and :not() is an element that does not match the selector in its argument
  71. # [00:13] <danbeam> fantasai: cool
  72. # [00:13] <fantasai> danbeam: the grammar on L3 is irrelevant
  73. # [00:13] <fantasai> danbeam: It's mainly the implementation complexity that's the issue here
  74. # [00:14] <danbeam> damn, :)
  75. # [00:14] <danbeam> it's already allowed in the BNF
  76. # [00:14] * fantasai suspects that's a bug in the BNF :)
  77. # [00:14] <danbeam> could be
  78. # [00:14] <fantasai> consider
  79. # [00:15] * Joins: gilles (gilles@144.189.101.1)
  80. # [00:15] <danbeam> FUNCTION -> IDENT '(' expr -> term [ operator term ]* -> ','
  81. # [00:15] <fantasai> section h1:matches(div *)
  82. # [00:15] <fantasai> it means an h1 that has a section ancestor and also has a div ancestor
  83. # [00:15] <fantasai> could be <div><section><h1/></section></div>
  84. # [00:15] <fantasai> or <section><div><h1/></div></section>
  85. # [00:15] <fantasai> you have this branching issue
  86. # [00:15] <danbeam> circular, yeah
  87. # [00:15] <fantasai> in selectors currently, you only walk up the ancestor chain once
  88. # [00:16] <fantasai> this will get even more complicated once we have the ability to choose the subject of the selector
  89. # [00:16] <fantasai> that's a more important use case, and when you combine it with :matches() and :not() it gets pretty complex
  90. # [00:17] <danbeam> "the ability to choose the subject of the selector" -> can you give an example for the dense like myself, :)?
  91. # [00:18] <fantasai> iwantthis(:link) img { text-decoration: none; }
  92. # [00:18] <fantasai> :link img selects the img descendant of a link
  93. # [00:18] <fantasai> if you want the :link ancestor of an img, you need something different
  94. # [00:18] <fantasai> still debating what exactly :) but something different
  95. # [00:18] * Quits: anne (annevk@72.14.229.87) (Quit: anne)
  96. # [00:19] <danbeam> OK, cool, was wondering when this ability was going to come around
  97. # [00:19] <danbeam> often wondered why you can't traverse both ways in the ancestor tree, like you said
  98. # [00:19] <fantasai> performance
  99. # [00:20] <danbeam> (if I'm understanding correctly that's what's being added)
  100. # [00:20] <fantasai> yeah, we're adding it to the spec.. remains to be seen if anyone implements it
  101. # [00:20] <danbeam> yeah, well, in an ideal world performance doesn't exist and we add features based on wants and desires, haha
  102. # [00:20] <danbeam> cool, cool
  103. # [00:20] <fantasai> selector matching in layout engines operates differently from the way it does when you write it out in JS
  104. # [00:20] <fantasai> because we're solving a different problem
  105. # [00:21] <danbeam> when you write it out in JS = .qS or .qSA?
  106. # [00:21] <fantasai> in JS you have a tree, and you're trying to find an element in it, usually
  107. # [00:21] <fantasai> in layout engine, you have an element, and you want to see which of this list of selectors matches this element
  108. # [00:22] <TabAtkins> fantasai: On that note, I think we'll probably need a "Selectors for Batch Processors" draft, since there are a couple of things that are too expensive for normal selectors but fine in qSA.
  109. # [00:22] <fantasai> TabAtkins: we should just profile Selectors
  110. # [00:22] <fantasai> no need for a separate draft
  111. # [00:22] <TabAtkins> Yeah, same thing.
  112. # [00:23] * Joins: Mike5_ (Mike5@mcclure.w3.org)
  113. # [00:27] <danbeam> fantasai: thanks for the explanation
  114. # [00:27] <fantasai> np
  115. # [00:27] <fantasai> danbeam: We've wanted the ability to walk up and down the ancestor line since the early days of CSS3
  116. # [00:27] <fantasai> danbeam: It was in some early drafts of Selectors L3
  117. # [00:27] <danbeam> yes, I can imagine
  118. # [00:28] <danbeam> ah, cool, didn't know that
  119. # [00:28] * Quits: Mike5 (Mike5@mcclure.w3.org) (Ping timeout)
  120. # [00:28] * Mike5_ is now known as Mike5
  121. # [00:28] <fantasai> danbeam: It's really just the implementation difficulty that's preventing it from being part of Selectors
  122. # [00:28] <danbeam> fantasai: Gotcha.
  123. # [00:28] <fantasai> TabAtkins, brianman: Reload and let me know what needs fixing
  124. # [00:29] <fantasai> TabAtkins, brianman: I didn't add it to the grammar per se, but I split it out into separate constructs in a way that I hope is clear enough
  125. # [00:30] <danbeam> fantasai: I will say that it must be log(N) cheap to walk up the ancestor tree compared to other selectors (N being the average number of children per node), so hopefully it won't be without a [performant] implentation for that much longer, :).
  126. # [00:31] <danbeam> but maybe I misunderstand
  127. # [00:31] <fantasai> danbeam: walking up the ancestor tree is easy, that's what we do right now
  128. # [00:31] <fantasai> danbeam: it's walking down the ancestor tree that's hard
  129. # [00:31] <fantasai> danbeam: and handling the matching/non-matching state over the course of dynamic changes is even harder
  130. # [00:31] * nimbupani is now known as divya
  131. # [00:31] <fantasai> danbeam: consider if I said 'iwantthis(ul) .foo'
  132. # [00:32] <fantasai> danbeam: selector matching takes an element and asks, does it match this selector?
  133. # [00:32] <fantasai> danbeam: if ul has 200 children, that'll take 200 checks
  134. # [00:32] <fantasai> danbeam: on the other hand 'ul .foo' is easy to match
  135. # [00:33] <fantasai> danbeam: I check first if I am .foo, and then walk up my ancestor chain (usually not more than 10 elements) to find if there's a ul
  136. # [00:33] <danbeam> I thought selectors were matched from right -> left ?
  137. # [00:33] <fantasai> nope
  138. # [00:33] <fantasai> that's why I said it's different in layout engines :)
  139. # [00:33] <danbeam> ah, some silly presenter told me that once
  140. # [00:33] <fantasai> it might be how JS frameworks implement it
  141. # [00:33] <divya> it was actually dbaron who mentioned it in a talk
  142. # [00:33] <divya> or so i understood
  143. # [00:33] <danbeam> and Nicole Sullivan
  144. # [00:33] <danbeam> (aka @stubbornella)
  145. # [00:34] <TabAtkins> Um, fantasai, you may have read wrong.
  146. # [00:34] <TabAtkins> Selectors *are* matched from right to left.
  147. # [00:34] <danbeam> fantasai: they weren't talking about Sizzle
  148. # [00:34] <fantasai> TabAtkins: yeah, you're right
  149. # [00:34] <TabAtkins> But in the case of the subject selector, things get complicated.
  150. # [00:34] <danbeam> fantasai: or anything like that
  151. # [00:34] <fantasai> sory, got that backwards
  152. # [00:34] <fantasai> right-> left
  153. # [00:34] <divya> :)
  154. # [00:34] <fantasai> you start with .foo, and then find ul
  155. # [00:34] <fantasai> but currently, the rightmost is the subject
  156. # [00:35] <TabAtkins> fantasai: That grammar + prose works for me.
  157. # [00:35] <danbeam> yeah, so, findthis(ul) would be, 1) get all the ULs, then match some FUNCTION
  158. # [00:35] <danbeam> ?
  159. # [00:35] <fantasai> no, you don't get all the ULs
  160. # [00:35] <fantasai> for selector matching you (roughly speaking) walk the entire tree element by element
  161. # [00:35] <fantasai> and match each node against a list of selectors
  162. # [00:36] <fantasai> so you have an element, and then you try to figure out if it matches the selector
  163. # [00:36] <fantasai> in JS you generally have a selector, and then walk the tree trying to find what it matches
  164. # [00:37] <fantasai> TabAtkins: problem -- since we default to ellipse, a single <length> will not be valid...
  165. # [00:38] <TabAtkins> fantasai: Yes?
  166. # [00:38] <fantasai> radial-gradient(to 5em, red, blue) should work
  167. # [00:38] <brianman> mail sent. looky looky
  168. # [00:38] <brianman> :)
  169. # [00:38] <TabAtkins> fantasai: Just committed a formatting fixup.
  170. # [00:38] * fantasai hopes it doesn't begin "We decided the following"...
  171. # [00:40] <TabAtkins> fantasai: We can switch the default shape based on the to argument, I suppose.
  172. # [00:42] <TabAtkins> "If the <shape> is omitted it defaults to 'ellipse', unless the <extent> is provided as a single <length>, in which case it default to 'circle'."?
  173. # [00:43] <fantasai> hang on
  174. # [00:44] * fantasai tweaks wording
  175. # [00:44] * Quits: miketaylr (miketaylr@24.42.93.245) (Quit: miketaylr)
  176. # [00:48] <fantasai> How about
  177. # [00:48] <fantasai> explicitly as:
  178. # [00:48] <fantasai> <length> Gives the radius of the circle explicitly. Negative values are not allowed.
  179. # [00:48] <fantasai> If the ending shape is declared as an ‘ellipse’ or is left unspecified, <extent> may instead be given explicitly as:
  180. # [00:48] <fantasai> [<length> | <percentage>]{2} Gives the size of the ellipse explicitly. The first value...
  181. # [00:48] <fantasai> uh
  182. # [00:48] <fantasai> that didn't paste correctly
  183. # [00:48] <fantasai> If the ending shape is declared as a ‘circle’ or is left unspecified, the <extent> may be given explicitly as:
  184. # [00:48] <fantasai> <length> Gives the radius of the circle explicitly. Negative values are not allowed.
  185. # [00:48] <fantasai> If the ending shape is declared as an ‘ellipse’ or is left unspecified, <extent> may instead be given explicitly as:
  186. # [00:48] <fantasai> [<length> | <percentage>]{2} Gives the size of the ellipse explicitly. The first value
  187. # [00:49] <fantasai> Alternatively s/unspecified/implicit/
  188. # [00:49] <TabAtkins> s/unspecified/omitted/
  189. # [00:49] <fantasai> ahhhh
  190. # [00:49] <fantasai> much better :)
  191. # [00:49] <fantasai> ok, changed
  192. # [00:49] <fantasai> check in?
  193. # [00:49] <TabAtkins> do it
  194. # [00:49] * Joins: dcosta (dcosta@187.31.77.7)
  195. # [00:52] <fantasai> checked in
  196. # [00:54] <TabAtkins> Just checked in a change to remove the now-incorrect line about the shape default to 'ellipse'.
  197. # [00:55] <fantasai> no, we still need that
  198. # [00:55] <fantasai> for the keywords
  199. # [00:55] <fantasai> there needs to be an explicit default
  200. # [00:56] <TabAtkins> Oh, you're right.
  201. # [00:56] <TabAtkins> Reverting!
  202. # [00:57] <TabAtkins> done
  203. # [00:57] <fantasai> k
  204. # [00:58] <fantasai> anything else
  205. # [00:58] <fantasai> ?
  206. # [00:59] <TabAtkins> Reviewing...
  207. # [01:00] * Quits: paul_irish (paul_irish@216.239.45.4) (Client exited)
  208. # [01:00] <TabAtkins> Ah, accidentally left the old intro line for 2-length extents. Removing now.
  209. # [01:00] * Joins: miketaylr (miketaylr@24.42.93.245)
  210. # [01:01] <fantasai> ....
  211. # [01:02] * Quits: miketaylr (miketaylr@24.42.93.245) (Quit: miketaylr)
  212. # [01:03] <brianman> Catching upon IRC, wasn't watching...
  213. # [01:03] <fantasai> Tab, I'm checking in now
  214. # [01:04] <brianman> K, skimmed
  215. # [01:04] <brianman> Anything I need to know (changes?)?
  216. # [01:04] <fantasai> brianman: reload and review?
  217. # [01:04] <TabAtkins> Just a clarification that it's valid to say "r-g(to 50px, red, blue)"
  218. # [01:05] <brianman> reload's not doing much
  219. # [01:05] <brianman> I'll try looking at the CVS versioned one
  220. # [01:05] <fantasai> shift+reload?
  221. # [01:05] <brianman> ctrl, not shift...didn't help\
  222. # [01:05] <TabAtkins> I'm gonna strip out the explicit grammar from repeating gradients and just say that it's identical to l-g and r-g except for the function name.
  223. # [01:07] <brianman> ok, so 192 doesn't match mine either
  224. # [01:07] <brianman> @confused
  225. # [01:07] <brianman> I thought our compromise said we will have the grammar detail the ellipse/circle explicit concerns.
  226. # [01:08] <brianman> rather than the prose
  227. # [01:08] <brianman> Did that compromise get tossed?
  228. # [01:08] <fantasai> As I mentioned above, I tried to do that, and realized it made the grammar really unreadable.
  229. # [01:08] <brianman> I disagree.
  230. # [01:08] <TabAtkins> Allowing for omitting 'circle' in the one-length case would be *really* verbose.
  231. # [01:08] <TabAtkins> Like, 4-clause verbose.
  232. # [01:09] <fantasai> brianman: So what I did was to break up <extent>'s definition by type
  233. # [01:09] <brianman> Ok, so we need to revisit this then.
  234. # [01:09] <brianman> I don't understand that assertion, Tab.
  235. # [01:09] <fantasai> brianman: which makes it more explicit
  236. # [01:09] <fantasai> brianman: even though it's not quite in the grammar
  237. # [01:09] <fantasai> brianman: it's not done entirely by prose sentences, but by breaking up <extent> via if clauses
  238. # [01:09] <brianman> What was wrong with my emailed grammar?
  239. # [01:10] <brianman> All I see in email is "I changed it" with no clarification or explanation.
  240. # [01:10] <fantasai> the explanation was that the full grammar makes me dizzy
  241. # [01:10] <TabAtkins> [ [ <shape> , ] |
  242. # [01:10] <TabAtkins> [ <shape>? [ at <position> || to <implicit-extent> ] , ] |
  243. # [01:10] <TabAtkins> [ ellipse? [ at <position> || to [<length> | <percentage>]{2} ] , ] |
  244. # [01:10] <TabAtkins> [ circle? [ at <position> || to <length> ] , ]
  245. # [01:10] <TabAtkins> ]?
  246. # [01:11] <brianman> My version didn't have <shape> but regardless...
  247. # [01:11] * Quits: plinss_ (plinss@192.6.114.30) (Quit: plinss_)
  248. # [01:11] <brianman> So what are the concerns with that grammar?
  249. # [01:11] <TabAtkins> It's 4 clauses! With only tiny differences between each!
  250. # [01:12] <brianman> not tiny
  251. # [01:12] <fantasai> we can include the full grammar *also* but I'd rather not start with it at the top, more like an appendix...
  252. # [01:12] <brianman> They are EXACTLY what we're trying to call out as important.
  253. # [01:12] * Joins: tantek (tantek@159.63.23.38)
  254. # [01:12] <TabAtkins> brianman: Nod to fantasai - we can include the full grammar, but the current grammar is *nearly* readable, and the prose is explicit and easy to understand.
  255. # [01:13] * fantasai wishes we could get rid of the 2-clause and just have one... stupid comma
  256. # [01:13] <TabAtkins> fantasai: We need an ARGSEP token!
  257. # [01:13] <fantasai> um, how would that help exactly?
  258. # [01:13] * fantasai doesn't seen how defining ARGSEP = "," would make the grammar more readable
  259. # [01:13] <TabAtkins> It represents a comma iff both of its arguments are present. Otherwise, it's omitted.
  260. # [01:13] <fantasai> ...
  261. # [01:14] <brianman> Pull the comma outside one set of ]
  262. # [01:14] <brianman> ,]?
  263. # [01:14] <brianman> and then simplify
  264. # [01:14] <TabAtkins> Well, that wouldn't actually help here.
  265. # [01:14] <fantasai> right
  266. # [01:14] <tantek> FYI: http://www.w3.org/wiki/TPAC2011/feedback
  267. # [01:15] <TabAtkins> You need to express the fact that the comma is only present if at least one of the clauses is present.
  268. # [01:15] <brianman> 192 doesn't allow this: radial-gradient(to 5px, red, blue)
  269. # [01:16] <TabAtkins> It should...
  270. # [01:16] <brianman> because "If the <shape> is omitted it defaults to ‘ellipse’. "
  271. # [01:16] <brianman> My grammar allowed it
  272. # [01:16] * fantasai looks at what 192 is
  273. # [01:16] <TabAtkins> fantasai: It's the latest.
  274. # [01:17] <fantasai> brianman: read further
  275. # [01:17] <brianman> repeat recommendation: "both dimensions" should be "each dimension"
  276. # [01:17] <TabAtkins> brianman: The prose specially calls out the case where the keyword is omitted in allowing the 1- and 2-length forms.
  277. # [01:17] <TabAtkins> brianman: Ah yeah, meant to fix that.
  278. # [01:17] <brianman> (in closest-side)
  279. # [01:18] <brianman> "If the <shape> is omitted it defaults to ‘ellipse’." implies that "r-g(to 5px, red, blue" is an ellipse
  280. # [01:23] <brianman> Also a question... Does circle/ellipse have any value for non-keyword extent cases at all? Or is it just in the way?
  281. # [01:23] <TabAtkins> In the way, at least for now.
  282. # [01:23] <TabAtkins> Recall that the old syntax let you specify *either* shape+extent or explicit lengths.
  283. # [01:23] <brianman> how about...
  284. # [01:23] <fantasai> we might add 'box' later
  285. # [01:23] * Quits: gilles (gilles@144.189.101.1) (Quit: gilles)
  286. # [01:23] <fantasai> (which is different from a box gradient)
  287. # [01:23] <fantasai> maybe it'd be rectangle then :)
  288. # [01:24] <brianman> radial-gradient( [at <position> || [to <extent> <shape>?],], <color-stop> [, <color-stop>]+ )
  289. # [01:24] <brianman> ^ 1 clause
  290. # [01:24] <brianman> actually bury the <shape> inside the <extent>
  291. # [01:24] <brianman> radial-gradient( [at <position> || [to <extent>],], <color-stop> [, <color-stop>]+ )
  292. # [01:25] <TabAtkins> Though that's closer to my older syntax, I think it's less readable.
  293. # [01:25] <brianman> <extent> = ... <shape>?
  294. # [01:25] * Quits: drublic (drublic@77.2.136.225) (Client exited)
  295. # [01:25] <brianman> for the implicit
  296. # [01:25] <brianman> and no <shape> for the explicit
  297. # [01:25] * fantasai would prefer not to change that now
  298. # [01:25] <fantasai> not even convinced it's better
  299. # [01:25] <brianman> Dramatically simplifies the grammar, and avoids the circle/ellipse noise with lengths
  300. # [01:25] <fantasai> we don't have to force authors to be concise
  301. # [01:26] <brianman> the issue is that (relative to WD) we've attached circle/ellipse to explicit which is more harm than good
  302. # [01:26] <brianman> this would solve that
  303. # [01:26] <TabAtkins> It's not really any harm.
  304. # [01:26] <brianman> "closest-side circle" and "closest-side ellipse" would appear that way and make more sense anyway
  305. # [01:26] <brianman> it reinforces that the shape keywords are pointless and distracting for the explicit cass
  306. # [01:27] <brianman> cases*
  307. # [01:27] <brianman> Well if you stick with what you have, you still have the defaults problem I mentioned above.
  308. # [01:28] <brianman> "to 5px" is invalid because it's only the circle syntax allows it, but the omission means it's ellipse not circle
  309. # [01:28] <brianman> thus circle is required ("circle to 5px") for the 1 length case
  310. # [01:28] <fantasai> brianman, 'to <length>' is explicitly allowed when the keyword is omitted
  311. # [01:28] <fantasai> s/keyword/shape keyword/
  312. # [01:29] <brianman> The "default" and the "<length>" prose are in conflict.
  313. # [01:29] <brianman> Find a way to resolve that.
  314. # [01:29] <brianman> More evidence that a grammar is better than prose.
  315. # [01:30] <brianman> And I renew my concern that if we're going to allow 1 length it needs to be in the grammar. That's what we agreed upon.
  316. # [01:30] <TabAtkins> Again, it makes the grammar *impossible* to read for anyone but us grammar wonks.
  317. # [01:31] <brianman> Split the 4 lines into subtokens if you like then.
  318. # [01:31] <TabAtkins> It's already stupidly complex because of the silly comma.
  319. # [01:31] <brianman> And I disagree.
  320. # [01:31] <brianman> I solved the comma problem above and you rejected it.
  321. # [01:31] <TabAtkins> No, you didn't solve it.
  322. # [01:31] <brianman> read it again
  323. # [01:31] <TabAtkins> Your solution was incorrect.
  324. # [01:32] <brianman> radial-gradient( [at <position> || [to <extent> <shape>?],]? <color-stop> [, <color-stop>]+ )
  325. # [01:32] <TabAtkins> Oh, I thought you were still referring to your suggestion to pull the comma out one level and simplify.
  326. # [01:33] <brianman> ^ that was A
  327. # [01:33] <brianman> B is...
  328. # [01:33] <brianman> radial-gradient( [at <position> || [to <extent>],]? <color-stop> [, <color-stop>]+ )
  329. # [01:33] <brianman> With <extent> expressing when <shape> is allowed.
  330. # [01:33] <TabAtkins> No, I think the grammar we decided on before, with <shape> pulled out at the beginning, is the best.
  331. # [01:34] <brianman> Well then you have to accept the comma. That's required.
  332. # [01:34] <brianman> And you have to fix the prose-on-prose conflict.
  333. # [01:35] <TabAtkins> I know we ahve to accept the comma. The grammar that produces is just silly, is all.
  334. # [01:35] <TabAtkins> (It was silly in the old syntax, too.)
  335. # [01:36] <brianman> 1. If the ending shape is declared as ‘circle’ or is omitted, <extent> may be given explicitly as:
  336. # [01:36] <brianman> <length>
  337. # [01:36] <brianman> 2. If the <shape> is omitted it defaults to ‘ellipse’.
  338. # [01:36] <brianman> Combined this means you are defining a 1 parameter ellipse -- which we said we didn't want to allow.
  339. # [01:36] <brianman> How are you NOT concerned by this?
  340. # [01:37] <TabAtkins> Because you're not really allowing a 1-param ellipse. ^_^
  341. # [01:37] <brianman> Yes, you are.
  342. # [01:37] <brianman> Shape is omitted, and thus it's an ellipse.
  343. # [01:37] <TabAtkins> 'ellipse to 5px' is still illegal.
  344. # [01:37] <brianman> Only half of ...
  345. # [01:37] <brianman> 'ellipse? to 5px' is illegal
  346. # [01:38] <TabAtkins> Yes?
  347. # [01:38] <brianman> Let me try again.
  348. # [01:38] <brianman> 1. We resolved to disallow 1param ellipse.
  349. # [01:38] <TabAtkins> How about this. Kill the "if shape is omitted" line.
  350. # [01:38] <brianman> the "or is omitted"?
  351. # [01:38] <brianman> or the defaults tesxt
  352. # [01:38] <brianman> text*
  353. # [01:38] <TabAtkins> Add "or is omitted" to the keyword definitions.
  354. # [01:38] <fantasai> reload
  355. # [01:39] <fantasai> just, reload
  356. # [01:39] <TabAtkins> hehe
  357. # [01:39] <brianman> A. "If the <shape> is omitted the ending shape defaults to an ellipse."
  358. # [01:40] <brianman> B. "If <shape> is specified as ‘circle’ or is omitted, <extent> may be given explicitly as:
  359. # [01:40] <brianman> <length>"
  360. # [01:40] <brianman> still conflicts
  361. # [01:40] <fantasai> No it doesn't
  362. # [01:40] <fantasai> <shape> doesn't default to 'ellipse'
  363. # [01:40] <fantasai> "ending shape" defaults to an ellipse
  364. # [01:40] <brianman> How does that help
  365. # [01:40] <fantasai> <shape> still remains omitted
  366. # [01:40] <fantasai> and thus the clause applies
  367. # [01:41] <TabAtkins> Reload.
  368. # [01:41] <TabAtkins> I applied my above suggestions.
  369. # [01:42] <fantasai> TabAtkins, I think that makes it more confusing personally
  370. # [01:42] <fantasai> There's no "this is what happens when you leave it out" up front
  371. # [01:43] <TabAtkins> Well, that's because it depends on what extent you give it.
  372. # [01:43] * Joins: arno1 (arno@192.150.10.200)
  373. # [01:43] <brianman> I think that might solve the prose conflict but leaves an open question - "radial-gradient(red, blue)", extent is implicitly farthest-corner but shape is unknown.
  374. # [01:43] <brianman> ending-shape*
  375. # [01:43] <TabAtkins> No, the farthest-corner prose defines what to do with that.
  376. # [01:44] <fantasai> TabAtkins, given that circles are a subset of ellipses, I think the prose is fine with the default ending shape stated up front
  377. # [01:44] <fantasai> oh, bother
  378. # [01:45] <brianman> so f-c -> c-c -> c-s -> "each dimension"
  379. # [01:45] <fantasai> TabAtkins, no, really, I would rather have the default non-circularness stated up front as before.
  380. # [01:45] * Quits: arno (arno@192.150.10.200) (Ping timeout)
  381. # [01:46] <brianman> Then qualify the sentence:
  382. # [01:46] <fantasai> which sentence?
  383. # [01:46] <brianman> "If <shape> is unspecified and extent is a single length, then defaults to circle; otherwise ellipse."
  384. # [01:47] <brianman> simpler...
  385. # [01:47] <brianman> "When <extent> is a single <length>, <shape> defaults to 'circle'; otherwise, it defaults to 'ellipse'."
  386. # [01:48] <brianman> [unspecified was redundant to the whole point of having a default]
  387. # [01:49] <TabAtkins> That would be fine with me too.
  388. # [01:49] <fantasai> so what if I write
  389. # [01:49] * Quits: tantek (tantek@159.63.23.38) (Quit: tantek)
  390. # [01:49] <fantasai> radial-gradient(to 10px 10px, blue, white)
  391. # [01:49] <fantasai> ?
  392. # [01:50] <fantasai> vs.
  393. # [01:50] <TabAtkins> That hits the "otherwise" clause.
  394. # [01:50] <brianman> defaults to ellipse, has 2 lengths - looks fine
  395. # [01:50] <fantasai> radial-gradient(to 10px, blue, white)
  396. # [01:50] <TabAtkins> That hits the first clause.
  397. # [01:50] <fantasai> they are exactly the same
  398. # [01:50] <brianman> defaults to circle, has 1 length - looks fine
  399. # [01:50] <brianman> no they are not
  400. # [01:50] <fantasai> there's no reason one needs to result in anything different from the other
  401. # [01:50] <fantasai> how are they different?
  402. # [01:50] <TabAtkins> Here's the more important question: does it matter?
  403. # [01:50] <brianman> 1 has an ellipse shape, the other does not
  404. # [01:50] <TabAtkins> Why are we caring about this?
  405. # [01:50] <brianman> they render equivalently, yes
  406. # [01:51] <fantasai> TabAtkins: That's my point. It doesn't matter whether it's an ellipse or a circle if the radii are defined to be the same.
  407. # [01:51] <brianman> @Tab: I care because I think the grammar is the right answer. The prose is at best "ok". Broken prose is not ok.
  408. # [01:51] <brianman> If you want to use prose instead of a grammar, use correct prose.
  409. # [01:51] <TabAtkins> fantasai: My point is that I don't care, but Brian does, and his preferred wording isn't any less clear.
  410. # [01:52] <brianman> a
  411. # [01:52] <brianman> Another option is to say "The default <shape> depends on the <extent> syntax chosen." And then clarify in each type of <extent> prose which default applies.
  412. # [01:52] * Joins: arno (arno@206.80.17.29)
  413. # [01:53] <brianman> My concern a few edits ago was that 1 of the 3 extent syntaxes was incompatible with the default prose.
  414. # [01:53] <TabAtkins> Givent hat there's only one clause where it's different, I dont' think that's better than just expli1citly s/aying "If X, circle; "1
  415. # [01:53] <TabAtkins> (Sorry for spelling - kitten on keyboard.)
  416. # [01:53] <brianman> (heh, meow)
  417. # [01:54] * Quits: arno (arno@206.80.17.29) (Quit: Leaving.)
  418. # [01:54] * Quits: arno1 (arno@192.150.10.200) (Ping timeout)
  419. # [01:54] <brianman> Waiting for Elika to say Refresh.
  420. # [01:55] <fantasai> I want to know what the difference is between 'circle' and 'ellipse' when the radii are equal.
  421. # [01:55] <fantasai> Because if there's a difference, we need to document it.
  422. # [01:55] <brianman> They are rendering equivalent.
  423. # [01:55] <TabAtkins> Other than the grammar differences, no difference.
  424. # [01:56] <brianman> For OM/serialization purposes, they are as different as "cover" and "farthest-corner" are.
  425. # [01:56] <fantasai> OM/serialization of an omitted value is omitted
  426. # [01:56] <fantasai> So they're the same there as well
  427. # [01:56] <fantasai> How are they different?
  428. # [01:56] <pjrm> might be different for animation
  429. # [01:56] <brianman> indeed, pjrm
  430. # [01:56] <TabAtkins> One has 1 length, the other has 2 lengths
  431. # [01:57] <brianman> they are different states
  432. # [01:57] <fantasai> Can you animate a circle to an ellipse?
  433. # [01:57] <brianman> the fact that they render the same is one dimension of equivalent
  434. # [01:57] <TabAtkins> fantasai: Yes.
  435. # [01:57] <fantasai> I want to know what's the dimension of unequivalence.
  436. # [01:57] <fantasai> TabAtkins: in that case, they are the same wrt animation
  437. # [01:57] <brianman> ellipse has 2 pieces of data, circle has 1
  438. # [01:57] <fantasai> TabAtkins: In what way are they different?
  439. # [01:57] <brianman> example:
  440. # [01:57] <brianman> ellipse 5.000000000000000000000001px 5.00000000000000000000000px
  441. # [01:58] <brianman> circle 5.00000000000000000px
  442. # [01:58] <TabAtkins> fantasai: You know the answer already. We told you. They're rendering-identical, but different in grammar.
  443. # [01:58] <brianman> Are they the same render? "Maybe. Us dependent."
  444. # [01:58] <brianman> UA*
  445. # [01:58] <brianman> ..and internal representation
  446. # [01:59] <TabAtkins> Yeah, but that detail's hidden. She's specifically asking about ellipses with identical width/height.
  447. # [01:59] <fantasai> I still don't understand why we should care whether the ending shape is considered a "circle" or an "ellipse".
  448. # [01:59] <fantasai> Afaict it's just an editorial difference.
  449. # [01:59] <fantasai> Unless you show me otherwise
  450. # [02:00] <fantasai> You're insisting that the distinction is important
  451. # [02:00] <brianman> Because the prose is not self-consistent.
  452. # [02:00] <TabAtkins> fantasai: We have an edit that resolves the problem. Why are you still caring.
  453. # [02:00] <brianman> If you can't make self-consistent prose, then don't use prose. Or don't move the spec forward.
  454. # [02:01] <fantasai> The prose /was/ self-consistent at my checkin.
  455. # [02:01] <brianman> If 192 was yours, then you are incorrect.
  456. # [02:01] <TabAtkins> fantasai: Repeating my question. Why are you still caring. Is the prose incorrect or unclear now?
  457. # [02:01] * Joins: gilles (gilles@144.189.101.1)
  458. # [02:01] <fantasai> 1.202
  459. # [02:03] <brianman> Looking @ 202..I didn't realize you added back the full grammar (it was offscreen)
  460. # [02:03] <brianman> Sidenote while I'm looking: I don't know if "keyword" is what you call "closest-corner". Feel free to rename that in extent-keyword.
  461. # [02:03] <brianman> Reading...
  462. # [02:05] <brianman> table of contents in 202 looks busted, maybe something with viewing via cvsweb
  463. # [02:05] <brianman> Ok, so the issue with 202...
  464. # [02:06] <brianman> "radial-gradient(to 5px, red blue)" is a shape undefined, ending-shape ellipse, with 1 length
  465. # [02:06] <brianman> An ending-shape of ellipse with 1 length specified isn't a grammar problem (like we resolved to avoid) but is a conceptual problem.
  466. # [02:06] <brianman> IMO
  467. # [02:07] <brianman> Elaborating, and ending-shape of ellipse with 1 length reasonably resolves to a circle....so why wouldn't you call the ending shape a circle?
  468. # [02:10] <brianman> </endwalloftext>
  469. # [02:10] <fantasai> reload
  470. # [02:13] <brianman> [Editorial] "and to an ellipse otherwise" -- The sentence runs on a bit. I'd prefer semicolon.
  471. # [02:13] * Quits: stearns (anonymous@192.150.22.5) (Ping timeout)
  472. # [02:13] <brianman> 204 looks fine otherwise
  473. # [02:13] <brianman> Do we have 3/4 consensus on 204 then? Tab?
  474. # [02:14] <brianman> [With a remaining WG open issue of cover/contain.
  475. # [02:14] <fantasai> I can put a comma, but a semicolon would be grammatically incorrect
  476. # [02:14] <brianman> ]
  477. # [02:14] <brianman> depends what you change the post-semicolon text to :P
  478. # [02:14] <brianman> but yes, a comma might help
  479. # [02:14] <fantasai> not changing it
  480. # [02:15] * brianman pings Tab.
  481. # [02:15] <fantasai> TabAtkins
  482. # [02:15] <brianman> Does that trigger a ding or something on his client?
  483. # [02:15] <fantasai> more likely to, yes
  484. # [02:15] <brianman> heh
  485. # [02:15] <fantasai> usually people have notifications on for their nick
  486. # [02:16] * fantasai has it too, but doesn't have sound :(
  487. # [02:18] * Joins: miketaylr (miketaylr@24.42.93.245)
  488. # [02:20] * Quits: miketaylr (miketaylr@24.42.93.245) (Quit: miketaylr)
  489. # [02:22] <brianman> so assuming Tab comes back
  490. # [02:22] <brianman> and doesn't have issues
  491. # [02:22] <brianman> we just need Brad input
  492. # [02:22] <brianman> yes?
  493. # [02:24] * Quits: gilles (gilles@144.189.101.1) (Quit: gilles)
  494. # [02:39] <brianman> Elika you still there?
  495. # [02:39] <fantasai> sorry, wandered out
  496. # [02:40] <brianman> heh
  497. # [02:40] <fantasai> yeah, sounds good
  498. # [02:40] <brianman> The 3rd and 4th clause
  499. # [02:40] <brianman> Tab noticed but we didn't fix it in the edit...
  500. # [02:40] <fantasai> ?
  501. # [02:40] <brianman> 3rd and 4th are missing position
  502. # [02:40] <brianman> and "to" keyword
  503. # [02:40] <brianman> You got it covered or want me to fix it?
  504. # [02:43] <fantasai> think I got it, just a sec
  505. # [02:43] <fantasai> I also took out a spare set of brackets
  506. # [02:43] * fantasai should pull them out of the short version too
  507. # [02:43] <fantasai> reload
  508. # [02:44] <brianman> reading sec
  509. # [02:45] <brianman> yah looks good
  510. # [02:45] <fantasai> ship it? :)
  511. # [02:48] <brianman> :)
  512. # [02:50] <brianman> oh, the brackets per line
  513. # [02:50] <brianman> because of the strength of space
  514. # [02:51] <brianman> I like the spacing in the expanded. It helps.
  515. # [02:52] <brianman> Do you want to reply to the thread "please look at 206 and comment" or should I? ;)
  516. # [02:53] <fantasai> which thread?
  517. # [02:53] * fantasai has so many threads...
  518. # [02:54] <brianman> Heh phone call thread
  519. # [02:54] <brianman> i'll reply in a bit
  520. # [02:54] <brianman> briefing my Arron
  521. # [02:54] <brianman> Mr.*
  522. # [02:54] * Quits: dbaron (dbaron@63.245.220.240) (Ping timeout)
  523. # [03:01] * Joins: gilles (gilles@144.189.101.1)
  524. # [03:31] * Quits: gilles (gilles@144.189.101.1) (Quit: gilles)
  525. # [03:36] * Joins: dbaron (dbaron@173.228.28.129)
  526. # [03:41] * Joins: gilles (gilles@144.189.101.1)
  527. # [03:59] * Quits: gilles (gilles@144.189.101.1) (Quit: gilles)
  528. # [04:59] * Joins: stearns (anonymous@50.132.63.33)
  529. # [05:57] * Quits: dbaron (dbaron@173.228.28.129) (Quit: 8403864 bytes have been tenured, next gc will be global.)
  530. # [06:23] * Joins: Mike5_ (Mike5@mcclure.w3.org)
  531. # [06:28] * Quits: Mike5 (Mike5@mcclure.w3.org) (Ping timeout)
  532. # [06:28] * Mike5_ is now known as Mike5
  533. # [06:51] * Quits: TabAtkins (tabatkins@216.239.45.4) (Ping timeout)
  534. # [06:54] * Joins: TabAtkins (tabatkins@216.239.45.4)
  535. # [09:08] * Joins: Ms2ger (Ms2ger@91.181.45.148)
  536. # [09:58] * Joins: drublic (drublic@77.2.129.32)
  537. # [10:34] * Quits: Ms2ger (Ms2ger@91.181.45.148) (Quit: bbl)
  538. # [10:51] * Joins: arronei_ (arronei@131.107.0.114)
  539. # [10:51] * Quits: arronei (arronei@131.107.0.85) (Ping timeout)
  540. # [11:11] * Quits: brianman_ (brianman@67.170.96.162) (Ping timeout)
  541. # [11:37] * danbeam is now known as danbeam__
  542. # [12:23] * Joins: Mike5_ (Mike5@mcclure.w3.org)
  543. # [12:28] * Quits: Mike5 (Mike5@mcclure.w3.org) (Ping timeout)
  544. # [12:28] * Mike5_ is now known as Mike5
  545. # [12:53] * Joins: karl (karlcow@128.30.54.58)
  546. # [14:09] * Quits: lhnz (lhnz@188.223.83.48) (Connection reset by peer)
  547. # [14:10] * Joins: lhnz (lhnz@188.223.83.48)
  548. # [14:14] * Quits: lhnz (lhnz@188.223.83.48) (Connection reset by peer)
  549. # [14:15] * Joins: lhnz (lhnz@188.223.83.48)
  550. # [14:16] * Quits: lhnz (lhnz@188.223.83.48) (Connection reset by peer)
  551. # [15:20] * Joins: miketaylr (miketaylr@206.217.92.186)
  552. # [16:06] * Quits: florianr (florianr@213.236.208.22) (Quit: Leaving.)
  553. # [16:07] * Joins: anne (annevk@98.210.155.154)
  554. # [16:07] * Joins: florianr (florianr@213.236.208.22)
  555. # [16:10] * Quits: anne (annevk@98.210.155.154) (Connection reset by peer)
  556. # [16:12] * Joins: gilles (gilles@204.14.156.63)
  557. # [16:28] * Quits: gilles (gilles@204.14.156.63) (Quit: gilles)
  558. # [17:09] * Quits: stearns (anonymous@50.132.63.33) (Ping timeout)
  559. # [17:31] * Joins: paul_irish (paul_irish@76.14.88.222)
  560. # [17:35] * Quits: paul_irish (paul_irish@76.14.88.222) (Client exited)
  561. # [17:42] * Joins: vhardy (vhardy@192.150.10.201)
  562. # [17:43] * Quits: vhardy (vhardy@192.150.10.201) (Client exited)
  563. # [17:54] * Quits: florianr (florianr@213.236.208.22) (Quit: Leaving.)
  564. # [18:04] * Joins: plinss_ (plinss@68.107.116.103)
  565. # [18:04] * Quits: plinss (plinss@68.107.116.103) (Ping timeout)
  566. # [18:04] * plinss_ is now known as plinss
  567. # [18:04] * Quits: drublic (drublic@77.2.129.32) (Ping timeout)
  568. # [18:13] * Joins: stearns (anonymous@50.132.63.33)
  569. # [18:20] * Joins: drublic (drublic@93.132.246.238)
  570. # [18:22] * Quits: stearns (anonymous@50.132.63.33) (Quit: stearns)
  571. # [18:23] * Joins: Mike5_ (Mike5@mcclure.w3.org)
  572. # [18:28] * Quits: Mike5 (Mike5@mcclure.w3.org) (Ping timeout)
  573. # [18:28] * Mike5_ is now known as Mike5
  574. # [18:38] * Joins: anne (annevk@98.210.155.154)
  575. # [18:40] * Quits: anne (annevk@98.210.155.154) (Connection reset by peer)
  576. # [18:53] * Joins: brianman_ (brianman@67.170.96.162)
  577. # [18:55] * Joins: paul_irish (paul_irish@76.14.88.222)
  578. # [18:56] * Quits: brianman (brianman@131.107.0.86) (Ping timeout)
  579. # [18:58] * Joins: brianman (brianman@131.107.0.117)
  580. # [19:01] * Joins: stearns (anonymous@192.150.22.5)
  581. # [19:07] * Joins: gilles (gilles@144.189.101.1)
  582. # [19:11] <fantasai> dbaron: location?
  583. # [19:39] * Quits: gilles (gilles@144.189.101.1) (Quit: gilles)
  584. # [19:49] * Quits: karl (karlcow@128.30.54.58) (Quit: Freedom - to walk free and own no superior.)
  585. # [19:58] * Quits: plinss (plinss@68.107.116.103) (Ping timeout)
  586. # [20:18] * Joins: tantek (tantek@63.245.220.240)
  587. # [20:45] * Quits: tantek (tantek@63.245.220.240) (Quit: tantek)
  588. # [20:47] * Quits: paul_irish (paul_irish@76.14.88.222) (Client exited)
  589. # [20:54] * Joins: paul_irish (paul_irish@107.38.86.57)
  590. # [21:07] * Joins: gilles (gilles@144.189.101.1)
  591. # [21:10] * Quits: paul_irish (paul_irish@107.38.86.57) (Ping timeout)
  592. # [21:16] * Quits: gilles (gilles@144.189.101.1) (Quit: gilles)
  593. # [21:26] * Joins: Ms2ger (Ms2ger@91.181.45.148)
  594. # [21:36] * Quits: Mike5 (Mike5@mcclure.w3.org) (Quit: Make the road by walking. (B-side: Tired of Fighting))
  595. # [21:45] * Joins: plinss (plinss@68.107.117.88)
  596. # [22:06] * Joins: anne (annevk@208.54.15.183)
  597. # [22:32] * Joins: paul_irish (paul_irish@72.14.229.81)
  598. # [22:42] * Quits: Ms2ger (Ms2ger@91.181.45.148) (Quit: nn)
  599. # [22:44] * Joins: tantek (tantek@70.36.139.219)
  600. # [22:56] * Joins: gilles (gilles@144.189.101.1)
  601. # [22:57] * Quits: anne (annevk@208.54.15.183) (Quit: anne)
  602. # [23:02] * Quits: miketaylr (miketaylr@206.217.92.186) (Quit: miketaylr)
  603. # [23:04] * Quits: gilles (gilles@144.189.101.1) (Quit: gilles)
  604. # [23:05] * Joins: gilles (gilles@144.189.101.1)
  605. # Session Close: Thu Nov 10 00:00:00 2011

The end :)