/irc-logs / w3c / #css / 2013-04-20 / end

Options:

  1. # Session Start: Sat Apr 20 00:00:00 2013
  2. # Session Ident: #css
  3. # [00:23] * Quits: antonp (~Thunderbird@public.cloak) (antonp)
  4. # [00:34] <fantasai> plinss: There's a *lot* of spam accounts on wiki.csswg.org. Anything we can do about them?
  5. # [00:34] <plinss> I just turned on the full captcha for the wiki yesterday
  6. # [00:34] <fantasai> k
  7. # [00:34] <plinss> I can go in and kill the accounts manually...
  8. # [00:35] <plinss> have you seen any actual spam on the wiki itself?
  9. # [00:36] <fantasai> nope
  10. # [00:36] <fantasai> probably because all the top-level pages are locked-down
  11. # [00:40] <krit> TabAtkins_: Is there a way to disallow quirks mode for content of certain functions?
  12. # [00:40] <krit> TabAtkins_: (In CSS syntax.)
  13. # [00:43] <TabAtkins_> krit: No.
  14. # [00:43] <krit> TabAtkins_: k, thanks
  15. # [00:44] <krit> TabAtkins_: Is <number> allowed for Color values in your quirks mode parsing?
  16. # [00:45] <krit> TabAtkins_: if so, <number> | <color> should never be used in combination, right?
  17. # [00:46] <krit> TabAtkins_: (It is allowed in quirks mode on the WebKit/Blink parser at least)
  18. # [00:46] <TabAtkins_> krit: The color quirk is limited to color, background-color, and the border-color properties. Nothing else uses it.
  19. # [00:46] <TabAtkins_> So you don't have to worry about it for new properties.
  20. # [00:46] <TabAtkins_> Is that what you meant by your original question?
  21. # [00:47] <krit> TabAtkins_: that was the direction I wanted to lead to, yes :)
  22. # [00:47] <TabAtkins_> You should have just asked it. ^_^ (Or just looked at the spec: http://dev.w3.org/csswg/css-syntax/#consume-a-component-value-with-the-hashl )
  23. # [00:47] <krit> :)
  24. # [00:47] <TabAtkins_> Also: I'm removing those quirks from the Syntax spec. dbaron has convinced me that they instead belong in the individual properties affected by the quirk.
  25. # [00:48] <TabAtkins_> Probably by defining a <loose-color> type that accepts <color> | <number> | <ident> | <dimension>.
  26. # [00:48] <fantasai> huh?
  27. # [00:49] <fantasai> since when is <number> a color?
  28. # [00:49] <TabAtkins_> fantasai: Since forever, if you're in one of the six properties, and are in quirks mode.
  29. # [00:49] <TabAtkins_> "color: 002200;" is valid and equivalent to "color: #002200;".
  30. # [00:49] <fantasai> 123.56 is a color?
  31. # [00:49] <TabAtkins_> Nope.
  32. # [00:49] <fantasai> ah
  33. # [00:49] <fantasai> you want <integer>
  34. # [00:49] <fantasai> :)
  35. # [00:49] <fantasai> and that's not the type you want
  36. # [00:50] <fantasai> you don't want any integer, do you?
  37. # [00:50] <TabAtkins_> Actually, I don't, because "1234e6" is a color, but not an <integer>.
  38. # [00:50] <fantasai> or any ident
  39. # [00:50] <fantasai> That's entirely your fault for adding scinot ^_^
  40. # [00:50] <TabAtkins_> Whatevs.
  41. # [00:50] <fantasai> I don't think you want 45t6 to be valid though
  42. # [00:50] <fantasai> so your definition is wrong
  43. # [00:51] <TabAtkins_> Sigh, yes, my syntax definition thrown out in a quick IRC message is incomplete.
  44. # [00:52] * fantasai suggests defining it not as a combination of existing types
  45. # [00:52] <TabAtkins_> Well, it'll definitely be prose-defined, not grammar-defined.
  46. # [00:52] <TabAtkins_> fantasai: Hm, should I just add this to Values?
  47. # [00:52] <TabAtkins_> <quirk-color> and <quirk-length>
  48. # [00:52] <fantasai> <quirky-color>
  49. # [00:52] <TabAtkins_> Yeah, quirky is better.
  50. # [00:53] <fantasai> sure
  51. # [00:53] <fantasai> and don't put it in any propdefs
  52. # [00:53] <TabAtkins_> Values 3, or should I go ahead and start Values 4?
  53. # [00:53] <TabAtkins_> Yeah.
  54. # [00:53] <fantasai> just add a note at the very end of the section saying "In Quirks mode, this property accepts <quirky-length> instead of <length>."
  55. # [00:53] <TabAtkins_> Yeah.
  56. # [00:53] <fantasai> btw, workdays next week?
  57. # [00:54] <TabAtkins_> Though that officially means 2.1 errata, since a lot of the properties are only defined there.
  58. # [00:54] <fantasai> 2.1 doesn't define Quirks Mode
  59. # [00:54] <fantasai> it's out of scope, not errata
  60. # [00:54] <TabAtkins_> I'm best MWF next week.
  61. # [00:54] <fantasai> Actually, can we just write a Quirks Mode module?
  62. # [00:54] <fantasai> I think that's better
  63. # [00:54] <TabAtkins_> zcorpan already has. ^_^
  64. # [00:55] <fantasai> well let's publish it then ^_^
  65. # [00:55] <TabAtkins_> I can write up a better definition of <quirky-color> and <quirky-length> and have him add them.
  66. # [00:55] <fantasai> Yeah
  67. # [00:55] <TabAtkins_> (The only non-trivial definition is line-height in the font shorthand.
  68. # [00:55] <TabAtkins_> )
  69. # [00:55] <fantasai> and then level 3 specs can refer to them like I propsed above
  70. # [00:55] <TabAtkins_> Yeah.
  71. # [00:55] <fantasai> and 2.1 will be covered by the quirks-mode module itself
  72. # [00:55] <TabAtkins_> Sure.
  73. # [00:57] <fantasai> Cool. Problem solved.
  74. # [01:00] <fantasai> Let's have Quirks Mode also include the normative list of the properties that accept these (since they're all 2.1 bits)
  75. # [01:01] <fantasai> CSS3 specs can just informatively point out the quirk
  76. # [01:01] <fantasai> Quirks mode is thus fully defined, fully encapsulated, and adequately cross-referenced.
  77. # [01:02] <fantasai> And then we can move onto the next easy problem, stacking contexts of table cells....
  78. # [01:14] * Quits: sgalineau (~sgalineau@public.cloak) (Client closed connection)
  79. # [01:27] * Quits: rhauck (~Adium@public.cloak) ("Leaving.")
  80. # [01:37] <plinss> fantasai: so as I was going through deleting several hundred spam registrations on the wiki, I started noticing new ones showing up...
  81. # [01:37] * Quits: lmclister (~lmclister@public.cloak) ("")
  82. # [01:37] * Quits: plh3 (plehegar@public.cloak) ("Leaving")
  83. # [01:37] <plinss> … apparently the captcha is pretty much useless
  84. # [01:37] <plinss> … so I just disabled registrations on the wiki
  85. # [01:38] <plinss> … legit users can register on shepherd (which spammers haven't found/can't register on yet)
  86. # [01:39] * Quits: abucur (~abucur@public.cloak) ("Leaving")
  87. # [01:54] <TabAtkins_> plinss: Or just ask us to register them, I suppose.
  88. # [01:54] <TabAtkins_> plinss: But yeah, captchas are cheap to break with things like Mechanical Turk.
  89. # [01:55] <TabAtkins_> plinss: I've put together my requirements for extracting cross-spec link targets. Do you still wanna handle this on your server, or should I do it on my own?
  90. # [01:55] <plinss> what do you need?
  91. # [01:56] <TabAtkins_> I just need something that'll periodically look for updated drafts and reparse them, and then expose a JSON document with all the link targets/linking text.
  92. # [01:56] <TabAtkins_> Preferably in a simple flat way (yours is pretty nested, which is usable, but harder than needed).
  93. # [01:56] <TabAtkins_> The selector to extract links is easy, too.
  94. # [01:57] <plinss> well I already parse the specs and extract all the link targets
  95. # [01:57] <TabAtkins_> I dont' want all the link targets. ^_^
  96. # [01:57] <plinss> didn't you just say: "then expose a JSON document with all the link targets/linking text"?
  97. # [01:58] <TabAtkins_> dfn[data-export], [data-export] dfn:not([data-noexport]), .propdef dfn:not([data-noexport]), .descdef dfn:not([data-noexport])
  98. # [01:58] <TabAtkins_> All link targets matching that ^^^
  99. # [01:59] <TabAtkins_> And while I can do post-processing to find uniques and collisions, it'd be awesome if that was already done and presented in the result document.
  100. # [01:59] <plinss> ok, what exactly is that?
  101. # [02:00] <TabAtkins_> That find all properties and descriptors, all terms explicitly marked for export, and all terms within a container marked for export.
  102. # [02:02] <plinss> just to be clear, the above selectors are also actual link targets, as-in have ids or <a name='...'>
  103. # [02:02] * Joins: rhauck (~Adium@public.cloak)
  104. # [02:02] <TabAtkins_> They're all <dfn>s, which are automatically given ids by both my and Bert's processors.
  105. # [02:02] <TabAtkins_> plinss: To be safe, I suppose you could add a [id] to each of the four, just in case.
  106. # [02:02] <plinss> not necessary
  107. # [02:03] <plinss> so I already find all the possible link targets and classify them (I have dfn and propdef types already)
  108. # [02:03] <plinss> but it sounds link you want a sub-type of something like exported-dfn ?
  109. # [02:04] <TabAtkins_> Sure, if that's how you'd like to organize it. I want to make exporting an opt-in decision, because I definitely use "local" definitions in my specs sometimes.
  110. # [02:06] <plinss> I can add that to my parser fairly easily, so we might as well keep it all in one place...
  111. # [02:06] <TabAtkins_> Cool.
  112. # [02:06] <TabAtkins_> (Actually, it would probably be useful to have all dfns, and just flag with a warning when you link to a non-exported one.)
  113. # [02:06] <plinss> btw, what's .descdef used for?
  114. # [02:06] * Joins: tantek (~tantek@public.cloak)
  115. # [02:07] <TabAtkins_> Descriptor definition tables, for at-rules with property-like contents.
  116. # [02:07] <TabAtkins_> It's styled identically to a propdef in our stylesheet.
  117. # [02:07] <plinss> ok
  118. # [02:08] <TabAtkins_> I forget - does your data source also record the linking texts for each target?
  119. # [02:08] <plinss> define "linking texts"
  120. # [02:08] <TabAtkins_> For <dfn>foo</dfn>, "foo". For <dfn title="bar|baz">foo</dfn>, "bar" and "baz".
  121. # [02:09] <TabAtkins_> The text that the autolinker uses to match terms to definitions.
  122. # [02:09] <plinss> I definitely do the first case, lemme check on the title attr
  123. # [02:10] <TabAtkins_> I have a slightly broken implementation of it in my processor. (Bert's allows you to use !! to define sub-terms, which I don't deal with yet.)
  124. # [02:10] <TabAtkins_> (Mainly because I'm unsure how it actually works.)
  125. # [02:10] <plinss> I don't currently grab the title attr, but that would be trivial to add
  126. # [02:11] <TabAtkins_> It's required for autolinking to work, so it would be appreciated. ^_^
  127. # [02:11] <plinss> on the "bar|baz" case do you really need that as a list?
  128. # [02:12] <TabAtkins_> I *could* process it myself, but that seems silly if we're already parsing it apart.
  129. # [02:12] <TabAtkins_> Just split it on "|".
  130. # [02:13] <TabAtkins_> After all, the title attribute is only useful for the purpose of providing linking texts.
  131. # [02:13] <TabAtkins_> (Also, note that providing the title attribute makes the text content no longer be a linking text.)
  132. # [02:14] <plinss> it's not the parsing that I'm thinking of, it's the logical model. each anchor already has a title, using the title attr is trivial as I said, I'm unclear on what it means to have multiple titles
  133. # [02:15] <TabAtkins_> It means that either an autolink with either link text will link up to that dfn.
  134. # [02:16] <TabAtkins_> With <dfn title="bar|baz">foo</dfn>, both <a>bar</a> *and* <a>baz</a> get autolinked to the definition.
  135. # [02:16] <TabAtkins_> (But <a>foo</a> won't, because the presence of a title overrides the normal linking text extraction behavior, which just uses the text content.)
  136. # [02:16] <TabAtkins_> (In my processor, an <a> without an href is an autolink. In Bert's, it's any inline element other than <a>.)
  137. # [02:17] <plinss> Ok, so I'm wondering if instead of overriding the current notion of anchor's 'title' (which is currently the text inside the anchor), I should maybe just add a link text field...
  138. # [02:18] <TabAtkins_> Yes, that's the actual meaning for my purposes.
  139. # [02:18] <plinss> ok, I'll do that then
  140. # [02:19] <TabAtkins_> Cool.
  141. # [02:20] <plinss> now for the types, I'm thinking I should just add an 'export' field rather than new anchor types, then you'll get exported 'dfn', 'propdef', and 'descdef' anchor types...
  142. # [02:20] <plinss> with export: True/False
  143. # [02:23] <TabAtkins_> What's the effect on the JSON structure? Each spec's entry has a 'dfn' field filled with a list of anchors?
  144. # [02:25] <plinss> no each spec has a list of anchors, each has a type
  145. # [02:25] <plinss> see: https://test.linss.com/shepherd/api/spec/?spec=css3-flexbox&anchors=1 for an example
  146. # [02:26] <plinss> section anchors have a list of children
  147. # [02:26] <plinss> although I can add a param to not do the nesting I suppose
  148. # [02:26] <TabAtkins_> (btw, dns is failing for me to reach your server)
  149. # [02:26] <TabAtkins_> I can process the nesting away if it's inconvenient for you.
  150. # [02:26] <TabAtkins_> I'll need to do processing anyway.
  151. # [02:26] <plinss> grr, sorry, that's my internal server, should be test.csswg.org
  152. # [02:27] <TabAtkins_> (I need to reverse the relationship so I get a map from link text => url.)
  153. # [02:27] <TabAtkins_> Do you only parse /TR, or hit up dev.w3.org as well?
  154. # [02:28] <plinss> currently only /tr, but I'll be adding the drafts at some point in the not-too-distant future
  155. # [02:29] <TabAtkins_> Cool. I'll need that before I can actually start using it. ^_^
  156. # [02:29] <plinss> (note the uri in my json can be more than the fragment for multi-page specs)
  157. # [02:29] <plinss> ok, timeframe?
  158. # [02:29] <TabAtkins_> Also: I'll need a way to manually trigger a reparse of a given spec.
  159. # [02:30] <TabAtkins_> I'm not in any hurry, but I'll add the functionality as soon as you give me the data.
  160. # [02:30] <TabAtkins_> And make fantasai very happy. ^_^
  161. # [02:30] <plinss> well we have to keep fantasai happy
  162. # [02:30] <plinss> why do you need the manual re-parse trigger?
  163. # [02:31] <TabAtkins_> So that, if I notice while writing spec A that I need to refer to something in spec B that isn't currently dfn'd, I can go edit spec B, trigger a reparse, pull down the new list of anchors, and get autolinking working.
  164. # [02:32] <TabAtkins_> Rather than ahving to wait for your server to do its periodic sweep.
  165. # [02:33] <plinss> ok, well the /TR specs generally get checked every night, when I add the drafts I was going to reparse on push
  166. # [02:33] <plinss> but I can also make you an admin on shepherd and you can re-parse at will...
  167. # [02:33] <plinss> there's already an admin ui for that
  168. # [02:34] <plinss> (which also lets you add new specs)
  169. # [02:34] <TabAtkins_> Making just me one probably won't help, since I want my processor to be usable by everyone...
  170. # [02:34] <TabAtkins_> It's fine to have a chokepoint for adding new specs, but not for reparsing specs.
  171. # [02:35] <plinss> do you need to parse specs that aren't in the drafts repo?
  172. # [02:35] <TabAtkins_> Hm, good question. I guess not.
  173. # [02:36] <plinss> so if it auto parses when someone pushes that should be sufficient, right?
  174. # [02:36] <TabAtkins_> (I will need a way to link out to non-us specs, but I'm thinking of doing that by maintaining a map in the CSSWG repo, which anyone in CSS can edit.)
  175. # [02:36] <TabAtkins_> Oh yeah, that'd be *ideal*.
  176. # [02:36] <TabAtkins_> Also automatically handles permissions properly - only we get to flood your server. ^_^
  177. # [02:36] <plinss> that was the plan for the drafts anyhow
  178. # [02:36] <TabAtkins_> Cool.
  179. # [02:37] * Joins: isherman-book (~Adium@public.cloak)
  180. # [02:37] <plinss> (the server should be able to handle it, Linode keeps giving me free upgrades)
  181. # [02:40] <TabAtkins_> We only push a few times a day, and parsing a single spec is the work of less than a second.
  182. # [02:40] <plinss> about that yes
  183. # [02:40] <plinss> do you only need the linking text on your exported dfn's?
  184. # [02:41] <TabAtkins_> Depends. I'd be fine with just that. I was thinking about allowing linking to unexported dfns, but with a warning in the console output.
  185. # [02:41] <TabAtkins_> But I won't be sad if I can't do that.
  186. # [02:42] <plinss> I was just wondering if there's a use for the linking text on other anchor types…
  187. # [02:44] * Quits: isherman-book (~Adium@public.cloak) ("Leaving.")
  188. # [02:47] <TabAtkins_> plinss: Like I said, there could be a use for linking to <dfn>s that weren't explicitly exported. I'd just want to flag those with a warning when my processor hits them, because they might be local definitions that weren't meant to be linked to.
  189. # [02:48] <plinss> right, but what I was asking is there a need/use for the linking text on other anchor types, like sections and <abbr>?
  190. # [02:48] <TabAtkins_> Oh, no.
  191. # [02:48] <plinss> ok
  192. # [02:48] <TabAtkins_> Well, technically I allow local linking to headings, but I'm not sure that's a great idea.
  193. # [02:49] <TabAtkins_> Not abbr, though - that's not an anchor.
  194. # [02:49] <plinss> it is if it has an id...
  195. # [02:49] <plinss> or is contained in or contains an <a name>
  196. # [02:49] <plinss> and we do have those in some specs...
  197. # [02:50] <TabAtkins_> Hm, I guess. I haven't seen them yet.
  198. # [02:50] <TabAtkins_> Example?
  199. # [02:50] <plinss> looking
  200. # [02:50] <plinss> ok, maybe we don't :-)
  201. # [02:50] <TabAtkins_> Haha.
  202. # [02:51] <plinss> I was either being pedantic or I found it in a spec that isn't currently parsed by shepherd...
  203. # [02:51] <plinss> (probably being pedantic)
  204. # [02:51] <TabAtkins_> I mean, maybe that's reasonable? Letting someone denote a "defining" instance of an abbr, and other specs can just use an <abbr> without a title, so the processor fills it in for them.
  205. # [02:53] <plinss> ok, so what I was thinking then is to maybe only populate the linking_text field with the contents of title attributes (split on '|') and otherwise you just use the title field
  206. # [02:53] <plinss> that way I don't send the same data twice when there isn't a title attr
  207. # [02:53] <plinss> and then I'll just capture them all
  208. # [02:57] <TabAtkins_> So the linking_text field won't exist otherwise?
  209. # [03:16] <plinss> either that or be null/false, do you have a preference?
  210. # [03:17] <TabAtkins_> Depends on which is easier to deal with in the data structure that Python returns from parsed JSON. I think it does a simple Dict, so having it be missing would probably be easier.
  211. # [03:18] <plinss> ok, that makes the json smaller anyhow...
  212. # [03:18] <TabAtkins_> Yeah.
  213. # [03:20] <plinss> do you have a preference for a separate internal/external field or different anchor types (propdef, propdef-internal, etc…)
  214. # [03:20] <TabAtkins_> What's the distinction you're making?
  215. # [03:22] <plinss> so currently all anchors have a type field: 'section', 'dfn', 'abbr', 'propdef', 'other'
  216. # [03:23] <plinss> but you want to know the export status, so I can either add a new field, or new anchor types...
  217. # [03:23] <TabAtkins_> Oh, new field - the "export: <bool>" think you mentioned up above.
  218. # [03:23] <plinss> ok
  219. # [03:24] <plinss> it looks like bare <dfn> are opt-in and propdef/descdef are opt-out right?
  220. # [03:24] <TabAtkins_> Yes.
  221. # [03:25] <TabAtkins_> And you can put [data-export] on a container to auto-opt-in all the contained dfns, unless they manually opt-out.
  222. # [03:25] <TabAtkins_> (Useful for a <dl> of terms, for instance.)
  223. # [03:25] <plinss> right, I saw that
  224. # [03:26] <plinss> I was just wondering if there's a common case and maybe it's an 'internal' field that isn't there if exported...
  225. # [03:29] <plinss> or if we should just have a bool on every anchor...
  226. # [03:29] <TabAtkins_> As long as I can find all the exported anchors, do whatever makes you happy.
  227. # [03:29] <plinss> k
  228. # [03:29] <TabAtkins_> Like I said, I'll be parsing it into a completely new form anyway.
  229. # [03:29] * Joins: glenn (~gadams@public.cloak)
  230. # [03:30] <plinss> I'll see what the data looks like once I parse it and then tweak the json if needed
  231. # [03:41] * Quits: tantek (~tantek@public.cloak) (tantek)
  232. # [03:53] * Quits: krit (~krit@public.cloak) ("Leaving.")
  233. # [04:18] * leaverou is now known as leaverou_away
  234. # [04:43] * Joins: krit (~krit@public.cloak)
  235. # [04:58] * Quits: krit (~krit@public.cloak) ("Leaving.")
  236. # [05:08] * Joins: lmclister (~lmclister@public.cloak)
  237. # [05:11] * Quits: glenn (~gadams@public.cloak) (Client closed connection)
  238. # [05:18] * Quits: lmclister (~lmclister@public.cloak) (Ping timeout: 60 seconds)
  239. # [05:19] * Joins: lmclister (~lmclister@public.cloak)
  240. # [06:05] * Quits: lmclister (~lmclister@public.cloak) (Client closed connection)
  241. # [06:14] * Joins: krit (~krit@public.cloak)
  242. # [07:43] * Joins: SimonSapin (~simon@public.cloak)
  243. # [07:53] * Quits: jdaggett (~jdaggett@public.cloak) (jdaggett)
  244. # [08:29] * Quits: krit (~krit@public.cloak) ("Leaving.")
  245. # [09:19] * Joins: glenn (~gadams@public.cloak)
  246. # [10:05] * Joins: Ms2ger (~Ms2ger@public.cloak)
  247. # [12:58] * Quits: Ms2ger (~Ms2ger@public.cloak) (Ping timeout: 60 seconds)
  248. # [13:13] * Joins: Ms2ger (~Ms2ger@public.cloak)
  249. # [16:02] * Joins: krit (~krit@public.cloak)
  250. # [16:36] * Quits: SimonSapin (~simon@public.cloak) (Ping timeout: 60 seconds)
  251. # [18:37] * Joins: SimonSapin (~simon@public.cloak)
  252. # [20:05] * Joins: lmclister (~lmclister@public.cloak)
  253. # [20:44] * Quits: Ms2ger (~Ms2ger@public.cloak) (Ping timeout: 60 seconds)
  254. # [21:00] * Joins: Ms2ger (~Ms2ger@public.cloak)
  255. # [21:11] * Quits: lmclister (~lmclister@public.cloak) ("")
  256. # [22:17] * Quits: krit (~krit@public.cloak) ("Leaving.")
  257. # [22:21] * Joins: krit (~krit@public.cloak)
  258. # [22:37] * Quits: Ms2ger (~Ms2ger@public.cloak) ("nn")
  259. # [22:39] * Joins: lmclister (~lmclister@public.cloak)
  260. # [22:53] * Quits: lmclister (~lmclister@public.cloak) ("")
  261. # [22:59] * Joins: rhauck1 (~Adium@public.cloak)
  262. # [23:01] * Quits: rhauck (~Adium@public.cloak) (Ping timeout: 60 seconds)
  263. # [23:22] * Quits: glenn (~gadams@public.cloak) (Client closed connection)
  264. # [23:37] * Quits: SimonSapin (~simon@public.cloak) (Ping timeout: 60 seconds)
  265. # Session Close: Sun Apr 21 00:00:01 2013

The end :)