/irc-logs / freenode / #whatwg / 2010-05-03 / end

Options:

  1. # Session Start: Mon May 03 00:00:00 2010
  2. # Session Ident: #whatwg
  3. # [00:11] * Quits: FireFly (~firefly@unaffiliated/firefly) (Quit: null)
  4. # [00:22] * Quits: scotfl (~scotfl@aeryn.scotfl.net) (Read error: Operation timed out)
  5. # [00:22] * Joins: scotfl (~scotfl@aeryn.scotfl.net)
  6. # [00:23] * Joins: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
  7. # [00:24] * Quits: Kuruma_ (~Kuruman@p3016-ipngn2701marunouchi.tokyo.ocn.ne.jp) (Ping timeout: 268 seconds)
  8. # [00:26] * Quits: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 246 seconds)
  9. # [00:26] * Quits: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
  10. # [00:26] * Quits: seventh (galofort@208.98.1.237) (Remote host closed the connection)
  11. # [00:27] * Joins: TabAtkins__ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net)
  12. # [00:29] * Quits: dglazkov (~dglazkov@75-37-194-175.lightspeed.lsatca.sbcglobal.net) (Read error: Connection reset by peer)
  13. # [00:29] <TabAtkins__> Hixie: I think we can usefully define ::disclosure and ::content pseudos for <details> as the default binding, without stepping on future development of the bindings in real XBL.
  14. # [00:29] <TabAtkins__> That would solve the most pressing styling issues.
  15. # [00:30] <TabAtkins__> With the structure generally being <details><summary><::disclosure/></summary><::content/></details>.
  16. # [00:31] <TabAtkins__> Though there are alternate ways a UA could represent <details> that would still work well with ::disclosure and ::content.
  17. # [00:33] * Joins: Kuruma_ (~Kuruman@p3016-ipngn2701marunouchi.tokyo.ocn.ne.jp)
  18. # [00:34] <ment> pardon my ignorance, but what's "<::disclosure/>" supposed to mean?
  19. # [00:35] <ment> (or any tag starting with double-colon)
  20. # [00:35] <TabAtkins__> A pretend ::disclosure pseudoelement (from CSS).
  21. # [00:35] <TabAtkins__> Self-closed for example brevity.
  22. # [00:36] <TabAtkins__> It's nothing to do with namespaces or anything, it's just a convenient way to express the shadow element that gets created when you use a pseudoelement in CSS.
  23. # [00:36] <Dashiva> What happens to content before summary?
  24. # [00:36] <TabAtkins__> Dashiva: Two <::content> elements?
  25. # [00:39] <Dashiva> Makes me wonder how browsers would render a <details> with content both before and after the summary
  26. # [00:39] <TabAtkins__> Me too.
  27. # [00:39] <TabAtkins__> I presume the <summary> would jump down when you opened the element.
  28. # [00:40] <TabAtkins__> Alternately, everything gets reordered in the box tree so that it comes after <summary>?
  29. # [00:42] <Dashiva> The element's shadow tree is expected to take the element's first child summary element, if any, and place it in a first 'block' box container, and then take the element's remaining descendants, if any, and place them in a second 'block' box container.
  30. # [00:42] <TabAtkins__> Well, the content model explicitly has <summary> coming first, so shrug.
  31. # [00:43] <TabAtkins__> Excellent, that's what I thought.
  32. # [00:48] * Joins: JusticeFries (~justicefr@c-67-173-239-97.hsd1.co.comcast.net)
  33. # [00:49] * Quits: JoePeck (~jjp@2620:0:1b00:1171:fa1e:dfff:fed9:b9a) (Quit: -)
  34. # [01:11] * Quits: JusticeFries (~justicefr@c-67-173-239-97.hsd1.co.comcast.net) (Quit: JusticeFries)
  35. # [01:24] * Joins: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
  36. # [01:39] * Joins: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net)
  37. # [01:41] * Quits: dbaron (~dbaron@c-98-234-51-190.hsd1.ca.comcast.net) (Quit: 8403864 bytes have been tenured, next gc will be global.)
  38. # [01:43] * Quits: Necrathex (~bleptop@212-123-163-12.ip.telfort.nl) (Ping timeout: 240 seconds)
  39. # [01:51] * Joins: paul_irish_ (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net)
  40. # [01:53] * Quits: paul_irish_ (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net) (Client Quit)
  41. # [02:00] * Joins: paul_irish (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net)
  42. # [02:00] * Joins: jwalden (~waldo@c-71-202-165-226.hsd1.ca.comcast.net)
  43. # [02:46] * Joins: miketaylr (~miketaylr@24.42.95.234)
  44. # [02:47] * Quits: miketaylr (~miketaylr@24.42.95.234) (Excess Flood)
  45. # [02:47] * Joins: miketaylr (~miketaylr@24.42.95.234)
  46. # [03:06] * Quits: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net) (Quit: othermaciej)
  47. # [03:09] * Joins: nessy (~Adium@124-170-18-159.dyn.iinet.net.au)
  48. # [03:24] * Joins: boogyman (~boogy@unaffiliated/boogyman)
  49. # [03:24] * Quits: bzed (~bzed@devel.recluse.de) (Ping timeout: 276 seconds)
  50. # [03:25] * Joins: bzed (~bzed@devel.recluse.de)
  51. # [03:26] * Quits: boogyman (~boogy@unaffiliated/boogyman) (Client Quit)
  52. # [03:26] * Joins: boogyman (~boogy@unaffiliated/boogyman)
  53. # [03:27] * Joins: cardona507 (~cardona50@c-67-180-160-250.hsd1.ca.comcast.net)
  54. # [03:28] * Quits: bzed (~bzed@devel.recluse.de) (Read error: Connection reset by peer)
  55. # [03:28] * Joins: bzed (~bzed@devel.recluse.de)
  56. # [03:34] * Joins: divya (~divya@c-67-189-151-137.hsd1.ma.comcast.net)
  57. # [03:45] * Parts: divya (~divya@c-67-189-151-137.hsd1.ma.comcast.net)
  58. # [03:57] * Quits: boogyman (~boogy@unaffiliated/boogyman) (Ping timeout: 245 seconds)
  59. # [04:01] * Joins: JoePeck (~jjp@c-24-130-200-51.hsd1.ca.comcast.net)
  60. # [04:03] * Quits: knowtheory (~knowtheor@bas5-london14-1177678243.dsl.bell.ca) (Quit: Computer has gone to sleep)
  61. # [04:09] * Joins: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net)
  62. # [04:17] <Hixie> I have strings of numbers that I must match against patterns. The patterns are represented as nested lists of numbers.
  63. # [04:17] <Hixie> Each list of which requires one, zero or more, or one or more numbers to be matched from a set of numbers, either in sequence or in any order depending on the list.
  64. # [04:17] <Hixie> So for example, a pattern could be "sequence(1, one-of(2, sequence(20, 21)), zero-or-one-of(3, 4), one-or-more-of(5, 6, one-of(7, 8), 9)".
  65. # [04:17] <Hixie> The sequence 1,2,4,8,9 would match it, as would 1,20,21,5,6,7,9, but 1,2,7,8,9 would not, and nor would 1,20,3,4,9.
  66. # [04:17] <Hixie> The question is, what's a good way to represent these patterns in memory that is both fast to evaluate and reasonably memory efficient?
  67. # [04:17] <Hixie> The quickest way to evaluate them seems to be to compute every match and then form a state machine tree to walk down, but that is pathalogical in some common cases.
  68. # [04:17] <Hixie> For example one-or-more-of(one-or-more-of(1,2,3),one-or-more-of(4,5,6),one-or-more-of(7,8,9)) has 495 permutations if I worked it right.
  69. # [04:17] <Hixie> I tried looking up things like "how to compile regular expressions" but it's all about how to use them, not how to compile them.
  70. # [04:23] * Joins: knowtheory (~knowtheor@bas5-london14-1177678243.dsl.bell.ca)
  71. # [04:36] <roc> maybe just keep a set of positions within your tree
  72. # [04:36] <roc> and scan the input updating that set after each number
  73. # [04:37] * Joins: JusticeFries (~justicefr@65.100.130.168)
  74. # [04:39] <roc> depending on your workload, you could compile it to a nondeterministic finite state machine and minimize the number of states using standard algorithms, but that adds quite a lot of complexity and may not perform any better
  75. # [04:43] <Hixie> fair enough
  76. # [04:44] <Hixie> thanks
  77. # [04:44] * Joins: kennyluck (~kennyluck@tea04.w3.mag.keio.ac.jp)
  78. # [04:46] <doublec> Hixie, did you come across Russ Cox's articles on compiling regular expressions?
  79. # [04:46] <doublec> eg: http://swtch.com/~rsc/regexp/regexp3.html
  80. # [04:46] <Hixie> i did not, will read, thanks
  81. # [04:48] * Quits: Morphous (jan@unaffiliated/amorphous) (Ping timeout: 246 seconds)
  82. # [04:48] * Quits: knowtheory (~knowtheor@bas5-london14-1177678243.dsl.bell.ca) (Quit: Computer has gone to sleep)
  83. # [04:53] * Joins: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net)
  84. # [04:58] * Quits: miketaylr (~miketaylr@24.42.95.234) (Quit: Leaving...)
  85. # [05:00] <othermaciej> Hixie: isn't that effectively a regular expression?
  86. # [05:00] <Hixie> yes
  87. # [05:00] <othermaciej> I'm pretty sure your language is a regular language
  88. # [05:00] <Hixie> hence my looking up stuff on compiling regexps
  89. # [05:00] <othermaciej> in which case, my suggestion would be to express the problem in a form in which you can use an out-of-the-box regexp engine
  90. # [05:00] <Hixie> doublec's url got me something more useful though
  91. # [05:00] <Hixie> yeah, that might be a good idea
  92. # [05:01] <Hixie> part of the goal here is to learn more about how to write this kind of thing, though
  93. # [05:01] <othermaciej> if you really want to hand-code something, a DFA would be most efficient for matching
  94. # [05:01] <Hixie> cool
  95. # [05:01] <othermaciej> though it could be costly to compute up front
  96. # [05:01] <othermaciej> I've seen implementations that do lazy NFA-to-DFA conversion, but that is complicated
  97. # [05:01] <Hixie> in this case, that's turns out to not be an issue
  98. # [05:02] <Hixie> since the compilation step is far removed from the matching step
  99. # [05:02] <Hixie> and only the latter is time-sensitie
  100. # [05:02] <Hixie> ve
  101. # [05:02] * Joins: knowtheory (~knowtheor@bas1-london16-1176190282.dsl.bell.ca)
  102. # [05:02] <othermaciej> a DFA would be faster to match against than an NFA
  103. # [05:04] <othermaciej> you don't have to compute every match to make a state machine
  104. # [05:04] * Joins: Morphous (jan@unaffiliated/amorphous)
  105. # [05:04] <roc> yes
  106. # [05:04] <roc> the only other thing you have to worry about is DFA size explosion
  107. # [05:05] <othermaciej> (otherwise you'd have a hell of a time compiling any regexp that uses the * operator)
  108. # [05:10] <Hixie> the case i'm having the most trouble with when converting this to a state machine is the "zero or more of the following, in any order: ..." expression
  109. # [05:10] <Hixie> (which i notice regular expressions don't really support)
  110. # [05:10] <Hixie> (but which is quite important for my application)
  111. # [05:11] <roc> isn't that just (A | B | C | D)* ?
  112. # [05:11] <Hixie> sorry, i forgot to clarify: no duplicates
  113. # [05:11] <roc> ah right
  114. # [05:12] <Hixie> in my original approach earlier today i was considering just mutating my state machine as i walked it
  115. # [05:12] <Hixie> but that doesn't work so well with either the back-tracking or "following all states at once" approaches
  116. # [05:13] <roc> yeah you need 2^N states for that
  117. # [05:13] <roc> so a DFA is not going to work too well if you have more than a small number of alternatives
  118. # [05:13] <Hixie> yeah, that's been my conclusion too
  119. # [05:14] * Joins: miketaylr (~miketaylr@24.42.95.234)
  120. # [05:14] * Quits: miketaylr (~miketaylr@24.42.95.234) (Excess Flood)
  121. # [05:17] <othermaciej> zero or more with no duplicates shouldn't require 2^N states
  122. # [05:17] <othermaciej> it would be O(N^2) states
  123. # [05:18] * Joins: miketaylr (~miketaylr@24.42.95.234)
  124. # [05:18] * Quits: miketaylr (~miketaylr@24.42.95.234) (Excess Flood)
  125. # [05:19] * Joins: miketaylr (~miketaylr@24.42.95.234)
  126. # [05:19] * Quits: miketaylr (~miketaylr@24.42.95.234) (Excess Flood)
  127. # [05:19] <Hixie> my N will be around 10 for many of these patterns
  128. # [05:19] <Hixie> and many patterns will have several of these and/or nest them
  129. # [05:20] <othermaciej> 10^2 is not that big
  130. # [05:22] <othermaciej> actually I guess I am oversimplifying things, since it's variable length, the number of states depends on the following operator
  131. # [05:22] <othermaciej> in an NFA it would be O(N^2) for sure
  132. # [05:26] <roc> I'm confused
  133. # [05:27] <roc> if you have N possible objects and you have to avoid duplicates, then at any given point in matching a string, you have to remember which subset of the N objects you have seen so far
  134. # [05:27] <roc> that's 2^N states
  135. # [05:27] <roc> for a DFA
  136. # [05:33] * Quits: Henrik`G (~hb@c83-249-67-192.bredband.comhem.se) (Quit: Leaving...)
  137. # [05:38] <Hixie> for zero-or-more (no duplicates) and N=3, i count 10 states
  138. # [05:38] <Hixie> (not counting the terminal state)
  139. # [05:39] <Hixie> for N=2 i count 3 states
  140. # [05:40] <Hixie> N=3 is just three N=2s with a state on the front
  141. # [05:41] <Hixie> assuming N=4 is four N=3s with a state on the front, that'd be 41 states for N=4
  142. # [05:42] <Hixie> (this is for an NFA, obviously, since I'm ignoring whatever comes next)
  143. # [05:42] <Hixie> (so one of the transitions at each state is to just move on to the next part of the NFA)
  144. # [05:45] <Hixie> http://www.research.att.com/~njas/sequences/A002627
  145. # [05:47] <Hixie> that list gets way out of hand far too quickly
  146. # [05:47] <Hixie> N=8 -> 69281 states
  147. # [05:47] <Hixie> N=13, which is plausible for my application, would have 10699776686 states
  148. # [05:50] <Hixie> what i need is a kind of NFA where i synthesis new states as i am walking it
  149. # [05:50] <Hixie> that might work
  150. # [05:58] * Joins: alt-dot-net-geek (~alt-dot-n@adsl-4-232-123.mem.bellsouth.net)
  151. # [06:02] <Hixie> yes...
  152. # [06:02] <TabAtkins__> Hixie: How fast does this have to be? Shouldn't be too hard to make an actual greedy backtracer out of what you've got.
  153. # [06:04] <Hixie> well i have to convert it to a serialisable form anyway, might as well convert it to a state machine while i'm atit
  154. # [06:04] <TabAtkins__> Seems easier to just serialize something like you have above, and package it with your matcher.
  155. # [06:04] <Hixie> *shrug*
  156. # [06:05] <Hixie> it's just for fun
  157. # [06:06] <TabAtkins__> All right. I think that actually serializing it as a state machine won't be fun, though. ^_^
  158. # [06:06] <TabAtkins__> But writing a matcher could be.
  159. # [06:07] <Hixie> writing a state machine would be near-trivial if it wasn't for this particularly weird case
  160. # [06:07] * Quits: boblet (~boblet@p1072-ipbf36osakakita.osaka.ocn.ne.jp) (Quit: boblet)
  161. # [06:24] * Quits: boaz (~boaz@64.119.159.231) (Quit: boaz)
  162. # [06:29] * Quits: JoePeck (~jjp@c-24-130-200-51.hsd1.ca.comcast.net) (Quit: -)
  163. # [06:31] * Joins: micheil (~micheil@124-170-199-62.dyn.iinet.net.au)
  164. # [06:34] * Quits: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
  165. # [06:34] * Joins: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
  166. # [06:44] * Joins: boblet (~boblet@p1072-ipbf36osakakita.osaka.ocn.ne.jp)
  167. # [06:51] * Quits: boblet (~boblet@p1072-ipbf36osakakita.osaka.ocn.ne.jp) (Quit: boblet)
  168. # [06:52] * Quits: micheil (~micheil@124-170-199-62.dyn.iinet.net.au) (Remote host closed the connection)
  169. # [06:52] * Joins: micheil (~micheil@124-170-199-62.dyn.iinet.net.au)
  170. # [07:09] * Quits: roc (~roc@203-97-204-82.dsl.clear.net.nz) (Quit: roc)
  171. # [07:36] * Joins: FireFly (~firefly@unaffiliated/firefly)
  172. # [07:45] * Joins: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
  173. # [07:48] * Quits: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 246 seconds)
  174. # [07:49] <theMadness> Wait a minute, the specs are written in html4.01
  175. # [07:50] * Joins: maikmerten (~merten@ls5dhcp196.cs.uni-dortmund.de)
  176. # [07:53] * Quits: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
  177. # [07:53] * Joins: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
  178. # [07:54] * Joins: jstar-taiwan (~jstar-tai@220-141-35-226.dynamic.hinet.net)
  179. # [07:55] <jstar-taiwan> hi, is there a way to get canvas fallback working when JS is disable in Firefox ?
  180. # [07:59] * Quits: cpearce (~cpearce@203-97-204-82.dsl.clear.net.nz) (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.0.15/2009101909])
  181. # [08:01] * Joins: Traveler (~traveler@host227-170-dynamic.30-79-r.retail.telecomitalia.it)
  182. # [08:02] * Quits: Traveler (~traveler@host227-170-dynamic.30-79-r.retail.telecomitalia.it) (Client Quit)
  183. # [08:08] * Joins: myakura (~myakura@p2062-ipbf37marunouchi.tokyo.ocn.ne.jp)
  184. # [08:09] * Quits: jwalden (~waldo@c-71-202-165-226.hsd1.ca.comcast.net) (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.2/20100122095031])
  185. # [08:13] * Quits: cardona507 (~cardona50@c-67-180-160-250.hsd1.ca.comcast.net) (Quit: zzzzz)
  186. # [08:26] * Quits: TabAtkins__ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
  187. # [08:26] * Joins: TabAtkins___ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net)
  188. # [08:27] * Joins: JoePeck (~jjp@c-24-130-200-51.hsd1.ca.comcast.net)
  189. # [08:32] <TabAtkins___> theMadness: Yeah, w3c doesn't yet allow their specs to be written in HTML5, and it's too much effort to write the WHATWG version in HTML5 and down-convert to HTML4 for the w3c version.
  190. # [08:42] * Joins: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl)
  191. # [08:46] * Quits: JusticeFries (~justicefr@65.100.130.168) (Remote host closed the connection)
  192. # [08:46] * Joins: JusticeFries (~justicefr@108.116.1.86)
  193. # [08:46] * Joins: zalan (~zalan@catv-89-135-108-81.catv.broadband.hu)
  194. # [08:53] <jstar-taiwan> any tutorial explaining how to add link to a canvas text ?
  195. # [08:54] * Joins: roc (~roc@121-72-220-19.dsl.telstraclear.net)
  196. # [08:57] * Quits: TabAtkins___ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
  197. # [08:58] * Quits: JoePeck (~jjp@c-24-130-200-51.hsd1.ca.comcast.net) (Quit: -)
  198. # [08:59] * Quits: FireFly (~firefly@unaffiliated/firefly) (Quit: null)
  199. # [09:00] * Joins: TabAtkins__ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net)
  200. # [09:01] <Hixie> TabAtkins__: actually the whatwg one is written in HTML5 and I have a script to down-convert it to HTML4 for the W3C
  201. # [09:01] <Hixie> it takes out some of the examples that use HTML5
  202. # [09:01] <TabAtkins__> Hm. I thought I'd heard you saying the opposite. Shrug.
  203. # [09:02] <micheil> Hixie: I've finally got the draft75 websocket server working in node, and it's written in a way to also be able to easily work with draft76
  204. # [09:02] <micheil> (it's just a matter of sorting out the handshaking code)
  205. # [09:04] * Joins: pesla (~retep@188.202.125.121)
  206. # [09:04] <micheil> Hixie: is draft76 going to become draft76 on the ieft site?
  207. # [09:06] * Quits: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net) (Quit: othermaciej)
  208. # [09:08] * Joins: mpt (~mpt@canonical/mpt)
  209. # [09:13] <Hixie> micheil: the ietf asked me to stop sending them updates because they couldn't cope with the volume of updates, so no idea
  210. # [09:13] <Hixie> as far as i'm concerned, -75 is long dead
  211. # [09:13] <micheil> oh, righteo
  212. # [09:13] <Hixie> if i'd still been sending updates, -76 would actually be like -90 or so by now
  213. # [09:13] <micheil> yeah, -75 is still the one supported by chrome (and other clients), so it's the one I must have work
  214. # [09:14] <micheil> is there a way to see the changes made to the spec (like a git diff)
  215. # [09:14] <Hixie> svn diffs of all the changes made to the whatwg specs are at http://html5.org/tools/web-apps-tracker
  216. # [09:15] <Hixie> there's no per-section breakdown
  217. # [09:15] <micheil> there's just three sources to read the spec, so it sometimes gets confusing as to which one to conform to
  218. # [09:15] <Hixie> well right now it's too early to be doing anything but experimental work, so it's not a big deal
  219. # [09:16] <micheil> well, true, although, I'd like to be able to make my websocket server ready for when we do see a final version of the spec
  220. # [09:18] <micheil> in node, we've just added in support for things like http upgrade, so that when a client requests an upgrade (eg a websocket server), it can be handled appropriately, while still allowing a http server to function normally
  221. # [09:18] * Joins: cpearce (~cpearce@ip-118-90-98-30.xdsl.xnet.co.nz)
  222. # [09:18] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 264 seconds)
  223. # [09:20] * Joins: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net)
  224. # [09:20] <hsivonen> http://www.w3.org/Bugs/Public/show_bug.cgi?id=8979 interesting WONTFIX
  225. # [09:20] * Joins: harig (~harig@202.164.55.82)
  226. # [09:21] * Quits: harig (~harig@202.164.55.82) (Client Quit)
  227. # [09:22] * Joins: Traveler (~traveler@host227-170-dynamic.30-79-r.retail.telecomitalia.it)
  228. # [09:23] <Traveler> hi
  229. # [09:25] * Quits: Traveler (~traveler@host227-170-dynamic.30-79-r.retail.telecomitalia.it) (Client Quit)
  230. # [09:27] * Quits: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net) (Quit: othermaciej)
  231. # [09:37] * Quits: TabAtkins__ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
  232. # [09:45] * Joins: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
  233. # [09:51] * Quits: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl) (Quit: Disconnected...)
  234. # [09:52] * Joins: JonathanNeal__ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
  235. # [09:54] * Quits: scotfl (~scotfl@aeryn.scotfl.net) (Ping timeout: 252 seconds)
  236. # [09:54] * Joins: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl)
  237. # [09:54] * Quits: jgraham (~jgraham@web22.webfaction.com) (Ping timeout: 245 seconds)
  238. # [09:54] * Quits: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds)
  239. # [09:56] * Joins: jgraham (~jgraham@web22.webfaction.com)
  240. # [09:56] * Quits: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl) (Client Quit)
  241. # [10:00] * Joins: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl)
  242. # [10:00] * Joins: scotfl (~scotfl@aeryn.scotfl.net)
  243. # [10:06] <hsivonen> Is there anything is the spec that disassociates form-associated elements from their forms when the form-associated elements are re-inserted into a document?
  244. # [10:06] <hsivonen> in particular, when the fragment created by the fragment parsing algorithm is inserted by the innerHTML setter
  245. # [10:07] <Hixie> yes
  246. # [10:07] <hsivonen> this? http://www.whatwg.org/specs/web-apps/current-work/#dfnReturnLink-11
  247. # [10:07] <Hixie> "When a form-associated element's ancestor chain changes, e.g. because it or one of its ancestors was inserted or removed from a Document, then the user agent must reset the form owner of that element."
  248. # [10:08] <Hixie> (dfnReturnLink are dynamic and not portable)
  249. # [10:08] * Joins: mpt (~mpt@canonical/mpt)
  250. # [10:08] <hsivonen> Hixie: ok. thanks
  251. # [10:08] * Joins: Necrathex (~bleptop@212-123-163-12.ip.telfort.nl)
  252. # [10:08] <Hixie> see http://www.whatwg.org/specs/web-apps/current-work/complete.html#concept-form-association
  253. # [10:08] <Hixie> there's various other conditions that reset it
  254. # [10:08] * Quits: cpearce (~cpearce@ip-118-90-98-30.xdsl.xnet.co.nz) (Read error: Connection reset by peer)
  255. # [10:09] * Joins: cpearce (~cpearce@ip-118-90-98-30.xdsl.xnet.co.nz)
  256. # [10:09] <hsivonen> next question: can the parser-created associations ever be observed in the fragment case? Maybe when createContextualFragement has been called but the fragment hasn't been inserted?
  257. # [10:09] * Joins: svl (~chatzilla@a194-109-2-65.dmn.xs4all.nl)
  258. # [10:10] <hsivonen> I wonder if the parser-created associations should simply be turned off in the fragment case
  259. # [10:10] <Hixie> unless i made a pretty serious mistake, there's no way to observe innerHTML until after it's in the document
  260. # [10:11] <hsivonen> createContextualFragment in anyone's spec yet?
  261. # [10:11] <hsivonen> that is, who should I bother about it?
  262. # [10:11] <Hixie> what's createContextualFragment?
  263. # [10:12] <hsivonen> Hixie: it's a Mozilla/Netscape ad hoc API that got cloned by WebKit and (IIRC) Presto
  264. # [10:12] <Hixie> oh jeez
  265. # [10:12] <zcorpan> http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/018892.html
  266. # [10:12] <Hixie> will you people stop making up new apis and implementing them widely
  267. # [10:12] <Hixie> i have enough trouble keeping track of the ones _i_ make up
  268. # [10:12] <Hixie> oh, it's on DOMRange
  269. # [10:12] <Hixie> ok
  270. # [10:12] <Hixie> well i expect i'll have to spec that one day
  271. # [10:12] <Hixie> but not any time soon
  272. # [10:13] <hsivonen> hmm. can a form be submitted if it hasn't been inserted into a document?
  273. # [10:13] <hsivonen> and if it can, do people do it?
  274. # [10:13] <Hixie> dunno, see the spec
  275. # [10:13] <Hixie> what does it say?
  276. # [10:14] <hsivonen> it doesn't work if there's no associated browsing context
  277. # [10:15] <zcorpan> hsivonen: in all browsers?
  278. # [10:15] <Hixie> so yes?
  279. # [10:15] <hsivonen> but a fragment that hasn't been inserted still has an associated document which has a browsing context
  280. # [10:15] <hsivonen> Hixie: looks like it can be submitted per spec
  281. # [10:15] <Hixie> cool
  282. # [10:15] <Hixie> makes sense i guess
  283. # [10:16] <hsivonen> which means that it theory there can be someone somewhere calling createContextualFragment with a malformed form and calling .submit() on it
  284. # [10:16] <hsivonen> s/it/in/
  285. # [10:16] <Hixie> when i spec createContextFragment, it'll still be "inserted into a document"
  286. # [10:17] <hsivonen> Hixie: I don't follow. Surely the fragment has an owner document but it's not inserted
  287. # [10:18] <Hixie> "inserted into a document" doesn't mean what it sounds like
  288. # [10:18] <Hixie> it's named that way because in most cases that's what happens
  289. # [10:18] <Hixie> hm actually i'm wrong
  290. # [10:18] <Hixie> nevermind
  291. # [10:18] <Hixie> i was thinking of xbl
  292. # [10:19] <Hixie> i think the spec for form controls should be changed to just refer to the home subtree changing
  293. # [10:19] <Hixie> or something
  294. # [10:19] <Hixie> but i've not really paged any of this stuff in
  295. # [10:19] <Hixie> so i could be talking nonsense
  296. # [10:31] <hsivonen> shepazu: any news on the SVG load event?
  297. # [10:32] <jstar-taiwan> how am I supposed to add link to a <canvas> ?
  298. # [10:32] <hsivonen> shepazu: I just realized that one thing to consider is whether to fire the SVG load event when <svg> is parsed in an innerHTML setter
  299. # [10:47] <jstar-taiwan> how am I supposed to add link to a <canvas> ?
  300. # [10:48] * Joins: ROBOd (~robod@92.86.241.52)
  301. # [10:49] <Hixie> jstar-taiwan: use an onclick handler
  302. # [10:49] <jstar-taiwan> Hixie, there is no native way to do this o_O ?
  303. # [10:53] <Hixie> no, intentionally
  304. # [10:53] <webben> jstar-taiwan: Note also http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#focus-management-0
  305. # [10:53] <Hixie> if you want to have interactive graphics, use svg
  306. # [10:53] <Hixie> or html
  307. # [10:53] <Hixie> <canvas> is meant for scripted graphics
  308. # [10:53] <jstar-taiwan> Hixie, but SVG is not supported correctly
  309. # [10:54] <webben> jstar-taiwan: Where?
  310. # [10:54] <jstar-taiwan> webben, IE
  311. # [10:54] <Hixie> IE doesn't do canvas either
  312. # [10:54] <webben> jstar-taiwan: http://code.google.com/p/svgweb/
  313. # [10:57] <jstar-taiwan> I understand there is way to get SVG or other w3c standards to work on IE, but it's not native
  314. # [10:57] <Hixie> IE doesn't support <canvas> either
  315. # [11:00] <theMadness> Uh, my mail made it through to www-style.
  316. # [11:01] * Joins: gna (~gna@212-123-163-12.ip.telfort.nl)
  317. # [11:01] <jstar-taiwan> Hixie, oh~ indeed I thought that IE8 add already a bit of support for it (i'm on linux)
  318. # [11:01] <webben> Nope.
  319. # [11:02] <webben> jstar-taiwan: Both svgweb and excanvas fake IE support with VML.
  320. # [11:02] <hsivonen> webben: doesn't svgweb use Flash?
  321. # [11:03] <webben> oh, yeah, sorry
  322. # [11:04] <jstar-taiwan> webben, Hixie does inline SVG work on IE8 ??
  323. # [11:04] <Hixie> no
  324. # [11:04] <Hixie> SVG and canvas only work in firefox, webkit browsers, and opera
  325. # [11:05] <zcorpan> the ie9 preview has partial support for svg but no canvas
  326. # [11:05] <zcorpan> i speculate that some future ie9 preview will also have partial support for canvas
  327. # [11:05] <theMadness> Which is weird considering all the effort they are putting into making it a sort of directx thingie.
  328. # [11:06] <roc> and considering canvas is a lot easier to implement
  329. # [11:08] <jstar-taiwan> argh~ why do IE team take so much time to implement basic ~.~
  330. # [11:09] <jstar-taiwan> anyway do you have a sample on how to add links to a <canvas> ?
  331. # [11:10] <Hixie> if you're needing to add links to canvas you're almost certainly misusing canvas
  332. # [11:11] <jstar-taiwan> I'm willing to provide an alternative to a flash diagram
  333. # [11:12] * Joins: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se)
  334. # [11:12] <Hixie> why not use svg?
  335. # [11:12] <jstar-taiwan> Hixie, it's a kind of pie chart with label which display text when clicked
  336. # [11:13] <hsivonen> jstar-taiwan: svg works for that use case better
  337. # [11:13] <jstar-taiwan> I wanted to try <canvas> and thought it was better supported
  338. # [11:15] <hsivonen> canvas is more of a buzzword than svg, but for almost all non-game use cases svg is more appropriate
  339. # [11:19] <jstar-taiwan> yeap I tried it to know a bit more and it seem to bit another blob technology
  340. # [11:20] <jgraham> hsivonen: I'm pretty sure I have written code that depends on submitting non-inserted forms
  341. # [11:20] <jgraham> (unless it doesn't work in which case I haven't, obviously)
  342. # [11:22] <zcorpan> wonder why http://software.hixie.ch/utilities/js/live-dom-viewer/saved/471 throws in opera
  343. # [11:23] <zcorpan> also throws in firefox
  344. # [11:25] <zcorpan> seems annoying to have to create a new event and copy all properties
  345. # [11:27] <hsivonen> jgraham: did you also use createContextualFragment with a malformed form?
  346. # [11:28] <zcorpan> of course he did
  347. # [11:28] <zcorpan> and he put it in a library that was reused all over the place
  348. # [11:29] <jgraham> hsivonen: No :p
  349. # [11:29] <hsivonen> jgraham: good :-)
  350. # [11:29] * jgraham still doesn't know what createContextualFragment does
  351. # [11:30] <jgraham> I would say that prevents me from using it but the web is empirical evidence against that line of thought
  352. # [11:30] <hsivonen> jgraham: it invokes the fragment parsing algorithm with a context node and a string to parse and returns a DocumentFragment
  353. # [11:30] <hsivonen> jgraham: it's like an innerHTML setter that gives you the fragment
  354. # [11:31] <jgraham> Doesn't it work to createElement a context element .innerHTML it and read the children?
  355. # [11:31] <jgraham> Might not be such a clean API though
  356. # [11:31] <hsivonen> jgraham: createContextualFragment predates innerHTML in Gecko, IIRC
  357. # [11:32] <hsivonen> jgraham: from the era when IEism were bad but creating own vendor-specific ad hoc APIs was OK
  358. # [11:32] <hsivonen> *IEisms
  359. # [11:32] <jgraham> Oh
  360. # [11:34] <hsivonen> I'd have to reread the CVS logs, but IIRC the use case was something in Netscape Composer and the API was exposed to the Web as a side effect
  361. # [11:36] <zcorpan> how disappointing, i thought the wine IE in crossover would use trident, but it uses gecko 1.8
  362. # [11:36] <zcorpan> does ie throw if you click the border in http://software.hixie.ch/utilities/js/live-dom-viewer/saved/471 ?
  363. # [11:44] * Quits: Lachy (~Lachlan@85.196.122.246) (Quit: This computer has gone to sleep)
  364. # [11:45] <zcorpan> oh ie doesn't have dispatchEvent at all
  365. # [11:51] * Quits: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net) (Ping timeout: 245 seconds)
  366. # [11:54] * Joins: Lachy (~Lachlan@pat-tdc.opera.com)
  367. # [11:57] * Joins: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net)
  368. # [12:06] * Joins: smaug___ (~chatzilla@cs181150024.pp.htv.fi)
  369. # [12:23] * Quits: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net) (Ping timeout: 252 seconds)
  370. # [12:23] * Quits: roc (~roc@121-72-220-19.dsl.telstraclear.net) (Ping timeout: 252 seconds)
  371. # [12:24] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 246 seconds)
  372. # [12:26] * Joins: mpt (~mpt@canonical/mpt)
  373. # [12:30] * Joins: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net)
  374. # [12:30] * Joins: roc (~roc@121-72-189-107.dsl.telstraclear.net)
  375. # [12:34] * Quits: jstar-taiwan (~jstar-tai@220-141-35-226.dynamic.hinet.net) (Quit: Leaving)
  376. # [12:42] * Quits: Lachy_ (~Lachy@pat-tdc.opera.com) (Quit: Leaving)
  377. # [12:46] * Quits: zalan (~zalan@catv-89-135-108-81.catv.broadband.hu) (Ping timeout: 260 seconds)
  378. # [12:54] * Joins: workmad3 (~workmad3@cpc3-bagu10-0-0-cust651.1-3.cable.virginmedia.com)
  379. # [12:56] <hsivonen> The Key Points slide at http://www.robglidden.com/2009/09/how-to-fix-dtv-patent-pools/ is interesting
  380. # [12:56] <hsivonen> looks like the TV people aren't too happy about MPEG encumberances, either
  381. # [13:00] <roc> Rob Glidden sounds like an interesting person
  382. # [13:05] * Joins: AnthonyCat (~AnthonyCa@CPE-58-175-25-194.mqdl1.lon.bigpond.net.au)
  383. # [13:07] * Quits: AnthonyCat (~AnthonyCa@CPE-58-175-25-194.mqdl1.lon.bigpond.net.au) (Client Quit)
  384. # [13:09] * Joins: zalan (~zalan@catv-89-135-108-81.catv.broadband.hu)
  385. # [13:09] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 268 seconds)
  386. # [13:09] <hsivonen> hmm. the fake Gtk menus in Opera 10.52 have the ancient bug that prevents diagonal mouse movement to a submenu
  387. # [13:10] <hsivonen> for Firefox and Chrome get this right in their fake Gtk menus
  388. # [13:10] <hsivonen> s/for/both/
  389. # [13:11] <roc> doesn't Chrome use real Gtk menus?
  390. # [13:16] <hsivonen> roc: possibly. I thought it used fake Gtk stuff, because the other controls don't look right at all and the title bar is in the uncanny valley
  391. # [13:16] <hsivonen> (specifically, the buttons in the title bar)
  392. # [13:18] <Lachy> hsivonen, that's not really surprising. The fake UI approach causes problems on many platforms, but is unfortunately how things are being done for cross platform development.
  393. # [13:19] <Lachy> I've unsuccessfully argued against the fake UI approach before
  394. # [13:20] <roc> the thing about browsers is that they have to go for the fake UI approach for Web content
  395. # [13:20] <hsivonen> looks like OO.o has the same bug
  396. # [13:20] <roc> so given you have to tackle a lot of the hard fake UI problems anyway, it makes it that much more attractive for your actual browser UI
  397. # [13:21] <Lachy> roc, yes, for web content, fake UI is essential. But for browser chrome, I believe that only native UI will give optimal results.
  398. # [13:21] <roc> maybe
  399. # [13:22] <Philip`> Lachy: It's better for the chrome to be consistent with the desktop than to be consistent with the browser content?
  400. # [13:22] <roc> another thing is that on Windows and X, the toolkits that give you "real UI" are pretty lame
  401. # [13:23] <Philip`> I guess people who don't use any applications other than their browser would prefer the latter
  402. # [13:23] <Lachy> there are a whole bunch of Mac bugs in both Firefox and Opera that seem to be caused by the fake UI, especially in the nightly builds.
  403. # [13:23] <roc> at least, the ones you can access from C/C++
  404. # [13:24] <Lachy> e.g. After having the browser open for a while, it becomes impossible to resize the window or to click and drag the window from any area of the chrome overlayed with the fake UI.
  405. # [13:25] <roc> I haven't seen that one
  406. # [13:26] <Philip`> roc: Just recompile Gecko in C++/CLI and then use WPF
  407. # [13:26] <Lachy> drop down, auto complete menus (e.g. address bar, search box, text fields) can start to only appear in a fixed position, and moving the window leaves them in place
  408. # [13:26] <Lachy> those 2 bugs require browser restarts to fix
  409. # [13:26] <roc> Philip`: ho ho ho
  410. # [13:26] <Lachy> they happen all the time on Snow Leopard
  411. # [13:26] <roc> I've seen that one
  412. # [13:26] <roc> but dropdowns are an example where using "real UI" is super-problematic in Web content
  413. # [13:27] <roc> Safari's "real UI" version of dropdowns is quite unusable for Web content with a large number of options
  414. # [13:27] <Lachy> roc, they usually occur at the same time. So when you see the drop downs appear in the wrong place, try resizing the window or moving the window by dragging on status bar.
  415. # [13:28] <hsivonen> the checkboxes in fake Gtk menus in Opera look wrong, too
  416. # [13:29] <hsivonen> I wonder how the Opera 10.52 fake Gtk widgets are drawn
  417. # [13:29] <Lachy> hsivonen, please file bugs about those issues
  418. # [13:30] <hsivonen> the pref window in Chrome looks like real Gtk
  419. # [13:30] <hsivonen> but the same window on Chrome OS looks generally terrible and Windows 95esque
  420. # [13:31] <hsivonen> I wonder how the Chrome pref window is implemented
  421. # [13:47] * Quits: JusticeFries (~justicefr@108.116.1.86) (Quit: JusticeFries)
  422. # [13:57] * Joins: FireFly (~firefly@unaffiliated/firefly)
  423. # [14:00] * Joins: mpt (~mpt@canonical/mpt)
  424. # [14:01] * Quits: roc (~roc@121-72-189-107.dsl.telstraclear.net) (Quit: roc)
  425. # [14:04] * Joins: roc (~roc@121-72-189-107.dsl.telstraclear.net)
  426. # [14:15] * Joins: annevk (~annevk@EM111-188-16-55.pool.e-mobile.ne.jp)
  427. # [14:28] <gsnedders> "When content loads in an iframe, after any load events are fired within the content itself, the user agent must queue a task to fire a simple event named load at the iframe element."
  428. # [14:28] * Joins: davidb (~davidb@mozca02.ca.mozilla.com)
  429. # [14:28] <gsnedders> What does it mean for content to load in an iframe?
  430. # [14:29] <gsnedders> I presume any URL change apart from a same-document reference will cause content to load
  431. # [14:30] * Joins: karlushi (~karlushi@fw.vdl2.ca)
  432. # [14:37] * Joins: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464)
  433. # [14:39] * Joins: pmuellr (~pmuellr@nat/ibm/x-liailvgflmcnawxz)
  434. # [14:39] <gsnedders> If you set location.href with a fragment reference, should it be done sync or async (esp. wrt reading back the URI from script)?
  435. # [14:52] * Joins: aroben (~aroben@unaffiliated/aroben)
  436. # [15:06] * Quits: karlushi (~karlushi@fw.vdl2.ca) (Quit: Leaving)
  437. # [15:10] * Quits: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464) (Quit: JusticeFries)
  438. # [15:16] * Quits: jgraham (~jgraham@web22.webfaction.com) (Ping timeout: 245 seconds)
  439. # [15:17] * Joins: JusticeFries (~justicefr@c-67-173-239-97.hsd1.co.comcast.net)
  440. # [15:18] * Joins: jgraham (~jgraham@74.53.238.210)
  441. # [15:24] * Quits: JusticeFries (~justicefr@c-67-173-239-97.hsd1.co.comcast.net) (Quit: JusticeFries)
  442. # [15:24] * Joins: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464)
  443. # [15:29] * Quits: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464) (Ping timeout: 276 seconds)
  444. # [15:33] * Joins: BlurstOfTimes (~blurstoft@168.203.117.131)
  445. # [15:33] * Quits: BlurstOfTimes (~blurstoft@168.203.117.131) (Remote host closed the connection)
  446. # [15:33] * Joins: BlurstOfTimes (~blurstoft@168.203.117.131)
  447. # [15:36] * Quits: BlurstOfTimes (~blurstoft@168.203.117.131) (Client Quit)
  448. # [15:41] * Joins: miketaylr (~miketaylr@38.117.156.163)
  449. # [15:42] * Joins: BlurstOfTimes (~blurstoft@168.203.117.131)
  450. # [15:45] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 245 seconds)
  451. # [15:48] * Joins: mpt (~mpt@canonical/mpt)
  452. # [15:50] * Quits: yutak_home (~kee@N038037.ppp.dion.ne.jp) (Quit: Ex-Chat)
  453. # [15:52] * Joins: davidhund (~davidhund@dnuhd.xs4all.nl)
  454. # [16:00] * Quits: ttepasse (~ttepasse@ip-109-90-160-217.unitymediagroup.de) (Read error: Connection timed out)
  455. # [16:04] * Joins: gregw (~gregwilki@host116-234-static.43-88-b.business.telecomitalia.it)
  456. # [16:09] * Quits: annevk (~annevk@EM111-188-16-55.pool.e-mobile.ne.jp) (Ping timeout: 276 seconds)
  457. # [16:22] * Quits: paul_irish (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net) (Remote host closed the connection)
  458. # [16:22] * Joins: paul_irish (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net)
  459. # [16:31] * Quits: davidb (~davidb@mozca02.ca.mozilla.com) (Quit: davidb)
  460. # [16:32] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 248 seconds)
  461. # [16:34] * Joins: mpt (~mpt@canonical/mpt)
  462. # [16:43] * Quits: nessy (~Adium@124-170-18-159.dyn.iinet.net.au) (Quit: Leaving.)
  463. # [16:48] * Joins: davidb (~davidb@mozca02.ca.mozilla.com)
  464. # [16:49] * Quits: gavin_ (~gavin@firefox/developer/gavin) (Ping timeout: 246 seconds)
  465. # [16:49] * Joins: gavin_ (~gavin@firefox/developer/gavin)
  466. # [16:49] * Joins: xtothey (~ryanblair@ool-457b0b05.dyn.optonline.net)
  467. # [16:56] * Quits: maikmerten (~merten@ls5dhcp196.cs.uni-dortmund.de) (Remote host closed the connection)
  468. # [16:59] <AryehGregor> IEBlog is really hit-and-miss, isn't it? The last post was very informative.
  469. # [16:59] <AryehGregor> I was particularly interested by: "Microsoft receives back from MPEG-LA less than half the amount for the patent rights that it contributes because there are many other companies that provide the licensed functionality in content and products that sell in high volume. Microsoft pledged its patent rights to this neutral organization in order to make its rights broadly available under clear terms, not because it thought this might be a good rev
  470. # [16:59] <AryehGregor> enue stream. We do not foresee this patent pool ever producing a material revenue stream, and revenue plays no part in our decision here. "
  471. # [17:02] <AryehGregor> I guess my working theory at this point is that Microsoft and Apple are probably just following the advice of their lawyers, as they claim, not engaging in some corporate strategy. Maybe Google supports Theora because Google is still ambitious and risk-taking at this point, and hasn't yet lapsed into megacorporate conservatism despite its size.
  472. # [17:02] * Quits: svl (~chatzilla@a194-109-2-65.dmn.xs4all.nl) (Quit: And back he spurred like a madman, shrieking a curse to the sky!)
  473. # [17:03] <tabatkins> We do try, AryehGregor.
  474. # [17:03] * tabatkins is now known as TabAtkins
  475. # [17:05] <jgraham> AryehGregor: I don't think the "they're making vast profits off the patent licensing" theory was ever the most credible one for possible corporate strategy reasons for wanting MPEG-LA to win
  476. # [17:05] * Parts: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
  477. # [17:05] <AryehGregor> What's more credible? That open-source can't pay the fees? Open-source projects are either backed by a company, which can pay the fees; or aren't, in which case they make no money and MPEG-LA doesn't care.
  478. # [17:06] <AryehGregor> s/open-source/open source/
  479. # [17:06] <jgraham> Small players in general (and new entrants to the market) can't pay the fees
  480. # [17:06] <AryehGregor> I thought they were scaled somewhat reasonably. Surely it's not in MPEG-LA's interest to discourage anyone from licensing?
  481. # [17:07] <AryehGregor> It's obviously easier for big companies due to the cap, of course.
  482. # [17:07] * Quits: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl) (Quit: Disconnected...)
  483. # [17:07] <rektide> i dont really understand why browsers dont just use whatever codecs are on the system? or do they, and its just a matter of how the browser supplements the codec collection?
  484. # [17:07] <jgraham> Plus it is a real problem for open source becuase it menas that they have to distribute non-open-source components
  485. # [17:07] <AryehGregor> What do you mean? There are open-source implementations of H.264, no? Chrome uses ffmpeg, for example.
  486. # [17:07] <jgraham> AryehGregor: My understanding is that any web browser would effectively have to pay the same amount
  487. # [17:08] * Joins: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
  488. # [17:08] <hsivonen> rektide: see roc's blog and roc's comment on the IE blog
  489. # [17:08] <jgraham> Although that is not based on anything much
  490. # [17:08] <AryehGregor> Yeah, maybe with a web browser you'd hit the cap very quickly . . .
  491. # [17:08] <rektide> why not use gstreamer, and support everything? there's a gstreamer-ffmpeg, for example.
  492. # [17:08] <AryehGregor> IIRC it's a fee per unit distributed, and if you give copies away you'd have to pay a lot.
  493. # [17:08] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 248 seconds)
  494. # [17:08] <AryehGregor> rektide, we don't want to support "everything", because in practice that means different browsers would support different things and we'd lose interoperability.
  495. # [17:09] <AryehGregor> Plus it means more poorly-tested code paths, larger executable size, etc.
  496. # [17:09] <AryehGregor> jgraham, well, all major platforms except XP and Vista have H.264 codecs installed by default or readily available, AFAIK, so the browser might not have to pay anything at all.
  497. # [17:09] <jgraham> AryehGregor: FWIW I don't consider source-avaliable components that you are prevented from redistributing to be "open source"
  498. # [17:10] <AryehGregor> (probably installed illegally on Linux, but again, nobody cares very much)
  499. # [17:10] * Joins: JohnnyAmerica (~Simon@213-64-113-37-no97.tbcn.telia.com)
  500. # [17:10] <AryehGregor> Well, no, they technically aren't open-source. But in practice open-source people are resigned to having some not-fully-open-source components, unless you're rms.
  501. # [17:10] <hsivonen> AryehGregor: not caring is not a viable solution if you want linux to be successful
  502. # [17:10] <AryehGregor> Even Debian ships binary blobs in the kernel.
  503. # [17:11] <AryehGregor> hsivonen, distributions backed by a company with deep pockets can pay the fees. Others will get ignored indefinitely.
  504. # [17:11] <AryehGregor> Is MPEG-LA going to sue Debian? (Not sure if Debian actually distributes H.264 codecs, to be fair.)
  505. # [17:11] <TabAtkins> I am loathe to depend on the kindness of patent trolls to ignore people who can't legitimately pay.
  506. # [17:11] <AryehGregor> Oh, so am I.
  507. # [17:11] <AryehGregor> I'm talking purely pragmatically here.
  508. # [17:12] * Joins: svl (~chatzilla@a194-109-2-65.dmn.xs4all.nl)
  509. # [17:12] <TabAtkins> In addition, you're ignoring the middle case where people are profitable, but having to pay the licensing fees would cut their margins to thin to survive.
  510. # [17:12] <AryehGregor> This discussion started with the suggestion that Microsoft had ulterior motives for supporting H.264 over Theora, beyond patent risk.
  511. # [17:12] <Dashiva> How about just plain financial motives
  512. # [17:12] <AryehGregor> I don't think that trying to hurt open source is a plausible motive, because open source doesn't have much of a problem with H.264 *in practice*.
  513. # [17:12] <AryehGregor> Dashiva, those being?
  514. # [17:13] <hsivonen> binary blobs are about 1st party copyright or trade secret. h.264 is about 3rd party patents. totally different
  515. # [17:13] <Dashiva> Keeping small players out of the game
  516. # [17:13] <AryehGregor> TabAtkins, I don't think MPEG-LA would go after anyone in that scenario, because it wouldn't be in their interest.
  517. # [17:13] * Quits: rektide (rektide@voodoowarez.com) (Ping timeout: 265 seconds)
  518. # [17:13] <TabAtkins> Though, hurting Firefox in particular could be a valid reason, given their hardline stance on the matter. Whereas supporting Theora would just give Apple decent reason to switch over too.
  519. # [17:13] <AryehGregor> Dashiva, how does it keep small players out of the game? OS X, Windows 7, and most Linux versions already include H.264 somehow, so browsers can just use those.
  520. # [17:14] <TabAtkins> AryehGregor: Again, I think you're assuming far too much from a patent-troll organization.
  521. # [17:14] * Parts: davidhund (~davidhund@dnuhd.xs4all.nl)
  522. # [17:14] <AryehGregor> MPEG-LA is not a patent troll. Patent trolls are organizations that file for patents that are probably frivolous and that they won't ever use.
  523. # [17:14] <AryehGregor> MPEG-LA organizes patents that are definitely not all frivolous, and which its members do use.
  524. # [17:15] <Dashiva> AryehGregor: Apparently that's not a viable solution according to anti-h264 arguments.
  525. # [17:15] <AryehGregor> Dashiva, I'm pretty sure I saw someone from Mozilla saying that if they supported H.264, they would indeed just use the system codec where available, and their reasons for not doing that were mainly idealistic.
  526. # [17:16] <AryehGregor> (not that I disagree with them, although at this point it seems like a lost cause)
  527. # [17:16] <TabAtkins> AryehGregor: The entire codec arena is so fraught with patent peril that the situation is much more ambiguous than you describe. Virtually *anything* you can write in the codec space is covered by a patent somewhere.
  528. # [17:16] <AryehGregor> TabAtkins, Gregory Maxwell of Xiph just wrote a fairly lengthy e-mail saying that that is exactly not the case. It's only what MPEG-LA wants you to think.
  529. # [17:16] <AryehGregor> http://lists.xiph.org/pipermail/theora/2010-April/003769.html
  530. # [17:17] * TabAtkins reads.
  531. # [17:17] <AryehGregor> In practice, H.264 has been used so widely for so many years by so many companies that any patent-holders would have been flushed out by now.
  532. # [17:17] <AryehGregor> Even if they haven't been, then you'd expect them to join the MPEG-LA, not sue random companies licensing H.264.
  533. # [17:17] <AryehGregor> So it's pretty safe.
  534. # [17:18] <AryehGregor> Theora is hopefully safe, but it hasn't had the same level of exposure.
  535. # [17:18] <AryehGregor> If Google goes a few more years without getting sued, it will look a lot more promising.
  536. # [17:19] <TabAtkins> The email makes a convincing case. The fact that he framed it in terms of incentives makes it more believable to me.
  537. # [17:20] <AryehGregor> That's typical of him. The "being extremely convincing and well-thought-out" thing, I mean.
  538. # [17:20] <AryehGregor> I can tell you from personal experience that it is a terrible idea to argue with Greg Maxwell about anything. You will not only lose, you will lose *horribly*.
  539. # [17:20] <AryehGregor> (he's involved in Wikipedia too)
  540. # [17:20] <Lachy> AryehGregor, the MPEG-LA focusses on software patents, which are frivolous, and should never be patented.
  541. # [17:20] <TabAtkins> Hehe.
  542. # [17:21] <Lachy> it just sucks that we have such broken patent systems around the world that permit software patents, either explicitly or through loop holes
  543. # [17:21] <TabAtkins> Lachy: Yeah, but Aryeh's point about them not being a "patent troll" per se is still valid. That's generally reserved for non-practicing patent-holding entities.
  544. # [17:21] <Lachy> TabAtkins, I'm not arguing against that. I know MPEG-LA aren't patent trolls
  545. # [17:21] <AryehGregor> Lachy, it's not just software patents, it's lots of types of patents. Most if not all are believed to be legitimate under current law. That law should be changed, yes, but that doesn't make the patent suits frivolous. A frivolous lawsuit is one that clearly has no basis in law, not one that has a basis in law you don't like.
  546. # [17:21] <TabAtkins> Kk. Well, I agree with you, then.
  547. # [17:22] <Lachy> ok, if that's what you meant by frivolous, then fair enough
  548. # [17:23] <AryehGregor> Greg Maxwell is still technically Chief Research Coordinator at Wikimedia: http://wikimediafoundation.org/wiki/Resolution:Chief_Research_Coordinator
  549. # [17:23] <AryehGregor> Although I think the role is meaningless.
  550. # [17:24] <AryehGregor> (predating the time when Wikimedia had a substantial number of actual employees)
  551. # [17:43] * Joins: rektide (rektide@voodoowarez.com)
  552. # [17:51] * Quits: svl (~chatzilla@a194-109-2-65.dmn.xs4all.nl) (Quit: And back he spurred like a madman, shrieking a curse to the sky!)
  553. # [17:56] * Quits: wycats (~wycats@c-69-181-216-213.hsd1.ca.comcast.net) (Quit: wycats)
  554. # [18:03] * Parts: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
  555. # [18:04] * Quits: Lachy (~Lachlan@pat-tdc.opera.com) (Quit: This computer has gone to sleep)
  556. # [18:04] * Joins: dglazkov (~dglazkov@nat/google/x-bzclkluhokzfaich)
  557. # [18:06] * Quits: pesla (~retep@188.202.125.121) (Quit: ( www.nnscript.com :: NoNameScript 4.21 :: www.esnation.com ))
  558. # [18:07] * Quits: JonathanNeal__ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
  559. # [18:07] * Joins: Maurice (copyman@5ED573FA.cable.ziggo.nl)
  560. # [18:10] * Joins: JoePeck (~jjp@2620:0:1b00:1171:fa1e:dfff:fed9:b9a)
  561. # [18:10] * Quits: Necrathex (~bleptop@212-123-163-12.ip.telfort.nl) (Remote host closed the connection)
  562. # [18:24] * Joins: wycats (~wycats@enginey-9.border1.sfo002.pnap.net)
  563. # [18:34] * Joins: ap (~ap@17.246.17.104)
  564. # [18:35] * Quits: smaug___ (~chatzilla@cs181150024.pp.htv.fi) (Quit: ChatZilla 0.9.86 [Firefox 3.7a4pre/20100324184354])
  565. # [18:38] * Joins: JonathanNeal (~JonathanN@rrcs-76-79-114-210.west.biz.rr.com)
  566. # [18:47] * Joins: maikmerten (~maikmerte@port-92-201-77-167.dynamic.qsc.de)
  567. # [18:48] * Joins: mpt (~mpt@canonical/mpt)
  568. # [18:51] * Quits: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net) (Ping timeout: 264 seconds)
  569. # [18:53] * Quits: aroben (~aroben@unaffiliated/aroben) (Read error: Connection reset by peer)
  570. # [18:54] * Joins: aroben (~aroben@unaffiliated/aroben)
  571. # [18:57] * Joins: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net)
  572. # [19:00] * Joins: mlpug (~mlpug@a88-115-164-40.elisa-laajakaista.fi)
  573. # [19:02] * Quits: mpt (~mpt@canonical/mpt) (Quit: Ex-Chat)
  574. # [19:04] * Joins: jwalden (~waldo@68.65.169.232)
  575. # [19:04] * Joins: cohitre (~cohitre@174-21-104-138.tukw.qwest.net)
  576. # [19:05] * Parts: cohitre (~cohitre@174-21-104-138.tukw.qwest.net)
  577. # [19:08] * aroben is now known as aroben|lunch
  578. # [19:15] * Quits: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se) (Remote host closed the connection)
  579. # [19:21] * Joins: Heimidal (~heimidal@unaffiliated/heimidal)
  580. # [19:25] * Joins: Lachy (~Lachlan@85.196.122.246)
  581. # [19:27] * Joins: boaz (~boaz@64.119.159.231)
  582. # [19:30] * Joins: weinig (~weinig@cpe-66-108-207-62.nyc.res.rr.com)
  583. # [19:31] * Joins: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se)
  584. # [19:35] * Quits: JohnnyAmerica (~Simon@213-64-113-37-no97.tbcn.telia.com) (Read error: Connection reset by peer)
  585. # [19:36] * aroben|lunch is now known as aroben
  586. # [19:39] * Quits: myakura (~myakura@p2062-ipbf37marunouchi.tokyo.ocn.ne.jp) (Quit: Leaving...)
  587. # [19:51] * Joins: sicking (~chatzilla@nat/mozilla/x-hlhdshrpwjlncyql)
  588. # [19:52] <paul_irish> Philip`: how did you come across the obfuscation methods in your font optimizer?
  589. # [19:53] <paul_irish> me and ethan of fontsquirrel were just discussing them. really excellent.
  590. # [19:54] * Joins: svl (~me@ip565744a7.direct-adsl.nl)
  591. # [19:56] <Philip`> paul_irish: I just tried deleting random stuff until finding that browsers rejected them and then went back a step and tried again
  592. # [19:57] <paul_irish> that's excellent. can you summarize what the POST table changes you make are?
  593. # [19:57] <paul_irish> ethan seemed to think this would conflict with the OTS sanitizing/security stuff that Chrome is doing.
  594. # [19:58] <Philip`> paul_irish: They're just http://bitbucket.org/philip/font-optimizer/src/tip/obfuscate-font.pl#cl-76
  595. # [19:59] <Philip`> i.e. keeping some minimum length, setting everything to 0, but setting the version field to 1 because otherwise Chrome didn't like it
  596. # [20:00] <Philip`> (It's quite possible that Chrome might become stricter and reject it)
  597. # [20:01] <paul_irish> cool. i'm going to attempt to write up these obfuscations up as a spec of sorts.. with the goal of foundries agreeing to license their work if implementers agree to this sort of level of protection.
  598. # [20:02] <Philip`> (since it's probably totally invalid - the goal was to be invalid enough that e.g. Windows wouldn't let you install or view the font, but that it would still work in all the browsers I could test)
  599. # [20:02] <Philip`> (If I remember correctly, it does break the font installation on Windows and OS X)
  600. # [20:03] <Philip`> (though obviously it's totally trivial for a tool to fix the font and make it readable again)
  601. # [20:03] <JonathanNeal> That's a really groovy idea Philip`, paul_irish nice work :)
  602. # [20:03] <paul_irish> totally. Ethan actually had a variation of the name table technique, where he uses a unicode smiley face as the Name (instead of empty string).. this prevents installation on Mac
  603. # [20:03] <Philip`> (It's a disgusting evil standards-violating hack, but that's okay)
  604. # [20:04] * Quits: alt-dot-net-geek (~alt-dot-n@adsl-4-232-123.mem.bellsouth.net) (Quit: Leaving)
  605. # [20:05] * Quits: sicking (~chatzilla@nat/mozilla/x-hlhdshrpwjlncyql) (Ping timeout: 246 seconds)
  606. # [20:06] <JonathanNeal> I like evil hacks.
  607. # [20:14] <Dashiva> I guess you'd need some kind of statement from microsoft that they won't make their font importer start supporting those files
  608. # [20:17] * Quits: jwalden (~waldo@68.65.169.232) (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.2/20100122095031])
  609. # [20:20] * Joins: sicking (~chatzilla@nat/mozilla/x-hokmmcvswmueajcf)
  610. # [20:26] * Joins: jgornick (~joe@199.199.212.242)
  611. # [20:31] * Joins: dbaron (~dbaron@nat/mozilla/x-lnfgsrahzsuitgae)
  612. # [20:32] * Joins: miketayl (~miketaylr@38.117.156.163)
  613. # [20:33] * Joins: franksalim (~frank@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net)
  614. # [20:34] * Quits: miketaylr (~miketaylr@38.117.156.163) (Ping timeout: 248 seconds)
  615. # [20:36] * Joins: michaeln (~michaeln@nat/google/x-ywjfngddakcfguis)
  616. # [20:38] * Quits: micheil (~micheil@124-170-199-62.dyn.iinet.net.au) (Quit: micheil)
  617. # [20:38] * Joins: mpt (~mpt@canonical/mpt)
  618. # [20:42] * Quits: Heimidal (~heimidal@unaffiliated/heimidal) (Quit: Leaving...)
  619. # [20:42] * Joins: Heimidal (~heimidal@unaffiliated/heimidal)
  620. # [20:56] * Joins: Peter- (~peter@535172BF.cable.casema.nl)
  621. # [20:57] * Quits: sicking (~chatzilla@nat/mozilla/x-hokmmcvswmueajcf) (Ping timeout: 245 seconds)
  622. # [21:01] * Quits: workmad3 (~workmad3@cpc3-bagu10-0-0-cust651.1-3.cable.virginmedia.com) (Remote host closed the connection)
  623. # [21:02] * Joins: Henrik`G (~hb@c83-249-67-192.bredband.comhem.se)
  624. # [21:10] * Quits: dbaron (~dbaron@nat/mozilla/x-lnfgsrahzsuitgae) (Quit: 8403864 bytes have been tenured, next gc will be global.)
  625. # [21:14] * Quits: xtothey (~ryanblair@ool-457b0b05.dyn.optonline.net) (Quit: xtothey)
  626. # [21:20] * Quits: miketayl (~miketaylr@38.117.156.163) (Remote host closed the connection)
  627. # [21:21] * Joins: miketaylr (~miketaylr@38.117.156.163)
  628. # [21:32] * Joins: boblet (~boblet@p1072-ipbf36osakakita.osaka.ocn.ne.jp)
  629. # [21:41] * Joins: murz (~mmurraywa@wcproxy.msnbc.com)
  630. # [21:42] * Quits: zalan (~zalan@catv-89-135-108-81.catv.broadband.hu)
  631. # [21:44] * Quits: maikmerten (~maikmerte@port-92-201-77-167.dynamic.qsc.de) (Remote host closed the connection)
  632. # [21:47] * Joins: othermaciej (~mjs@17.246.18.210)
  633. # [21:47] * Quits: othermaciej (~mjs@17.246.18.210) (Remote host closed the connection)
  634. # [21:48] * Joins: othermaciej (~mjs@2620:0:1b00:1191:21b:63ff:fe97:5eb)
  635. # [21:48] * Quits: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se) (Remote host closed the connection)
  636. # [21:48] * Quits: miketaylr (~miketaylr@38.117.156.163) (Remote host closed the connection)
  637. # [21:48] * Joins: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se)
  638. # [21:52] * Joins: karlushi (~karlushi@fw.vdl2.ca)
  639. # [21:52] * Joins: dbaron (~dbaron@nat/mozilla/x-cirqkbvupzfnnknj)
  640. # [21:53] * Joins: dave_levin (~dave_levi@nat/google/x-qrwohanhxvnvkvfm)
  641. # [21:54] * Joins: miketaylr (~miketaylr@38.117.156.163)
  642. # [21:54] * Quits: roc (~roc@121-72-189-107.dsl.telstraclear.net) (Ping timeout: 252 seconds)
  643. # [21:59] * Quits: Lachy (~Lachlan@85.196.122.246) (Ping timeout: 276 seconds)
  644. # [22:01] * Quits: mpt (~mpt@canonical/mpt) (Quit: Ex-Chat)
  645. # [22:01] * Joins: ttepasse (~ttepasse@ip-109-90-160-217.unitymediagroup.de)
  646. # [22:03] * Quits: pmuellr (~pmuellr@nat/ibm/x-liailvgflmcnawxz) (Quit: pmuellr)
  647. # [22:03] * Joins: Lachy (~Lachlan@southampton.perfect-privacy.com)
  648. # [22:07] * weinig is now known as weinig|away
  649. # [22:07] * Joins: roc (~roc@121-72-203-198.dsl.telstraclear.net)
  650. # [22:09] * Quits: smaug (~chatzilla@cs181150024.pp.htv.fi) (Ping timeout: 252 seconds)
  651. # [22:10] * Joins: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
  652. # [22:11] * Quits: davidb (~davidb@mozca02.ca.mozilla.com) (Quit: davidb)
  653. # [22:11] * Joins: davidb (~davidb@mozca02.ca.mozilla.com)
  654. # [22:12] * Quits: davidb (~davidb@mozca02.ca.mozilla.com) (Client Quit)
  655. # [22:12] * Joins: smaug (~chatzilla@cs181150024.pp.htv.fi)
  656. # [22:13] <jgraham> Yeah, the font thing sounds bad (corrupting the files and assuming the OS will never support the coruppted file but browsers always will)
  657. # [22:14] * Quits: ttepasse (~ttepasse@ip-109-90-160-217.unitymediagroup.de) (Quit: ?Q)
  658. # [22:14] * Joins: ttepasse (~ttepasse@ip-109-90-160-217.unitymediagroup.de)
  659. # [22:16] * Quits: mlpug (~mlpug@a88-115-164-40.elisa-laajakaista.fi) (Remote host closed the connection)
  660. # [22:17] <zcorpan> http://www.ietf.org/mail-archive/web/hybi/current/msg01830.html - hmmm
  661. # [22:18] <zcorpan> wonder if i should send an email saying "hi there, we're implementing complete.html#websocket over here"
  662. # [22:19] * Joins: xtothey (~ryanblair@ool-18bf1573.dyn.optonline.net)
  663. # [22:23] * Quits: xtothey (~ryanblair@ool-18bf1573.dyn.optonline.net) (Ping timeout: 265 seconds)
  664. # [22:28] * Quits: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se) (Remote host closed the connection)
  665. # [22:28] * Joins: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se)
  666. # [22:29] <franksalim> zcorpan, I think that information would be appreciated
  667. # [22:34] <zcorpan> done
  668. # [22:35] * Quits: roc (~roc@121-72-203-198.dsl.telstraclear.net) (Quit: roc)
  669. # [22:35] <zcorpan> i hope webkit and mozilla are also tracking the latest version
  670. # [22:35] * Joins: KaOSoFt (~KaOSoFt@190.24.156.162)
  671. # [22:36] <jgraham> zcorpan: Mozilla said they were holding off shipping anything untill it stabilised
  672. # [22:37] <zcorpan> ok
  673. # [22:37] <zcorpan> but they're not holding off implementation work, or are they?
  674. # [22:38] <othermaciej> zcorpan: Chrome has already shipped WebSocket, for the next Safari I am not sure whether we will disable it, and we're actively updating trunk to the latest version
  675. # [22:38] <othermaciej> as in, there's patches in progress
  676. # [22:39] <zcorpan> othermaciej: ok, thanks
  677. # [22:40] <zcorpan> othermaciej: any news on URL/url?
  678. # [22:40] <othermaciej> zcorpan: I have not done anything related to it
  679. # [22:40] <zcorpan> ok
  680. # [22:42] <jgraham> zcorpan: http://hacks.mozilla.org/2010/04/websockets-in-firefox/
  681. # [22:46] <othermaciej> jgraham, zcorpan: in any case I think -76 is a big improvement over -75 in terms of security and ease of implementation for combo http/websocket servers
  682. # [22:48] <jgraham> othermaciej: Yeah. I'm not sure what the big problems with the WHATWG version are supposed to be, and whether they are real or not
  683. # [22:48] <gregw> I think -76 has some good ease of implementation improvements, but I'm very dubious about the new handshake
  684. # [22:48] <gregw> it does not work well with HTTP servers
  685. # [22:48] * weinig|away is now known as weinig
  686. # [22:48] <zcorpan> gregw: what part doesn't work well?
  687. # [22:48] <othermaciej> gregw: how is it a problem for HTTP servers? or rather, how is it more of a problem than the -75 version?
  688. # [22:49] <gregw> because of the non content data after the requests
  689. # [22:49] <jgraham> gregw: The random bytes?
  690. # [22:50] <gregw> the IETF WG really wants the handshake to be HTTP compliant until the 101 is sent
  691. # [22:50] <gregw> those bytes break that
  692. # [22:50] <othermaciej> gregw: aren't those bytes effectively just a message body?
  693. # [22:50] <jgraham> Shouldn't the server have done the handoff to the WebSockets specific code by that point? (or treat them like a body)
  694. # [22:50] <gregw> they would be if there was a content length
  695. # [22:51] <othermaciej> I don't think Content-Length is required to send a request body
  696. # [22:51] <gregw> It is in a persistent connection.
  697. # [22:51] * Quits: JoePeck (~jjp@2620:0:1b00:1171:fa1e:dfff:fed9:b9a) (Ping timeout: 276 seconds)
  698. # [22:51] <zcorpan> iirc Hixie argued that the random bytes are content after the upgrade
  699. # [22:51] <gregw> and if we are HTTP complient other status codes might get sent back - like a 401 for authentication
  700. # [22:52] <gregw> zcorpan: no he wants them to not be content
  701. # [22:52] * Quits: ROBOd (~robod@92.86.241.52) (Quit: http://www.robodesign.ro)
  702. # [22:52] <gregw> so they break HTTP servers... so they can't be "tricked" into doing a handshake
  703. # [22:52] * Joins: davidhund (~davidhund@dnuhd.xs4all.nl)
  704. # [22:52] <jgraham> gregw: Are there examples of HTTP servers that cannot implement WebSockets due to this design
  705. # [22:52] <othermaciej> the WebSocket connection can't be used as a persistent HTTP connection
  706. # [22:53] <othermaciej> so Content-Length is not required
  707. # [22:53] <othermaciej> that being said, if it was added, would that address your objection?
  708. # [22:53] * Parts: davidhund (~davidhund@dnuhd.xs4all.nl)
  709. # [22:53] <gregw> sure - but then you might as well make it a header
  710. # [22:53] <gregw> simpler to implement
  711. # [22:53] <gregw> and I'm not sure that 101 can have a body
  712. # [22:54] <othermaciej> these bytes are in the request, not the response
  713. # [22:54] <othermaciej> any request can have a body (other than GET or HEAD) IIRC
  714. # [22:54] <gregw> there are more in the response
  715. # [22:54] <gregw> but actually the response ones are OK
  716. # [22:54] <gregw> as they are after the 101
  717. # [22:54] <gregw> so yeh - if the request ones can be made legal HTTP then I'm happy
  718. # [22:54] <othermaciej> so it sounds to me like nothing here breaks HTTP before the 101 response is sent
  719. # [22:54] * Quits: tndH (~Rob@cpc2-leed18-0-0-cust427.leed.cable.ntl.com) (Ping timeout: 245 seconds)
  720. # [22:55] <gregw> but I still think they are a little bit overkill
  721. # [22:55] <gregw> it does if you send something other than the 101
  722. # [22:55] <gregw> like a 401
  723. # [22:55] <gregw> or a 500
  724. # [22:55] <gregw> etc
  725. # [22:55] <othermaciej> what breaks http in that case?
  726. # [22:55] <gregw> the random bytes will be a bad request
  727. # [22:56] <gregw> unless they are content of the request
  728. # [22:56] <othermaciej> the client doesn't send a 401 though
  729. # [22:56] <othermaciej> the client doesn't know whether it will get a 401
  730. # [22:56] <othermaciej> so that can't possibly affect what is a valid http request
  731. # [22:56] <gregw> OK - let's flip this around... what's the problem with making it a completely legal HTTP request?
  732. # [22:56] <othermaciej> I believe it already is a completely legal HTTP request
  733. # [22:57] <gregw> It is, but the random bytes break the next request in the connection
  734. # [22:57] <othermaciej> if it isn't one, I would consider that a bug
  735. # [22:57] <othermaciej> but there won't be a next request in the connection
  736. # [22:57] <gregw> there can be if a 401 is sent
  737. # [22:57] <zcorpan> i thought the random bytes were there to make it harder to do a cross protocol attack or so
  738. # [22:57] <Hixie> the whole point of the first 8 bytes from the client after the upgrade is to make intermediaries who aren't goign to support websocket fail early
  739. # [22:57] <gregw> the random bytes work just as well in a header
  740. # [22:57] <Hixie> not for the purpose of breaking intermediaries
  741. # [22:58] <jgraham> Are clients already epected to deal with arbitary HTTP responses?
  742. # [22:58] <othermaciej> gregw: in the case of a 401, the client has to close the connection
  743. # [22:58] <gregw> no
  744. # [22:58] <Hixie> yes
  745. # [22:58] <gregw> my no was to jgraham
  746. # [22:59] <othermaciej> the client is not allowed per spec to send another http request down the same connection that was used for an attempted WebSocket upgrade
  747. # [22:59] <gregw> but there is a reasonable level of support in the IETF WG to have that as an option
  748. # [22:59] <gregw> and those bytes make that impossible for little clear benefit
  749. # [22:59] <gregw> othermaciej: why not - that is not compliant HTTP
  750. # [23:00] <othermaciej> what do you mean?
  751. # [23:00] <gregw> the whole point is that before the 101, the connection is-a HTTP request
  752. # [23:00] <othermaciej> the client can close its connection at any time
  753. # [23:00] <gregw> so if client and server agree to use it as a persistent HTTP connection, they can do so
  754. # [23:00] <Hixie> the client is never an http client, it's a websocket client. From the client's perspective, it's always a WebSocket connection.
  755. # [23:00] <othermaciej> tell me what HTTP conformance requirement is violated by closing the connection in response to a 401 (or any non-101 response)
  756. # [23:00] <Hixie> It's only the server who thinks it's HTTP
  757. # [23:00] <gregw> well you client might be, but there are other clients
  758. # [23:00] * Quits: JonathanNeal (~JonathanN@rrcs-76-79-114-210.west.biz.rr.com) (Read error: Connection reset by peer)
  759. # [23:01] <Hixie> an HTTP client isn't going to try to upgrade to WebSocket
  760. # [23:01] <Hixie> and so there's no problem there either
  761. # [23:01] <gregw> there is the use-case that you want to try to do the upgrade, but also request some real content
  762. # [23:01] * Joins: JonathanNeal (~JonathanN@rrcs-76-79-114-210.west.biz.rr.com)
  763. # [23:01] <gregw> so that if you can upgrade you do, if you can't you send some real content
  764. # [23:01] <Hixie> no, there isn't
  765. # [23:01] <gregw> and avoid another RTT
  766. # [23:01] <Hixie> no browser is ever going to do that
  767. # [23:02] <othermaciej> neither the client protocol nor the JS client API support that use case
  768. # [23:02] <gregw> that is what the SPDY guys are interested in
  769. # [23:02] <Hixie> the SPDY guys aren't using websocket
  770. # [23:02] <othermaciej> if you want to propose it, go ahead, but "I want a new feature" is very different from "this breaks HTTP"
  771. # [23:02] <gregw> not yet
  772. # [23:02] * Joins: JoePeck (~jjp@2620:0:1b00:1171:fa1e:dfff:fed9:b9a)
  773. # [23:02] <Hixie> the SPDY guys are never going to use websocket -- websocket is a completely inappropriate protocol for their use case
  774. # [23:02] <gregw> anyway, we've had this debate before... I really am just saying that a lot of -76 is well accepted, but some parts are still being debated
  775. # [23:02] <othermaciej> running SPDY over WebSocket would be silly
  776. # [23:03] <othermaciej> gregw: do you believe -76 has less consensus than -75?
  777. # [23:03] <gregw> I think that lots of -76 has consensus, but that parts do not
  778. # [23:03] <othermaciej> that doesn't answer my question
  779. # [23:03] <gregw> why would running SPDY over websocket be silly? there is interest on the EITF WG list
  780. # [23:03] * Joins: workmad3 (~workmad3@cpc3-bagu10-0-0-cust651.1-3.cable.virginmedia.com)
  781. # [23:03] * Quits: cpearce (~cpearce@ip-118-90-98-30.xdsl.xnet.co.nz) (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.0.15/2009101909])
  782. # [23:04] <gregw> -75 has consensus in as much as it reflects the implementations currently shipping
  783. # [23:04] <othermaciej> because SPDY doesn't need or want an additional framing layer
  784. # [23:04] <gregw> I think we all accept there are problems
  785. # [23:04] * Joins: john_fallows (~j_r_fallo@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net)
  786. # [23:04] <gregw> but it has a framing layer
  787. # [23:04] * Quits: miketaylr (~miketaylr@38.117.156.163) (Remote host closed the connection)
  788. # [23:04] <othermaciej> the only implementation shipping -75 is Chrome and it's in the process of being rewritten to -76
  789. # [23:04] <gregw> so why are we inventing 2 new framing layers that go over HTTP intermediaries
  790. # [23:04] * Joins: sidda (~sidda@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net)
  791. # [23:04] <gregw> surely it would be best to come up with only 1
  792. # [23:04] <franksalim> SPDY is not intended to go over HTTP intermediaries
  793. # [23:04] <gregw> othermaciej: have a read of the list of impls on wikipedia
  794. # [23:05] <gregw> there are 10s
  795. # [23:05] <othermaciej> gregw: the non-browser impls can be upgraded much more readily than browsers, but that being said, has any of those implementors said they prefer -75 to -76?
  796. # [23:05] <jgraham> gregw: There are many server side implementations. But they are worthless without clients
  797. # [23:06] <gregw> well the IETF WG is pretty clear that HTTP compliance is a requirement - I guess it is debatable if -76 meets that or not
  798. # [23:06] <Hixie> given that it takes about 4 hours to write a server-side implementation, i'm not surprised there are a lot of them
  799. # [23:06] <Hixie> :-)
  800. # [23:06] <othermaciej> I'm pretty sure all the client implementations listed in Wikipedia are going to upgrade to -76
  801. # [23:07] <othermaciej> -76 definitely does not meet the HTTP compliance requirement any *less* than -75
  802. # [23:07] <Hixie> (i mean, i've written at least 3 myself)
  803. # [23:07] <othermaciej> it definitely meets it more, and arguably meets it completely
  804. # [23:07] <gregw> Hixie: so are impls less important that clients?
  805. # [23:07] <Hixie> the HTTP compliance requirement isn't even a goal, IMHO.
  806. # [23:07] <Hixie> gregw: server impls are far less important than clients, yes
  807. # [23:08] <gregw> obviously not here... but it is in the IETF WG
  808. # [23:08] <Hixie> i'm in the IETF WG
  809. # [23:08] <Hixie> as is maciej
  810. # [23:08] <gregw> anyway... I'm obviously not making my point here
  811. # [23:08] <gregw> so I'll leave you be
  812. # [23:08] <othermaciej> I'm not sure what's better about -75 than -76
  813. # [23:08] <gregw> no random bytes outside of the request
  814. # [23:08] <gregw> put them in a header and it would be a lot better
  815. # [23:09] <othermaciej> if it contains an actual regression on any requirement relative to -75, then I would see why you might not want to start with it
  816. # [23:09] * Joins: tndH (~Rob@cpc2-leed18-0-0-cust427.leed.cable.ntl.com)
  817. # [23:09] <othermaciej> I don't recall a requirement that the handshake request must not have a body
  818. # [23:10] <othermaciej> certainly that's not required for the "http compliance" requirement
  819. # [23:10] <gregw> I'm cool if they are a legal body
  820. # [23:10] <gregw> but they are not
  821. # [23:10] <othermaciej> -75 also blatantly doesn't meet that requirement
  822. # [23:10] * jgraham would still like examples of actual deployed HTTP servers that cannot cope with -76
  823. # [23:10] <othermaciej> why are they not a legal body?
  824. # [23:10] <Hixie> per HTTP, the eight bytes the client send are the first eight bytes of a second pipelined request
  825. # [23:10] <othermaciej> can you point to a specific conformance requirement in the HTTP RFC that they violate?
  826. # [23:10] <Hixie> that's intentional, the whole point is to break intermediaries who don't know websocket
  827. # [23:11] <gregw> jgraham: it is more about being able to handle non 101 responses. OK currently implemented, but there is interest in 401, 302's etc
  828. # [23:11] <othermaciej> Hixie: so HTTP doesn't allow a request body without Content-Length?
  829. # [23:11] <Hixie> not for GET iirc
  830. # [23:11] <gregw> Hixie: +1
  831. # [23:11] <othermaciej> the WebSocket request is a GET?
  832. # [23:11] <othermaciej> (it doesn't allow a body at all for GET)
  833. # [23:11] <Hixie> yes
  834. # [23:11] <Hixie> yes it does
  835. # [23:11] <Hixie> you can set Content-LEngth with a GET
  836. # [23:11] <gregw> and thus needs a content-length or chunking to have a body
  837. # [23:11] <Hixie> (but nobody does it)
  838. # [23:11] <othermaciej> I see
  839. # [23:11] <othermaciej> would sending a Content-Length be a problem?
  840. # [23:11] <Hixie> gregw: no the whole POINT is to cause the intermediaries to fail
  841. # [23:11] <Hixie> othermaciej: yes, cos then intermediaries wouldn't fail
  842. # [23:12] <gregw> it might cause some intermediaries to fail sometimes
  843. # [23:12] <Hixie> from the point of view of the client, it's not HTTP at all, it's websocket the whole time
  844. # [23:12] <othermaciej> Hixie: do we have data showing that this makes unaware intermediaries fail early?
  845. # [23:12] <gregw> they will fail anyway becuause Upgrade is hop by hop
  846. # [23:12] <Hixie> from the point of view of an HTTP server, it's an HTTP request followed by a bogus request
  847. # [23:12] <gregw> if the intermediary does not know about websocket, it will not forward the upgrade
  848. # [23:12] <othermaciej> (more so than anything else in the handshake)?
  849. # [23:12] <Hixie> from the point of view of a WebSocket server, it's a WebSocket request
  850. # [23:12] <gregw> unless it is a dumb byte copier
  851. # [23:13] <jgraham> I'm not sure what the advantage is of adding the full complexity of HTTP to WebSockets rather than doing it at the application layer
  852. # [23:13] <gregw> in which case the random bytes will be copied
  853. # [23:13] * Quits: sidda (~sidda@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net) (Remote host closed the connection)
  854. # [23:13] <gregw> jgraham: I'm not advocating that
  855. # [23:13] <Hixie> from the point of view of an HTTP+WebSocket server, it's an HTTP request followed by the remainder of the data of what was actually a WebSocket request
  856. # [23:13] <Hixie> othermaciej: i'm aware of at least one intermediary that failed because of this, but i don't have non-anecdotal data yet
  857. # [23:13] <gregw> Hixie: but if you send weboscket data before the 101, then you are not HTTP compliant
  858. # [23:14] <Hixie> gregw: intermediaries don't follow the spec, they pass upgrades through unmodified
  859. # [23:14] <gregw> it is a HTTP connection until the 101 is sent
  860. # [23:14] <othermaciej> Hixie: I guess non-anecdotal data would be what we need to determine if this mechanism is effective for its purpose
  861. # [23:14] <gregw> if intermediaries pass the upgrade unchanged, then they will probaby copy the bytes as well
  862. # [23:14] <Hixie> othermaciej: we have data showing that without this, the handshake "succeeds" in some double-digit number of cases but the first frame sent fails to make it through
  863. # [23:14] <jgraham> gregw: Allowing arbitary response codes seems like more complexity. Maybe not the full comlexity of HTTP
  864. # [23:14] <Hixie> othermaciej: which is basically what this handshake does now
  865. # [23:14] <gregw> or just make it legal HTTP as the IETF wants
  866. # [23:15] <gregw> jgraham: that's only for consenting clients/servers. it is not a MUST requirement
  867. # [23:15] <john_fallows> if you want HTTP intermediaries to fail during the handshake request, why not use POST instead of GET and omit the Content-Length header, that would very likely trigger a 411 Length Required
  868. # [23:15] <othermaciej> Hixie: would it cause a problem to send the random bytes after the "successful" 101 response?
  869. # [23:15] <gregw> jgraham: but if a client and server want to use BASIC or DIGEST auth, then why not let them use it?
  870. # [23:15] <jgraham> gregw: Consenting serves, yes. I don't see how any client could avoid it
  871. # [23:16] <othermaciej> john_fallows: that's a neat idea
  872. # [23:16] <Hixie> gregw: argument from authority has no effect here (invoking the IETF's name won't win you the argument)
  873. # [23:16] <gregw> jgraham: there is no need to follow a 401
  874. # [23:16] <Hixie> gregw: especially since we are part of the IETF WG
  875. # [23:16] <gregw> it's just that the server will only allow clients that do connect
  876. # [23:16] <othermaciej> argument from authority shouldn't win in the IETF either
  877. # [23:16] <Hixie> othermaciej: it doubles the RTT for the handshake
  878. # [23:16] <jgraham> gregw: That's the same as saying "all clients need to implement it"
  879. # [23:16] <othermaciej> Hixie: what about john_fallows's POST idea?
  880. # [23:17] <gregw> jgraham: well all the browsers have it already... so it's not a big deal
  881. # [23:17] <gregw> othermaciej: that is still illegal HTTP
  882. # [23:17] <Hixie> othermaciej: i don't think it would make a difference -- intermediaries appear to be pretty HTTP-stupid. But I'm happy to change it to POST if that makes people happier.
  883. # [23:17] <Hixie> othermaciej: but i don't think it'd make gregw happier
  884. # [23:17] * Joins: sidda (~sidda@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net)
  885. # [23:18] <othermaciej> Hixie: would it be technically legal HTTP?
  886. # [23:18] <jgraham> gregw: I am unconvinced it is that simple, but have no experience with implementing a client
  887. # [23:18] <gregw> Hixie: true. I think it should be HTTP legal until the 101 is received
  888. # [23:18] <Hixie> othermaciej: off-hand, no idea
  889. # [23:19] <othermaciej> I can't find any requirement to send Content-Length in a request
  890. # [23:19] <othermaciej> I guess I need to read the HTTP RFC more carefully
  891. # [23:19] <gregw> without something to indicate the content length, it is not legal
  892. # [23:19] <othermaciej> gregw: or if you have a cite for what conformance requirement is violated, that would help
  893. # [23:19] * Quits: franksalim (~frank@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net) (Ping timeout: 264 seconds)
  894. # [23:19] <zcorpan> are there other ways to make intermediaries fail while being legal http?
  895. # [23:19] <othermaciej> ah:
  896. # [23:19] <gregw> othermaciej: you need to look at RFC2616 in the section about marking body ends
  897. # [23:19] <othermaciej> "For compatibility with HTTP/1.0 applications, HTTP/1.1 requests containing a message-body MUST include a valid Content-Length header field unless the server is known to be HTTP/1.1 compliant."
  898. # [23:20] <Hixie> "The presence of a message-body in a request is signaled by the inclusion of a Content-Length or Transfer-Encoding header field in the request's message-headers."
  899. # [23:20] * Quits: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
  900. # [23:21] <Hixie> gregw: part of the reason you're not convincing me is that you're just saying "you can't do X" without giving me an alternative way of achieving the effect I'm attempting to achieve.
  901. # [23:21] <othermaciej> Hixie: that's not a conformance requirement (and doesn't seem to quite match the server requirements)
  902. # [23:21] <Hixie> gregw: so you just feel like stop energy, you don't seem to be helping.
  903. # [23:21] <gregw> Hixie: true, but I don't think your solution works anyway, and I don't think it is actually possible
  904. # [23:21] <Hixie> othermaciej: oh, good point
  905. # [23:21] <gregw> intermediairies will either be good or they will be stupid byte copiers
  906. # [23:22] <othermaciej> however, what I quoted is a MUST-level requirement for HTTP 1.1 clients
  907. # [23:22] <gregw> your proposal does not help with the later and is not needed for the former
  908. # [23:22] <zcorpan> othermaciej: so if the server is known to be compliant, that MUST doesn't apply
  909. # [23:22] <othermaciej> Hixie: could the random content bytes piggyback on the packet for the first client message?
  910. # [23:22] * Joins: roc (~roc@203-97-204-82.dsl.clear.net.nz)
  911. # [23:22] <gregw> zcorpan: but then it is either a content length or chunking
  912. # [23:22] <othermaciej> zcorpan: right - though connecting to a random server, you have no way to know
  913. # [23:22] <gregw> let me find the section....
  914. # [23:22] <Hixie> gregw: evidence does not bear this out
  915. # [23:22] * Joins: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net)
  916. # [23:23] <gregw> Hixie: then please publish the evidence
  917. # [23:23] <othermaciej> gregw: at least in section 4.4 Message Length, there doesn't seem to be a requirement to that effect
  918. # [23:23] <Hixie> gregw: we have double-digit-percentage numbers of connections in the test who passed through the Upgrade, but did not pass through the first frame
  919. # [23:23] <Hixie> gregw: the data was sent to the hybi list
  920. # [23:23] <zcorpan> othermaciej: right, but it seems reasonable to assume that a server that supports websockets isn't going to be an http/1.0 application
  921. # [23:23] <othermaciej> http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4
  922. # [23:24] <othermaciej> zcorpan: yes, but when JS in the browser initiates the connection, the browser doesn't know if the server actually supports websockets
  923. # [23:24] <othermaciej> zcorpan: in fact the design of the handshake is set up so the browser can find out with good confidence whether the server does in fact support webscocket
  924. # [23:24] <Hixie> othermaciej: (the client in that case is a websocket client, so it isn't bound to HTTP rules)
  925. # [23:25] <othermaciej> Hixie: indeed, except to the extent one accepts the requirement that servers should observe what looks like valid HTTP until they respond with a 101
  926. # [23:25] <gregw> Hixie: so you can make the first message of the websocket connect a check message
  927. # [23:25] <gregw> if a message is not quickly received, then the upgrade did not work
  928. # [23:25] <gregw> and you have fail fast
  929. # [23:26] <gregw> the first message can be an application message if one is available, or some kind of noop ping
  930. # [23:26] <gregw> there is already talk about keep-alives and pings
  931. # [23:26] <gregw> so just send one immediately if there is no application message
  932. # [23:27] <gregw> that also separates out the attack protection mechanism (the random bytes) from the fast fail mechanism
  933. # [23:27] <Hixie> othermaciej: well HTTP 1.1 servers can assume they are HTTP 1.1, so the 1.0 requirement doesn't apply
  934. # [23:27] <Hixie> gregw: how can you do that without requiring an extra RTT?
  935. # [23:28] * Quits: svl (~me@ip565744a7.direct-adsl.nl) (Quit: And back he spurred like a madman, shrieking a curse to the sky.)
  936. # [23:28] <gregw> well if you have an application message, you send that just as you would anyway
  937. # [23:28] <gregw> if you don't then send a ping
  938. # [23:28] * Joins: jwalden (~waldo@68.65.169.207)
  939. # [23:28] <gregw> ok so the fail fast is not as fast
  940. # [23:28] <gregw> the failure has one more RTT
  941. # [23:28] <gregw> but that's only for failures
  942. # [23:28] <Hixie> that makes the client behaviour depnd on JS execution speed, which is an interop nightmare
  943. # [23:29] <Hixie> i'd much rather do what we're doing now
  944. # [23:29] <gregw> no - the browser can send a ping immediately the 101 is received
  945. # [23:29] <Hixie> wait, that won't work anyway
  946. # [23:29] <gregw> but what you are doing now is breaking HTTP and will cause all sorts of future problems
  947. # [23:29] <Hixie> the whole point is the API doesn't say it's connected until it's connected
  948. # [23:30] <Hixie> if we require a ping first, then there's an extra RTT before we're connected
  949. # [23:30] <zcorpan> i don't like adding more latency to the handshake
  950. # [23:30] <Hixie> that's a terrible solution
  951. # [23:30] <Hixie> we're
  952. # [23:30] <Hixie> not
  953. # [23:30] <Hixie> breaking
  954. # [23:30] <Hixie> HTTP
  955. # [23:30] <Hixie> this isn't HTTP
  956. # [23:30] <gregw> it is until the 101 is sent
  957. # [23:30] <Hixie> no, it's not
  958. # [23:30] <Hixie> that's BS
  959. # [23:30] <Hixie> plus, even if it was, as maciej has pointed out, it's not actually invalid
  960. # [23:31] * Quits: Maurice (copyman@5ED573FA.cable.ziggo.nl)
  961. # [23:31] <gregw> you need to have a content length or chunking or one of the self limiting content types to have a content body
  962. # [23:31] <gregw> or you can close the connection... but that's not useful for a request
  963. # [23:32] <Hixie> quote the spec that says that
  964. # [23:32] <Hixie> please
  965. # [23:32] <Hixie> cite the MUST requirement
  966. # [23:32] <gregw> in section 4.4
  967. # [23:32] <gregw> there are only 5 ways
  968. # [23:32] <Hixie> paste the sentence
  969. # [23:32] <gregw> and 1 does not apply, nor does 5
  970. # [23:32] <gregw> so you are left with 2, 3 or 4
  971. # [23:33] <Hixie> 4.4 is all server requirements
  972. # [23:33] <Hixie> except for the HTTP 1.0 compat requirement maciej pasted
  973. # [23:33] <Hixie> which as noted isn't relevant here
  974. # [23:33] * Quits: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se) (Remote host closed the connection)
  975. # [23:33] <gregw> no it is for any HTTP message
  976. # [23:33] * Quits: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net) (Ping timeout: 264 seconds)
  977. # [23:34] <Hixie> it's about how to receive the message
  978. # [23:34] <Hixie> which in the case of a client-sent message, is a server-side requirement
  979. # [23:34] <gregw> it's a HTTP message requirement
  980. # [23:35] <Hixie> no, it's not
  981. # [23:35] <gregw> and the random bytes will break a HTTP connection if the upgrade is not accepted
  982. # [23:35] <Hixie> there's no HTTP connection in that case
  983. # [23:35] <Hixie> the client will abort regardless of the response
  984. # [23:35] <gregw> why?
  985. # [23:35] <Hixie> because the websocket spec requires it to
  986. # [23:35] * Joins: sicking (~chatzilla@nat/mozilla/x-vzleqeqstgheqbyl)
  987. # [23:36] <gregw> but you are not in websockets! the upgrade faile
  988. # [23:36] <gregw> but you are not in websockets! the upgrade failed
  989. # [23:36] <Hixie> if you're not a websocket client, then you didn't send an upgrade request or the 8 random bytes
  990. # [23:36] <zcorpan> gregw: the client is always in websockets
  991. # [23:36] <gregw> so you have a valid HTTP connection that should be able to be used without requirement for another RTT
  992. # [23:37] <gregw> you might be a client that can be websocket or can be something else
  993. # [23:37] <Hixie> the connection itself isn't HTTP or WebSockets or whatnot. That's a meaningless abstraction.
  994. # [23:37] <Hixie> it's just bytes
  995. # [23:37] <gregw> so it tries the upgrade, and if that does not work, keeps using HTTP
  996. # [23:37] <Hixie> what matters is what the peers think is going on
  997. # [23:37] <Hixie> there is no way to try an upgrade and continue using HTTP
  998. # [23:37] <gregw> so you are going to require and extra RTT for all the apps that can't use Websocket
  999. # [23:37] <Hixie> that's a violation of the websocket protocol
  1000. # [23:37] <gregw> just so they can try to use it
  1001. # [23:37] <gregw> but until the 101, you are not in websockets
  1002. # [23:37] <Hixie> there's no other way to use the API
  1003. # [23:37] <gregw> you are in HTTP
  1004. # [23:38] * Joins: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net)
  1005. # [23:38] <Hixie> the client is NEVER in HTTP
  1006. # [23:38] <gregw> there are other clients than JS
  1007. # [23:38] <Hixie> those clients should use TCP
  1008. # [23:38] <Hixie> websockets is irrelevant to those clients
  1009. # [23:38] <gregw> well that's not what is happening out there
  1010. # [23:38] <Hixie> those clients do not need to send the 8 bytes
  1011. # [23:38] <Hixie> they can do whatever they want to upgrade the server
  1012. # [23:38] <gregw> some of them are called browsers!
  1013. # [23:39] <Hixie> you are not making any sense here
  1014. # [23:39] <gregw> well that's a winning argument
  1015. # [23:39] <gregw> l8r
  1016. # [23:40] * Joins: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464)
  1017. # [23:43] <jgraham> FWIW it seems likely to me that non-browser clients for websockets will be used
  1018. # [23:43] * Quits: aroben (~aroben@unaffiliated/aroben) (Read error: Connection reset by peer)
  1019. # [23:44] <Dashiva> Wouldn't they just connect directly with tcp without going via http?
  1020. # [23:44] <jgraham> Because there is value in interacting with the websocket ecosystem outside the browser
  1021. # [23:44] <jgraham> Dashiva: Connect to what?
  1022. # [23:44] <jgraham> Assume some service is provided over websockets for browsers
  1023. # [23:45] <jgraham> And someone wants to develop a custom non-browser app that connets to exactly the same service
  1024. # [23:45] * Joins: cpearce (~cpearce@203-97-204-82.dsl.clear.net.nz)
  1025. # [23:48] * Joins: nessy (~Adium@124-170-18-159.dyn.iinet.net.au)
  1026. # [23:52] <othermaciej> then they couldn't use a general-purpose http client to talk to that service
  1027. # [23:52] * Quits: workmad3 (~workmad3@cpc3-bagu10-0-0-cust651.1-3.cable.virginmedia.com) (Remote host closed the connection)
  1028. # [23:53] <gregw> but they want to be able to tunnel bidirectional communication through a HTTP infrastructure (eg firewalls, proxies and intermediaries)
  1029. # [23:53] <gregw> plus browsers themselves might want to do websocket extensions
  1030. # [23:54] <gregw> so the "can't do it in JS, so can't do it at all" argument is not that valid
  1031. # [23:54] <jgraham> I'm not suggesting a non-browser-client would be a general purpose HTTP client
  1032. # [23:54] <jgraham> It would be custom websockets code
  1033. # [23:54] <othermaciej> I agree that this seems likely
  1034. # [23:55] <jgraham> (this is why I would like the client side to be relatively simple to implement)
  1035. # [23:55] <gregw> jgraham: I don't anybody disagrees with that
  1036. # [23:56] <gregw> but that is not to say that we cannot have optional less simple solutions as well
  1037. # [23:56] <othermaciej> I'm somewhat more willing to impose client-side complexity, because at least browser-hosted clients have to do what it takes to ensure security against cross-protocol attacks
  1038. # [23:57] <jgraham> gregw: I don't really believe in optional features
  1039. # [23:57] <jgraham> othermaciej: agreed that complexity for security is well justified
  1040. # [23:58] <gregw> jgraham: but that says that websocket has to have an authentication system that will keep everybody happy for all the time
  1041. # [23:58] <gregw> and compression that will last forever
  1042. # [23:58] <gregw> jgraham: but I agree that options have to be carefully thought out so they are not by default mandatory
  1043. # [23:59] * Quits: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
  1044. # [23:59] * Joins: cohitre (~cohitre@174-21-104-138.tukw.qwest.net)
  1045. # Session Close: Tue May 04 00:00:00 2010

The end :)