Options:
- # Session Start: Mon May 03 00:00:00 2010
- # Session Ident: #whatwg
- # [00:11] * Quits: FireFly (~firefly@unaffiliated/firefly) (Quit: null)
- # [00:22] * Quits: scotfl (~scotfl@aeryn.scotfl.net) (Read error: Operation timed out)
- # [00:22] * Joins: scotfl (~scotfl@aeryn.scotfl.net)
- # [00:23] * Joins: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
- # [00:24] * Quits: Kuruma_ (~Kuruman@p3016-ipngn2701marunouchi.tokyo.ocn.ne.jp) (Ping timeout: 268 seconds)
- # [00:26] * Quits: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 246 seconds)
- # [00:26] * Quits: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
- # [00:26] * Quits: seventh (galofort@208.98.1.237) (Remote host closed the connection)
- # [00:27] * Joins: TabAtkins__ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net)
- # [00:29] * Quits: dglazkov (~dglazkov@75-37-194-175.lightspeed.lsatca.sbcglobal.net) (Read error: Connection reset by peer)
- # [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.
- # [00:29] <TabAtkins__> That would solve the most pressing styling issues.
- # [00:30] <TabAtkins__> With the structure generally being <details><summary><::disclosure/></summary><::content/></details>.
- # [00:31] <TabAtkins__> Though there are alternate ways a UA could represent <details> that would still work well with ::disclosure and ::content.
- # [00:33] * Joins: Kuruma_ (~Kuruman@p3016-ipngn2701marunouchi.tokyo.ocn.ne.jp)
- # [00:34] <ment> pardon my ignorance, but what's "<::disclosure/>" supposed to mean?
- # [00:35] <ment> (or any tag starting with double-colon)
- # [00:35] <TabAtkins__> A pretend ::disclosure pseudoelement (from CSS).
- # [00:35] <TabAtkins__> Self-closed for example brevity.
- # [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.
- # [00:36] <Dashiva> What happens to content before summary?
- # [00:36] <TabAtkins__> Dashiva: Two <::content> elements?
- # [00:39] <Dashiva> Makes me wonder how browsers would render a <details> with content both before and after the summary
- # [00:39] <TabAtkins__> Me too.
- # [00:39] <TabAtkins__> I presume the <summary> would jump down when you opened the element.
- # [00:40] <TabAtkins__> Alternately, everything gets reordered in the box tree so that it comes after <summary>?
- # [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.
- # [00:42] <TabAtkins__> Well, the content model explicitly has <summary> coming first, so shrug.
- # [00:43] <TabAtkins__> Excellent, that's what I thought.
- # [00:48] * Joins: JusticeFries (~justicefr@c-67-173-239-97.hsd1.co.comcast.net)
- # [00:49] * Quits: JoePeck (~jjp@2620:0:1b00:1171:fa1e:dfff:fed9:b9a) (Quit: -)
- # [01:11] * Quits: JusticeFries (~justicefr@c-67-173-239-97.hsd1.co.comcast.net) (Quit: JusticeFries)
- # [01:24] * Joins: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
- # [01:39] * Joins: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net)
- # [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.)
- # [01:43] * Quits: Necrathex (~bleptop@212-123-163-12.ip.telfort.nl) (Ping timeout: 240 seconds)
- # [01:51] * Joins: paul_irish_ (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net)
- # [01:53] * Quits: paul_irish_ (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net) (Client Quit)
- # [02:00] * Joins: paul_irish (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net)
- # [02:00] * Joins: jwalden (~waldo@c-71-202-165-226.hsd1.ca.comcast.net)
- # [02:46] * Joins: miketaylr (~miketaylr@24.42.95.234)
- # [02:47] * Quits: miketaylr (~miketaylr@24.42.95.234) (Excess Flood)
- # [02:47] * Joins: miketaylr (~miketaylr@24.42.95.234)
- # [03:06] * Quits: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net) (Quit: othermaciej)
- # [03:09] * Joins: nessy (~Adium@124-170-18-159.dyn.iinet.net.au)
- # [03:24] * Joins: boogyman (~boogy@unaffiliated/boogyman)
- # [03:24] * Quits: bzed (~bzed@devel.recluse.de) (Ping timeout: 276 seconds)
- # [03:25] * Joins: bzed (~bzed@devel.recluse.de)
- # [03:26] * Quits: boogyman (~boogy@unaffiliated/boogyman) (Client Quit)
- # [03:26] * Joins: boogyman (~boogy@unaffiliated/boogyman)
- # [03:27] * Joins: cardona507 (~cardona50@c-67-180-160-250.hsd1.ca.comcast.net)
- # [03:28] * Quits: bzed (~bzed@devel.recluse.de) (Read error: Connection reset by peer)
- # [03:28] * Joins: bzed (~bzed@devel.recluse.de)
- # [03:34] * Joins: divya (~divya@c-67-189-151-137.hsd1.ma.comcast.net)
- # [03:45] * Parts: divya (~divya@c-67-189-151-137.hsd1.ma.comcast.net)
- # [03:57] * Quits: boogyman (~boogy@unaffiliated/boogyman) (Ping timeout: 245 seconds)
- # [04:01] * Joins: JoePeck (~jjp@c-24-130-200-51.hsd1.ca.comcast.net)
- # [04:03] * Quits: knowtheory (~knowtheor@bas5-london14-1177678243.dsl.bell.ca) (Quit: Computer has gone to sleep)
- # [04:09] * Joins: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net)
- # [04:17] <Hixie> I have strings of numbers that I must match against patterns. The patterns are represented as nested lists of numbers.
- # [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.
- # [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)".
- # [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.
- # [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?
- # [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.
- # [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.
- # [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.
- # [04:23] * Joins: knowtheory (~knowtheor@bas5-london14-1177678243.dsl.bell.ca)
- # [04:36] <roc> maybe just keep a set of positions within your tree
- # [04:36] <roc> and scan the input updating that set after each number
- # [04:37] * Joins: JusticeFries (~justicefr@65.100.130.168)
- # [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
- # [04:43] <Hixie> fair enough
- # [04:44] <Hixie> thanks
- # [04:44] * Joins: kennyluck (~kennyluck@tea04.w3.mag.keio.ac.jp)
- # [04:46] <doublec> Hixie, did you come across Russ Cox's articles on compiling regular expressions?
- # [04:46] <doublec> eg: http://swtch.com/~rsc/regexp/regexp3.html
- # [04:46] <Hixie> i did not, will read, thanks
- # [04:48] * Quits: Morphous (jan@unaffiliated/amorphous) (Ping timeout: 246 seconds)
- # [04:48] * Quits: knowtheory (~knowtheor@bas5-london14-1177678243.dsl.bell.ca) (Quit: Computer has gone to sleep)
- # [04:53] * Joins: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net)
- # [04:58] * Quits: miketaylr (~miketaylr@24.42.95.234) (Quit: Leaving...)
- # [05:00] <othermaciej> Hixie: isn't that effectively a regular expression?
- # [05:00] <Hixie> yes
- # [05:00] <othermaciej> I'm pretty sure your language is a regular language
- # [05:00] <Hixie> hence my looking up stuff on compiling regexps
- # [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
- # [05:00] <Hixie> doublec's url got me something more useful though
- # [05:00] <Hixie> yeah, that might be a good idea
- # [05:01] <Hixie> part of the goal here is to learn more about how to write this kind of thing, though
- # [05:01] <othermaciej> if you really want to hand-code something, a DFA would be most efficient for matching
- # [05:01] <Hixie> cool
- # [05:01] <othermaciej> though it could be costly to compute up front
- # [05:01] <othermaciej> I've seen implementations that do lazy NFA-to-DFA conversion, but that is complicated
- # [05:01] <Hixie> in this case, that's turns out to not be an issue
- # [05:02] <Hixie> since the compilation step is far removed from the matching step
- # [05:02] <Hixie> and only the latter is time-sensitie
- # [05:02] <Hixie> ve
- # [05:02] * Joins: knowtheory (~knowtheor@bas1-london16-1176190282.dsl.bell.ca)
- # [05:02] <othermaciej> a DFA would be faster to match against than an NFA
- # [05:04] <othermaciej> you don't have to compute every match to make a state machine
- # [05:04] * Joins: Morphous (jan@unaffiliated/amorphous)
- # [05:04] <roc> yes
- # [05:04] <roc> the only other thing you have to worry about is DFA size explosion
- # [05:05] <othermaciej> (otherwise you'd have a hell of a time compiling any regexp that uses the * operator)
- # [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
- # [05:10] <Hixie> (which i notice regular expressions don't really support)
- # [05:10] <Hixie> (but which is quite important for my application)
- # [05:11] <roc> isn't that just (A | B | C | D)* ?
- # [05:11] <Hixie> sorry, i forgot to clarify: no duplicates
- # [05:11] <roc> ah right
- # [05:12] <Hixie> in my original approach earlier today i was considering just mutating my state machine as i walked it
- # [05:12] <Hixie> but that doesn't work so well with either the back-tracking or "following all states at once" approaches
- # [05:13] <roc> yeah you need 2^N states for that
- # [05:13] <roc> so a DFA is not going to work too well if you have more than a small number of alternatives
- # [05:13] <Hixie> yeah, that's been my conclusion too
- # [05:14] * Joins: miketaylr (~miketaylr@24.42.95.234)
- # [05:14] * Quits: miketaylr (~miketaylr@24.42.95.234) (Excess Flood)
- # [05:17] <othermaciej> zero or more with no duplicates shouldn't require 2^N states
- # [05:17] <othermaciej> it would be O(N^2) states
- # [05:18] * Joins: miketaylr (~miketaylr@24.42.95.234)
- # [05:18] * Quits: miketaylr (~miketaylr@24.42.95.234) (Excess Flood)
- # [05:19] * Joins: miketaylr (~miketaylr@24.42.95.234)
- # [05:19] * Quits: miketaylr (~miketaylr@24.42.95.234) (Excess Flood)
- # [05:19] <Hixie> my N will be around 10 for many of these patterns
- # [05:19] <Hixie> and many patterns will have several of these and/or nest them
- # [05:20] <othermaciej> 10^2 is not that big
- # [05:22] <othermaciej> actually I guess I am oversimplifying things, since it's variable length, the number of states depends on the following operator
- # [05:22] <othermaciej> in an NFA it would be O(N^2) for sure
- # [05:26] <roc> I'm confused
- # [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
- # [05:27] <roc> that's 2^N states
- # [05:27] <roc> for a DFA
- # [05:33] * Quits: Henrik`G (~hb@c83-249-67-192.bredband.comhem.se) (Quit: Leaving...)
- # [05:38] <Hixie> for zero-or-more (no duplicates) and N=3, i count 10 states
- # [05:38] <Hixie> (not counting the terminal state)
- # [05:39] <Hixie> for N=2 i count 3 states
- # [05:40] <Hixie> N=3 is just three N=2s with a state on the front
- # [05:41] <Hixie> assuming N=4 is four N=3s with a state on the front, that'd be 41 states for N=4
- # [05:42] <Hixie> (this is for an NFA, obviously, since I'm ignoring whatever comes next)
- # [05:42] <Hixie> (so one of the transitions at each state is to just move on to the next part of the NFA)
- # [05:45] <Hixie> http://www.research.att.com/~njas/sequences/A002627
- # [05:47] <Hixie> that list gets way out of hand far too quickly
- # [05:47] <Hixie> N=8 -> 69281 states
- # [05:47] <Hixie> N=13, which is plausible for my application, would have 10699776686 states
- # [05:50] <Hixie> what i need is a kind of NFA where i synthesis new states as i am walking it
- # [05:50] <Hixie> that might work
- # [05:58] * Joins: alt-dot-net-geek (~alt-dot-n@adsl-4-232-123.mem.bellsouth.net)
- # [06:02] <Hixie> yes...
- # [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.
- # [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
- # [06:04] <TabAtkins__> Seems easier to just serialize something like you have above, and package it with your matcher.
- # [06:04] <Hixie> *shrug*
- # [06:05] <Hixie> it's just for fun
- # [06:06] <TabAtkins__> All right. I think that actually serializing it as a state machine won't be fun, though. ^_^
- # [06:06] <TabAtkins__> But writing a matcher could be.
- # [06:07] <Hixie> writing a state machine would be near-trivial if it wasn't for this particularly weird case
- # [06:07] * Quits: boblet (~boblet@p1072-ipbf36osakakita.osaka.ocn.ne.jp) (Quit: boblet)
- # [06:24] * Quits: boaz (~boaz@64.119.159.231) (Quit: boaz)
- # [06:29] * Quits: JoePeck (~jjp@c-24-130-200-51.hsd1.ca.comcast.net) (Quit: -)
- # [06:31] * Joins: micheil (~micheil@124-170-199-62.dyn.iinet.net.au)
- # [06:34] * Quits: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
- # [06:34] * Joins: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
- # [06:44] * Joins: boblet (~boblet@p1072-ipbf36osakakita.osaka.ocn.ne.jp)
- # [06:51] * Quits: boblet (~boblet@p1072-ipbf36osakakita.osaka.ocn.ne.jp) (Quit: boblet)
- # [06:52] * Quits: micheil (~micheil@124-170-199-62.dyn.iinet.net.au) (Remote host closed the connection)
- # [06:52] * Joins: micheil (~micheil@124-170-199-62.dyn.iinet.net.au)
- # [07:09] * Quits: roc (~roc@203-97-204-82.dsl.clear.net.nz) (Quit: roc)
- # [07:36] * Joins: FireFly (~firefly@unaffiliated/firefly)
- # [07:45] * Joins: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
- # [07:48] * Quits: JonathanNeal (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 246 seconds)
- # [07:49] <theMadness> Wait a minute, the specs are written in html4.01
- # [07:50] * Joins: maikmerten (~merten@ls5dhcp196.cs.uni-dortmund.de)
- # [07:53] * Quits: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
- # [07:53] * Joins: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
- # [07:54] * Joins: jstar-taiwan (~jstar-tai@220-141-35-226.dynamic.hinet.net)
- # [07:55] <jstar-taiwan> hi, is there a way to get canvas fallback working when JS is disable in Firefox ?
- # [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])
- # [08:01] * Joins: Traveler (~traveler@host227-170-dynamic.30-79-r.retail.telecomitalia.it)
- # [08:02] * Quits: Traveler (~traveler@host227-170-dynamic.30-79-r.retail.telecomitalia.it) (Client Quit)
- # [08:08] * Joins: myakura (~myakura@p2062-ipbf37marunouchi.tokyo.ocn.ne.jp)
- # [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])
- # [08:13] * Quits: cardona507 (~cardona50@c-67-180-160-250.hsd1.ca.comcast.net) (Quit: zzzzz)
- # [08:26] * Quits: TabAtkins__ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
- # [08:26] * Joins: TabAtkins___ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net)
- # [08:27] * Joins: JoePeck (~jjp@c-24-130-200-51.hsd1.ca.comcast.net)
- # [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.
- # [08:42] * Joins: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl)
- # [08:46] * Quits: JusticeFries (~justicefr@65.100.130.168) (Remote host closed the connection)
- # [08:46] * Joins: JusticeFries (~justicefr@108.116.1.86)
- # [08:46] * Joins: zalan (~zalan@catv-89-135-108-81.catv.broadband.hu)
- # [08:53] <jstar-taiwan> any tutorial explaining how to add link to a canvas text ?
- # [08:54] * Joins: roc (~roc@121-72-220-19.dsl.telstraclear.net)
- # [08:57] * Quits: TabAtkins___ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 264 seconds)
- # [08:58] * Quits: JoePeck (~jjp@c-24-130-200-51.hsd1.ca.comcast.net) (Quit: -)
- # [08:59] * Quits: FireFly (~firefly@unaffiliated/firefly) (Quit: null)
- # [09:00] * Joins: TabAtkins__ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net)
- # [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
- # [09:01] <Hixie> it takes out some of the examples that use HTML5
- # [09:01] <TabAtkins__> Hm. I thought I'd heard you saying the opposite. Shrug.
- # [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
- # [09:02] <micheil> (it's just a matter of sorting out the handshaking code)
- # [09:04] * Joins: pesla (~retep@188.202.125.121)
- # [09:04] <micheil> Hixie: is draft76 going to become draft76 on the ieft site?
- # [09:06] * Quits: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net) (Quit: othermaciej)
- # [09:08] * Joins: mpt (~mpt@canonical/mpt)
- # [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
- # [09:13] <Hixie> as far as i'm concerned, -75 is long dead
- # [09:13] <micheil> oh, righteo
- # [09:13] <Hixie> if i'd still been sending updates, -76 would actually be like -90 or so by now
- # [09:13] <micheil> yeah, -75 is still the one supported by chrome (and other clients), so it's the one I must have work
- # [09:14] <micheil> is there a way to see the changes made to the spec (like a git diff)
- # [09:14] <Hixie> svn diffs of all the changes made to the whatwg specs are at http://html5.org/tools/web-apps-tracker
- # [09:15] <Hixie> there's no per-section breakdown
- # [09:15] <micheil> there's just three sources to read the spec, so it sometimes gets confusing as to which one to conform to
- # [09:15] <Hixie> well right now it's too early to be doing anything but experimental work, so it's not a big deal
- # [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
- # [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
- # [09:18] * Joins: cpearce (~cpearce@ip-118-90-98-30.xdsl.xnet.co.nz)
- # [09:18] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 264 seconds)
- # [09:20] * Joins: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net)
- # [09:20] <hsivonen> http://www.w3.org/Bugs/Public/show_bug.cgi?id=8979 interesting WONTFIX
- # [09:20] * Joins: harig (~harig@202.164.55.82)
- # [09:21] * Quits: harig (~harig@202.164.55.82) (Client Quit)
- # [09:22] * Joins: Traveler (~traveler@host227-170-dynamic.30-79-r.retail.telecomitalia.it)
- # [09:23] <Traveler> hi
- # [09:25] * Quits: Traveler (~traveler@host227-170-dynamic.30-79-r.retail.telecomitalia.it) (Client Quit)
- # [09:27] * Quits: othermaciej (~mjs@c-69-181-42-237.hsd1.ca.comcast.net) (Quit: othermaciej)
- # [09:37] * Quits: TabAtkins__ (~chatzilla@76-253-3-102.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 248 seconds)
- # [09:45] * Joins: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
- # [09:51] * Quits: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl) (Quit: Disconnected...)
- # [09:52] * Joins: JonathanNeal__ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net)
- # [09:54] * Quits: scotfl (~scotfl@aeryn.scotfl.net) (Ping timeout: 252 seconds)
- # [09:54] * Joins: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl)
- # [09:54] * Quits: jgraham (~jgraham@web22.webfaction.com) (Ping timeout: 245 seconds)
- # [09:54] * Quits: JonathanNeal_ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 264 seconds)
- # [09:56] * Joins: jgraham (~jgraham@web22.webfaction.com)
- # [09:56] * Quits: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl) (Client Quit)
- # [10:00] * Joins: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl)
- # [10:00] * Joins: scotfl (~scotfl@aeryn.scotfl.net)
- # [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?
- # [10:06] <hsivonen> in particular, when the fragment created by the fragment parsing algorithm is inserted by the innerHTML setter
- # [10:07] <Hixie> yes
- # [10:07] <hsivonen> this? http://www.whatwg.org/specs/web-apps/current-work/#dfnReturnLink-11
- # [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."
- # [10:08] <Hixie> (dfnReturnLink are dynamic and not portable)
- # [10:08] * Joins: mpt (~mpt@canonical/mpt)
- # [10:08] <hsivonen> Hixie: ok. thanks
- # [10:08] * Joins: Necrathex (~bleptop@212-123-163-12.ip.telfort.nl)
- # [10:08] <Hixie> see http://www.whatwg.org/specs/web-apps/current-work/complete.html#concept-form-association
- # [10:08] <Hixie> there's various other conditions that reset it
- # [10:08] * Quits: cpearce (~cpearce@ip-118-90-98-30.xdsl.xnet.co.nz) (Read error: Connection reset by peer)
- # [10:09] * Joins: cpearce (~cpearce@ip-118-90-98-30.xdsl.xnet.co.nz)
- # [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?
- # [10:09] * Joins: svl (~chatzilla@a194-109-2-65.dmn.xs4all.nl)
- # [10:10] <hsivonen> I wonder if the parser-created associations should simply be turned off in the fragment case
- # [10:10] <Hixie> unless i made a pretty serious mistake, there's no way to observe innerHTML until after it's in the document
- # [10:11] <hsivonen> createContextualFragment in anyone's spec yet?
- # [10:11] <hsivonen> that is, who should I bother about it?
- # [10:11] <Hixie> what's createContextualFragment?
- # [10:12] <hsivonen> Hixie: it's a Mozilla/Netscape ad hoc API that got cloned by WebKit and (IIRC) Presto
- # [10:12] <Hixie> oh jeez
- # [10:12] <zcorpan> http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-March/018892.html
- # [10:12] <Hixie> will you people stop making up new apis and implementing them widely
- # [10:12] <Hixie> i have enough trouble keeping track of the ones _i_ make up
- # [10:12] <Hixie> oh, it's on DOMRange
- # [10:12] <Hixie> ok
- # [10:12] <Hixie> well i expect i'll have to spec that one day
- # [10:12] <Hixie> but not any time soon
- # [10:13] <hsivonen> hmm. can a form be submitted if it hasn't been inserted into a document?
- # [10:13] <hsivonen> and if it can, do people do it?
- # [10:13] <Hixie> dunno, see the spec
- # [10:13] <Hixie> what does it say?
- # [10:14] <hsivonen> it doesn't work if there's no associated browsing context
- # [10:15] <zcorpan> hsivonen: in all browsers?
- # [10:15] <Hixie> so yes?
- # [10:15] <hsivonen> but a fragment that hasn't been inserted still has an associated document which has a browsing context
- # [10:15] <hsivonen> Hixie: looks like it can be submitted per spec
- # [10:15] <Hixie> cool
- # [10:15] <Hixie> makes sense i guess
- # [10:16] <hsivonen> which means that it theory there can be someone somewhere calling createContextualFragment with a malformed form and calling .submit() on it
- # [10:16] <hsivonen> s/it/in/
- # [10:16] <Hixie> when i spec createContextFragment, it'll still be "inserted into a document"
- # [10:17] <hsivonen> Hixie: I don't follow. Surely the fragment has an owner document but it's not inserted
- # [10:18] <Hixie> "inserted into a document" doesn't mean what it sounds like
- # [10:18] <Hixie> it's named that way because in most cases that's what happens
- # [10:18] <Hixie> hm actually i'm wrong
- # [10:18] <Hixie> nevermind
- # [10:18] <Hixie> i was thinking of xbl
- # [10:19] <Hixie> i think the spec for form controls should be changed to just refer to the home subtree changing
- # [10:19] <Hixie> or something
- # [10:19] <Hixie> but i've not really paged any of this stuff in
- # [10:19] <Hixie> so i could be talking nonsense
- # [10:31] <hsivonen> shepazu: any news on the SVG load event?
- # [10:32] <jstar-taiwan> how am I supposed to add link to a <canvas> ?
- # [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
- # [10:47] <jstar-taiwan> how am I supposed to add link to a <canvas> ?
- # [10:48] * Joins: ROBOd (~robod@92.86.241.52)
- # [10:49] <Hixie> jstar-taiwan: use an onclick handler
- # [10:49] <jstar-taiwan> Hixie, there is no native way to do this o_O ?
- # [10:53] <Hixie> no, intentionally
- # [10:53] <webben> jstar-taiwan: Note also http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#focus-management-0
- # [10:53] <Hixie> if you want to have interactive graphics, use svg
- # [10:53] <Hixie> or html
- # [10:53] <Hixie> <canvas> is meant for scripted graphics
- # [10:53] <jstar-taiwan> Hixie, but SVG is not supported correctly
- # [10:54] <webben> jstar-taiwan: Where?
- # [10:54] <jstar-taiwan> webben, IE
- # [10:54] <Hixie> IE doesn't do canvas either
- # [10:54] <webben> jstar-taiwan: http://code.google.com/p/svgweb/
- # [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
- # [10:57] <Hixie> IE doesn't support <canvas> either
- # [11:00] <theMadness> Uh, my mail made it through to www-style.
- # [11:01] * Joins: gna (~gna@212-123-163-12.ip.telfort.nl)
- # [11:01] <jstar-taiwan> Hixie, oh~ indeed I thought that IE8 add already a bit of support for it (i'm on linux)
- # [11:01] <webben> Nope.
- # [11:02] <webben> jstar-taiwan: Both svgweb and excanvas fake IE support with VML.
- # [11:02] <hsivonen> webben: doesn't svgweb use Flash?
- # [11:03] <webben> oh, yeah, sorry
- # [11:04] <jstar-taiwan> webben, Hixie does inline SVG work on IE8 ??
- # [11:04] <Hixie> no
- # [11:04] <Hixie> SVG and canvas only work in firefox, webkit browsers, and opera
- # [11:05] <zcorpan> the ie9 preview has partial support for svg but no canvas
- # [11:05] <zcorpan> i speculate that some future ie9 preview will also have partial support for canvas
- # [11:05] <theMadness> Which is weird considering all the effort they are putting into making it a sort of directx thingie.
- # [11:06] <roc> and considering canvas is a lot easier to implement
- # [11:08] <jstar-taiwan> argh~ why do IE team take so much time to implement basic ~.~
- # [11:09] <jstar-taiwan> anyway do you have a sample on how to add links to a <canvas> ?
- # [11:10] <Hixie> if you're needing to add links to canvas you're almost certainly misusing canvas
- # [11:11] <jstar-taiwan> I'm willing to provide an alternative to a flash diagram
- # [11:12] * Joins: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se)
- # [11:12] <Hixie> why not use svg?
- # [11:12] <jstar-taiwan> Hixie, it's a kind of pie chart with label which display text when clicked
- # [11:13] <hsivonen> jstar-taiwan: svg works for that use case better
- # [11:13] <jstar-taiwan> I wanted to try <canvas> and thought it was better supported
- # [11:15] <hsivonen> canvas is more of a buzzword than svg, but for almost all non-game use cases svg is more appropriate
- # [11:19] <jstar-taiwan> yeap I tried it to know a bit more and it seem to bit another blob technology
- # [11:20] <jgraham> hsivonen: I'm pretty sure I have written code that depends on submitting non-inserted forms
- # [11:20] <jgraham> (unless it doesn't work in which case I haven't, obviously)
- # [11:22] <zcorpan> wonder why http://software.hixie.ch/utilities/js/live-dom-viewer/saved/471 throws in opera
- # [11:23] <zcorpan> also throws in firefox
- # [11:25] <zcorpan> seems annoying to have to create a new event and copy all properties
- # [11:27] <hsivonen> jgraham: did you also use createContextualFragment with a malformed form?
- # [11:28] <zcorpan> of course he did
- # [11:28] <zcorpan> and he put it in a library that was reused all over the place
- # [11:29] <jgraham> hsivonen: No :p
- # [11:29] <hsivonen> jgraham: good :-)
- # [11:29] * jgraham still doesn't know what createContextualFragment does
- # [11:30] <jgraham> I would say that prevents me from using it but the web is empirical evidence against that line of thought
- # [11:30] <hsivonen> jgraham: it invokes the fragment parsing algorithm with a context node and a string to parse and returns a DocumentFragment
- # [11:30] <hsivonen> jgraham: it's like an innerHTML setter that gives you the fragment
- # [11:31] <jgraham> Doesn't it work to createElement a context element .innerHTML it and read the children?
- # [11:31] <jgraham> Might not be such a clean API though
- # [11:31] <hsivonen> jgraham: createContextualFragment predates innerHTML in Gecko, IIRC
- # [11:32] <hsivonen> jgraham: from the era when IEism were bad but creating own vendor-specific ad hoc APIs was OK
- # [11:32] <hsivonen> *IEisms
- # [11:32] <jgraham> Oh
- # [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
- # [11:36] <zcorpan> how disappointing, i thought the wine IE in crossover would use trident, but it uses gecko 1.8
- # [11:36] <zcorpan> does ie throw if you click the border in http://software.hixie.ch/utilities/js/live-dom-viewer/saved/471 ?
- # [11:44] * Quits: Lachy (~Lachlan@85.196.122.246) (Quit: This computer has gone to sleep)
- # [11:45] <zcorpan> oh ie doesn't have dispatchEvent at all
- # [11:51] * Quits: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net) (Ping timeout: 245 seconds)
- # [11:54] * Joins: Lachy (~Lachlan@pat-tdc.opera.com)
- # [11:57] * Joins: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net)
- # [12:06] * Joins: smaug___ (~chatzilla@cs181150024.pp.htv.fi)
- # [12:23] * Quits: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net) (Ping timeout: 252 seconds)
- # [12:23] * Quits: roc (~roc@121-72-220-19.dsl.telstraclear.net) (Ping timeout: 252 seconds)
- # [12:24] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 246 seconds)
- # [12:26] * Joins: mpt (~mpt@canonical/mpt)
- # [12:30] * Joins: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net)
- # [12:30] * Joins: roc (~roc@121-72-189-107.dsl.telstraclear.net)
- # [12:34] * Quits: jstar-taiwan (~jstar-tai@220-141-35-226.dynamic.hinet.net) (Quit: Leaving)
- # [12:42] * Quits: Lachy_ (~Lachy@pat-tdc.opera.com) (Quit: Leaving)
- # [12:46] * Quits: zalan (~zalan@catv-89-135-108-81.catv.broadband.hu) (Ping timeout: 260 seconds)
- # [12:54] * Joins: workmad3 (~workmad3@cpc3-bagu10-0-0-cust651.1-3.cable.virginmedia.com)
- # [12:56] <hsivonen> The Key Points slide at http://www.robglidden.com/2009/09/how-to-fix-dtv-patent-pools/ is interesting
- # [12:56] <hsivonen> looks like the TV people aren't too happy about MPEG encumberances, either
- # [13:00] <roc> Rob Glidden sounds like an interesting person
- # [13:05] * Joins: AnthonyCat (~AnthonyCa@CPE-58-175-25-194.mqdl1.lon.bigpond.net.au)
- # [13:07] * Quits: AnthonyCat (~AnthonyCa@CPE-58-175-25-194.mqdl1.lon.bigpond.net.au) (Client Quit)
- # [13:09] * Joins: zalan (~zalan@catv-89-135-108-81.catv.broadband.hu)
- # [13:09] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 268 seconds)
- # [13:09] <hsivonen> hmm. the fake Gtk menus in Opera 10.52 have the ancient bug that prevents diagonal mouse movement to a submenu
- # [13:10] <hsivonen> for Firefox and Chrome get this right in their fake Gtk menus
- # [13:10] <hsivonen> s/for/both/
- # [13:11] <roc> doesn't Chrome use real Gtk menus?
- # [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
- # [13:16] <hsivonen> (specifically, the buttons in the title bar)
- # [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.
- # [13:19] <Lachy> I've unsuccessfully argued against the fake UI approach before
- # [13:20] <roc> the thing about browsers is that they have to go for the fake UI approach for Web content
- # [13:20] <hsivonen> looks like OO.o has the same bug
- # [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
- # [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.
- # [13:21] <roc> maybe
- # [13:22] <Philip`> Lachy: It's better for the chrome to be consistent with the desktop than to be consistent with the browser content?
- # [13:22] <roc> another thing is that on Windows and X, the toolkits that give you "real UI" are pretty lame
- # [13:23] <Philip`> I guess people who don't use any applications other than their browser would prefer the latter
- # [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.
- # [13:23] <roc> at least, the ones you can access from C/C++
- # [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.
- # [13:25] <roc> I haven't seen that one
- # [13:26] <Philip`> roc: Just recompile Gecko in C++/CLI and then use WPF
- # [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
- # [13:26] <Lachy> those 2 bugs require browser restarts to fix
- # [13:26] <roc> Philip`: ho ho ho
- # [13:26] <Lachy> they happen all the time on Snow Leopard
- # [13:26] <roc> I've seen that one
- # [13:26] <roc> but dropdowns are an example where using "real UI" is super-problematic in Web content
- # [13:27] <roc> Safari's "real UI" version of dropdowns is quite unusable for Web content with a large number of options
- # [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.
- # [13:28] <hsivonen> the checkboxes in fake Gtk menus in Opera look wrong, too
- # [13:29] <hsivonen> I wonder how the Opera 10.52 fake Gtk widgets are drawn
- # [13:29] <Lachy> hsivonen, please file bugs about those issues
- # [13:30] <hsivonen> the pref window in Chrome looks like real Gtk
- # [13:30] <hsivonen> but the same window on Chrome OS looks generally terrible and Windows 95esque
- # [13:31] <hsivonen> I wonder how the Chrome pref window is implemented
- # [13:47] * Quits: JusticeFries (~justicefr@108.116.1.86) (Quit: JusticeFries)
- # [13:57] * Joins: FireFly (~firefly@unaffiliated/firefly)
- # [14:00] * Joins: mpt (~mpt@canonical/mpt)
- # [14:01] * Quits: roc (~roc@121-72-189-107.dsl.telstraclear.net) (Quit: roc)
- # [14:04] * Joins: roc (~roc@121-72-189-107.dsl.telstraclear.net)
- # [14:15] * Joins: annevk (~annevk@EM111-188-16-55.pool.e-mobile.ne.jp)
- # [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."
- # [14:28] * Joins: davidb (~davidb@mozca02.ca.mozilla.com)
- # [14:28] <gsnedders> What does it mean for content to load in an iframe?
- # [14:29] <gsnedders> I presume any URL change apart from a same-document reference will cause content to load
- # [14:30] * Joins: karlushi (~karlushi@fw.vdl2.ca)
- # [14:37] * Joins: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464)
- # [14:39] * Joins: pmuellr (~pmuellr@nat/ibm/x-liailvgflmcnawxz)
- # [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)?
- # [14:52] * Joins: aroben (~aroben@unaffiliated/aroben)
- # [15:06] * Quits: karlushi (~karlushi@fw.vdl2.ca) (Quit: Leaving)
- # [15:10] * Quits: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464) (Quit: JusticeFries)
- # [15:16] * Quits: jgraham (~jgraham@web22.webfaction.com) (Ping timeout: 245 seconds)
- # [15:17] * Joins: JusticeFries (~justicefr@c-67-173-239-97.hsd1.co.comcast.net)
- # [15:18] * Joins: jgraham (~jgraham@74.53.238.210)
- # [15:24] * Quits: JusticeFries (~justicefr@c-67-173-239-97.hsd1.co.comcast.net) (Quit: JusticeFries)
- # [15:24] * Joins: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464)
- # [15:29] * Quits: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464) (Ping timeout: 276 seconds)
- # [15:33] * Joins: BlurstOfTimes (~blurstoft@168.203.117.131)
- # [15:33] * Quits: BlurstOfTimes (~blurstoft@168.203.117.131) (Remote host closed the connection)
- # [15:33] * Joins: BlurstOfTimes (~blurstoft@168.203.117.131)
- # [15:36] * Quits: BlurstOfTimes (~blurstoft@168.203.117.131) (Client Quit)
- # [15:41] * Joins: miketaylr (~miketaylr@38.117.156.163)
- # [15:42] * Joins: BlurstOfTimes (~blurstoft@168.203.117.131)
- # [15:45] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 245 seconds)
- # [15:48] * Joins: mpt (~mpt@canonical/mpt)
- # [15:50] * Quits: yutak_home (~kee@N038037.ppp.dion.ne.jp) (Quit: Ex-Chat)
- # [15:52] * Joins: davidhund (~davidhund@dnuhd.xs4all.nl)
- # [16:00] * Quits: ttepasse (~ttepasse@ip-109-90-160-217.unitymediagroup.de) (Read error: Connection timed out)
- # [16:04] * Joins: gregw (~gregwilki@host116-234-static.43-88-b.business.telecomitalia.it)
- # [16:09] * Quits: annevk (~annevk@EM111-188-16-55.pool.e-mobile.ne.jp) (Ping timeout: 276 seconds)
- # [16:22] * Quits: paul_irish (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net) (Remote host closed the connection)
- # [16:22] * Joins: paul_irish (~paul_iris@c-71-192-163-128.hsd1.nh.comcast.net)
- # [16:31] * Quits: davidb (~davidb@mozca02.ca.mozilla.com) (Quit: davidb)
- # [16:32] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 248 seconds)
- # [16:34] * Joins: mpt (~mpt@canonical/mpt)
- # [16:43] * Quits: nessy (~Adium@124-170-18-159.dyn.iinet.net.au) (Quit: Leaving.)
- # [16:48] * Joins: davidb (~davidb@mozca02.ca.mozilla.com)
- # [16:49] * Quits: gavin_ (~gavin@firefox/developer/gavin) (Ping timeout: 246 seconds)
- # [16:49] * Joins: gavin_ (~gavin@firefox/developer/gavin)
- # [16:49] * Joins: xtothey (~ryanblair@ool-457b0b05.dyn.optonline.net)
- # [16:56] * Quits: maikmerten (~merten@ls5dhcp196.cs.uni-dortmund.de) (Remote host closed the connection)
- # [16:59] <AryehGregor> IEBlog is really hit-and-miss, isn't it? The last post was very informative.
- # [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
- # [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. "
- # [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.
- # [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!)
- # [17:03] <tabatkins> We do try, AryehGregor.
- # [17:03] * tabatkins is now known as TabAtkins
- # [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
- # [17:05] * Parts: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
- # [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.
- # [17:06] <AryehGregor> s/open-source/open source/
- # [17:06] <jgraham> Small players in general (and new entrants to the market) can't pay the fees
- # [17:06] <AryehGregor> I thought they were scaled somewhat reasonably. Surely it's not in MPEG-LA's interest to discourage anyone from licensing?
- # [17:07] <AryehGregor> It's obviously easier for big companies due to the cap, of course.
- # [17:07] * Quits: Maurice (~ano@a80-101-46-164.adsl.xs4all.nl) (Quit: Disconnected...)
- # [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?
- # [17:07] <jgraham> Plus it is a real problem for open source becuase it menas that they have to distribute non-open-source components
- # [17:07] <AryehGregor> What do you mean? There are open-source implementations of H.264, no? Chrome uses ffmpeg, for example.
- # [17:07] <jgraham> AryehGregor: My understanding is that any web browser would effectively have to pay the same amount
- # [17:08] * Joins: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
- # [17:08] <hsivonen> rektide: see roc's blog and roc's comment on the IE blog
- # [17:08] <jgraham> Although that is not based on anything much
- # [17:08] <AryehGregor> Yeah, maybe with a web browser you'd hit the cap very quickly . . .
- # [17:08] <rektide> why not use gstreamer, and support everything? there's a gstreamer-ffmpeg, for example.
- # [17:08] <AryehGregor> IIRC it's a fee per unit distributed, and if you give copies away you'd have to pay a lot.
- # [17:08] * Quits: mpt (~mpt@canonical/mpt) (Ping timeout: 248 seconds)
- # [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.
- # [17:09] <AryehGregor> Plus it means more poorly-tested code paths, larger executable size, etc.
- # [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.
- # [17:09] <jgraham> AryehGregor: FWIW I don't consider source-avaliable components that you are prevented from redistributing to be "open source"
- # [17:10] <AryehGregor> (probably installed illegally on Linux, but again, nobody cares very much)
- # [17:10] * Joins: JohnnyAmerica (~Simon@213-64-113-37-no97.tbcn.telia.com)
- # [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.
- # [17:10] <hsivonen> AryehGregor: not caring is not a viable solution if you want linux to be successful
- # [17:10] <AryehGregor> Even Debian ships binary blobs in the kernel.
- # [17:11] <AryehGregor> hsivonen, distributions backed by a company with deep pockets can pay the fees. Others will get ignored indefinitely.
- # [17:11] <AryehGregor> Is MPEG-LA going to sue Debian? (Not sure if Debian actually distributes H.264 codecs, to be fair.)
- # [17:11] <TabAtkins> I am loathe to depend on the kindness of patent trolls to ignore people who can't legitimately pay.
- # [17:11] <AryehGregor> Oh, so am I.
- # [17:11] <AryehGregor> I'm talking purely pragmatically here.
- # [17:12] * Joins: svl (~chatzilla@a194-109-2-65.dmn.xs4all.nl)
- # [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.
- # [17:12] <AryehGregor> This discussion started with the suggestion that Microsoft had ulterior motives for supporting H.264 over Theora, beyond patent risk.
- # [17:12] <Dashiva> How about just plain financial motives
- # [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*.
- # [17:12] <AryehGregor> Dashiva, those being?
- # [17:13] <hsivonen> binary blobs are about 1st party copyright or trade secret. h.264 is about 3rd party patents. totally different
- # [17:13] <Dashiva> Keeping small players out of the game
- # [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.
- # [17:13] * Quits: rektide (rektide@voodoowarez.com) (Ping timeout: 265 seconds)
- # [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.
- # [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.
- # [17:14] <TabAtkins> AryehGregor: Again, I think you're assuming far too much from a patent-troll organization.
- # [17:14] * Parts: davidhund (~davidhund@dnuhd.xs4all.nl)
- # [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.
- # [17:14] <AryehGregor> MPEG-LA organizes patents that are definitely not all frivolous, and which its members do use.
- # [17:15] <Dashiva> AryehGregor: Apparently that's not a viable solution according to anti-h264 arguments.
- # [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.
- # [17:16] <AryehGregor> (not that I disagree with them, although at this point it seems like a lost cause)
- # [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.
- # [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.
- # [17:16] <AryehGregor> http://lists.xiph.org/pipermail/theora/2010-April/003769.html
- # [17:17] * TabAtkins reads.
- # [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.
- # [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.
- # [17:17] <AryehGregor> So it's pretty safe.
- # [17:18] <AryehGregor> Theora is hopefully safe, but it hasn't had the same level of exposure.
- # [17:18] <AryehGregor> If Google goes a few more years without getting sued, it will look a lot more promising.
- # [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.
- # [17:20] <AryehGregor> That's typical of him. The "being extremely convincing and well-thought-out" thing, I mean.
- # [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*.
- # [17:20] <AryehGregor> (he's involved in Wikipedia too)
- # [17:20] <Lachy> AryehGregor, the MPEG-LA focusses on software patents, which are frivolous, and should never be patented.
- # [17:20] <TabAtkins> Hehe.
- # [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
- # [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.
- # [17:21] <Lachy> TabAtkins, I'm not arguing against that. I know MPEG-LA aren't patent trolls
- # [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.
- # [17:21] <TabAtkins> Kk. Well, I agree with you, then.
- # [17:22] <Lachy> ok, if that's what you meant by frivolous, then fair enough
- # [17:23] <AryehGregor> Greg Maxwell is still technically Chief Research Coordinator at Wikimedia: http://wikimediafoundation.org/wiki/Resolution:Chief_Research_Coordinator
- # [17:23] <AryehGregor> Although I think the role is meaningless.
- # [17:24] <AryehGregor> (predating the time when Wikimedia had a substantial number of actual employees)
- # [17:43] * Joins: rektide (rektide@voodoowarez.com)
- # [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!)
- # [17:56] * Quits: wycats (~wycats@c-69-181-216-213.hsd1.ca.comcast.net) (Quit: wycats)
- # [18:03] * Parts: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
- # [18:04] * Quits: Lachy (~Lachlan@pat-tdc.opera.com) (Quit: This computer has gone to sleep)
- # [18:04] * Joins: dglazkov (~dglazkov@nat/google/x-bzclkluhokzfaich)
- # [18:06] * Quits: pesla (~retep@188.202.125.121) (Quit: ( www.nnscript.com :: NoNameScript 4.21 :: www.esnation.com ))
- # [18:07] * Quits: JonathanNeal__ (~JonathanN@99-59-124-67.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer)
- # [18:07] * Joins: Maurice (copyman@5ED573FA.cable.ziggo.nl)
- # [18:10] * Joins: JoePeck (~jjp@2620:0:1b00:1171:fa1e:dfff:fed9:b9a)
- # [18:10] * Quits: Necrathex (~bleptop@212-123-163-12.ip.telfort.nl) (Remote host closed the connection)
- # [18:24] * Joins: wycats (~wycats@enginey-9.border1.sfo002.pnap.net)
- # [18:34] * Joins: ap (~ap@17.246.17.104)
- # [18:35] * Quits: smaug___ (~chatzilla@cs181150024.pp.htv.fi) (Quit: ChatZilla 0.9.86 [Firefox 3.7a4pre/20100324184354])
- # [18:38] * Joins: JonathanNeal (~JonathanN@rrcs-76-79-114-210.west.biz.rr.com)
- # [18:47] * Joins: maikmerten (~maikmerte@port-92-201-77-167.dynamic.qsc.de)
- # [18:48] * Joins: mpt (~mpt@canonical/mpt)
- # [18:51] * Quits: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net) (Ping timeout: 264 seconds)
- # [18:53] * Quits: aroben (~aroben@unaffiliated/aroben) (Read error: Connection reset by peer)
- # [18:54] * Joins: aroben (~aroben@unaffiliated/aroben)
- # [18:57] * Joins: dustinbrewer (~dustinbre@99-17-42-25.lightspeed.okcbok.sbcglobal.net)
- # [19:00] * Joins: mlpug (~mlpug@a88-115-164-40.elisa-laajakaista.fi)
- # [19:02] * Quits: mpt (~mpt@canonical/mpt) (Quit: Ex-Chat)
- # [19:04] * Joins: jwalden (~waldo@68.65.169.232)
- # [19:04] * Joins: cohitre (~cohitre@174-21-104-138.tukw.qwest.net)
- # [19:05] * Parts: cohitre (~cohitre@174-21-104-138.tukw.qwest.net)
- # [19:08] * aroben is now known as aroben|lunch
- # [19:15] * Quits: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se) (Remote host closed the connection)
- # [19:21] * Joins: Heimidal (~heimidal@unaffiliated/heimidal)
- # [19:25] * Joins: Lachy (~Lachlan@85.196.122.246)
- # [19:27] * Joins: boaz (~boaz@64.119.159.231)
- # [19:30] * Joins: weinig (~weinig@cpe-66-108-207-62.nyc.res.rr.com)
- # [19:31] * Joins: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se)
- # [19:35] * Quits: JohnnyAmerica (~Simon@213-64-113-37-no97.tbcn.telia.com) (Read error: Connection reset by peer)
- # [19:36] * aroben|lunch is now known as aroben
- # [19:39] * Quits: myakura (~myakura@p2062-ipbf37marunouchi.tokyo.ocn.ne.jp) (Quit: Leaving...)
- # [19:51] * Joins: sicking (~chatzilla@nat/mozilla/x-hlhdshrpwjlncyql)
- # [19:52] <paul_irish> Philip`: how did you come across the obfuscation methods in your font optimizer?
- # [19:53] <paul_irish> me and ethan of fontsquirrel were just discussing them. really excellent.
- # [19:54] * Joins: svl (~me@ip565744a7.direct-adsl.nl)
- # [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
- # [19:57] <paul_irish> that's excellent. can you summarize what the POST table changes you make are?
- # [19:57] <paul_irish> ethan seemed to think this would conflict with the OTS sanitizing/security stuff that Chrome is doing.
- # [19:58] <Philip`> paul_irish: They're just http://bitbucket.org/philip/font-optimizer/src/tip/obfuscate-font.pl#cl-76
- # [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
- # [20:00] <Philip`> (It's quite possible that Chrome might become stricter and reject it)
- # [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.
- # [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)
- # [20:02] <Philip`> (If I remember correctly, it does break the font installation on Windows and OS X)
- # [20:03] <Philip`> (though obviously it's totally trivial for a tool to fix the font and make it readable again)
- # [20:03] <JonathanNeal> That's a really groovy idea Philip`, paul_irish nice work :)
- # [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
- # [20:03] <Philip`> (It's a disgusting evil standards-violating hack, but that's okay)
- # [20:04] * Quits: alt-dot-net-geek (~alt-dot-n@adsl-4-232-123.mem.bellsouth.net) (Quit: Leaving)
- # [20:05] * Quits: sicking (~chatzilla@nat/mozilla/x-hlhdshrpwjlncyql) (Ping timeout: 246 seconds)
- # [20:06] <JonathanNeal> I like evil hacks.
- # [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
- # [20:17] * Quits: jwalden (~waldo@68.65.169.232) (Quit: ChatZilla 0.9.86-rdmsoft [XULRunner 1.9.2/20100122095031])
- # [20:20] * Joins: sicking (~chatzilla@nat/mozilla/x-hokmmcvswmueajcf)
- # [20:26] * Joins: jgornick (~joe@199.199.212.242)
- # [20:31] * Joins: dbaron (~dbaron@nat/mozilla/x-lnfgsrahzsuitgae)
- # [20:32] * Joins: miketayl (~miketaylr@38.117.156.163)
- # [20:33] * Joins: franksalim (~frank@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net)
- # [20:34] * Quits: miketaylr (~miketaylr@38.117.156.163) (Ping timeout: 248 seconds)
- # [20:36] * Joins: michaeln (~michaeln@nat/google/x-ywjfngddakcfguis)
- # [20:38] * Quits: micheil (~micheil@124-170-199-62.dyn.iinet.net.au) (Quit: micheil)
- # [20:38] * Joins: mpt (~mpt@canonical/mpt)
- # [20:42] * Quits: Heimidal (~heimidal@unaffiliated/heimidal) (Quit: Leaving...)
- # [20:42] * Joins: Heimidal (~heimidal@unaffiliated/heimidal)
- # [20:56] * Joins: Peter- (~peter@535172BF.cable.casema.nl)
- # [20:57] * Quits: sicking (~chatzilla@nat/mozilla/x-hokmmcvswmueajcf) (Ping timeout: 245 seconds)
- # [21:01] * Quits: workmad3 (~workmad3@cpc3-bagu10-0-0-cust651.1-3.cable.virginmedia.com) (Remote host closed the connection)
- # [21:02] * Joins: Henrik`G (~hb@c83-249-67-192.bredband.comhem.se)
- # [21:10] * Quits: dbaron (~dbaron@nat/mozilla/x-lnfgsrahzsuitgae) (Quit: 8403864 bytes have been tenured, next gc will be global.)
- # [21:14] * Quits: xtothey (~ryanblair@ool-457b0b05.dyn.optonline.net) (Quit: xtothey)
- # [21:20] * Quits: miketayl (~miketaylr@38.117.156.163) (Remote host closed the connection)
- # [21:21] * Joins: miketaylr (~miketaylr@38.117.156.163)
- # [21:32] * Joins: boblet (~boblet@p1072-ipbf36osakakita.osaka.ocn.ne.jp)
- # [21:41] * Joins: murz (~mmurraywa@wcproxy.msnbc.com)
- # [21:42] * Quits: zalan (~zalan@catv-89-135-108-81.catv.broadband.hu)
- # [21:44] * Quits: maikmerten (~maikmerte@port-92-201-77-167.dynamic.qsc.de) (Remote host closed the connection)
- # [21:47] * Joins: othermaciej (~mjs@17.246.18.210)
- # [21:47] * Quits: othermaciej (~mjs@17.246.18.210) (Remote host closed the connection)
- # [21:48] * Joins: othermaciej (~mjs@2620:0:1b00:1191:21b:63ff:fe97:5eb)
- # [21:48] * Quits: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se) (Remote host closed the connection)
- # [21:48] * Quits: miketaylr (~miketaylr@38.117.156.163) (Remote host closed the connection)
- # [21:48] * Joins: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se)
- # [21:52] * Joins: karlushi (~karlushi@fw.vdl2.ca)
- # [21:52] * Joins: dbaron (~dbaron@nat/mozilla/x-cirqkbvupzfnnknj)
- # [21:53] * Joins: dave_levin (~dave_levi@nat/google/x-qrwohanhxvnvkvfm)
- # [21:54] * Joins: miketaylr (~miketaylr@38.117.156.163)
- # [21:54] * Quits: roc (~roc@121-72-189-107.dsl.telstraclear.net) (Ping timeout: 252 seconds)
- # [21:59] * Quits: Lachy (~Lachlan@85.196.122.246) (Ping timeout: 276 seconds)
- # [22:01] * Quits: mpt (~mpt@canonical/mpt) (Quit: Ex-Chat)
- # [22:01] * Joins: ttepasse (~ttepasse@ip-109-90-160-217.unitymediagroup.de)
- # [22:03] * Quits: pmuellr (~pmuellr@nat/ibm/x-liailvgflmcnawxz) (Quit: pmuellr)
- # [22:03] * Joins: Lachy (~Lachlan@southampton.perfect-privacy.com)
- # [22:07] * weinig is now known as weinig|away
- # [22:07] * Joins: roc (~roc@121-72-203-198.dsl.telstraclear.net)
- # [22:09] * Quits: smaug (~chatzilla@cs181150024.pp.htv.fi) (Ping timeout: 252 seconds)
- # [22:10] * Joins: zcorpan (~zcorpan@c-339fe355.410-6-64736c14.cust.bredbandsbolaget.se)
- # [22:11] * Quits: davidb (~davidb@mozca02.ca.mozilla.com) (Quit: davidb)
- # [22:11] * Joins: davidb (~davidb@mozca02.ca.mozilla.com)
- # [22:12] * Quits: davidb (~davidb@mozca02.ca.mozilla.com) (Client Quit)
- # [22:12] * Joins: smaug (~chatzilla@cs181150024.pp.htv.fi)
- # [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)
- # [22:14] * Quits: ttepasse (~ttepasse@ip-109-90-160-217.unitymediagroup.de) (Quit: ?Q)
- # [22:14] * Joins: ttepasse (~ttepasse@ip-109-90-160-217.unitymediagroup.de)
- # [22:16] * Quits: mlpug (~mlpug@a88-115-164-40.elisa-laajakaista.fi) (Remote host closed the connection)
- # [22:17] <zcorpan> http://www.ietf.org/mail-archive/web/hybi/current/msg01830.html - hmmm
- # [22:18] <zcorpan> wonder if i should send an email saying "hi there, we're implementing complete.html#websocket over here"
- # [22:19] * Joins: xtothey (~ryanblair@ool-18bf1573.dyn.optonline.net)
- # [22:23] * Quits: xtothey (~ryanblair@ool-18bf1573.dyn.optonline.net) (Ping timeout: 265 seconds)
- # [22:28] * Quits: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se) (Remote host closed the connection)
- # [22:28] * Joins: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se)
- # [22:29] <franksalim> zcorpan, I think that information would be appreciated
- # [22:34] <zcorpan> done
- # [22:35] * Quits: roc (~roc@121-72-203-198.dsl.telstraclear.net) (Quit: roc)
- # [22:35] <zcorpan> i hope webkit and mozilla are also tracking the latest version
- # [22:35] * Joins: KaOSoFt (~KaOSoFt@190.24.156.162)
- # [22:36] <jgraham> zcorpan: Mozilla said they were holding off shipping anything untill it stabilised
- # [22:37] <zcorpan> ok
- # [22:37] <zcorpan> but they're not holding off implementation work, or are they?
- # [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
- # [22:38] <othermaciej> as in, there's patches in progress
- # [22:39] <zcorpan> othermaciej: ok, thanks
- # [22:40] <zcorpan> othermaciej: any news on URL/url?
- # [22:40] <othermaciej> zcorpan: I have not done anything related to it
- # [22:40] <zcorpan> ok
- # [22:42] <jgraham> zcorpan: http://hacks.mozilla.org/2010/04/websockets-in-firefox/
- # [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
- # [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
- # [22:48] <gregw> I think -76 has some good ease of implementation improvements, but I'm very dubious about the new handshake
- # [22:48] <gregw> it does not work well with HTTP servers
- # [22:48] * weinig|away is now known as weinig
- # [22:48] <zcorpan> gregw: what part doesn't work well?
- # [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?
- # [22:49] <gregw> because of the non content data after the requests
- # [22:49] <jgraham> gregw: The random bytes?
- # [22:50] <gregw> the IETF WG really wants the handshake to be HTTP compliant until the 101 is sent
- # [22:50] <gregw> those bytes break that
- # [22:50] <othermaciej> gregw: aren't those bytes effectively just a message body?
- # [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)
- # [22:50] <gregw> they would be if there was a content length
- # [22:51] <othermaciej> I don't think Content-Length is required to send a request body
- # [22:51] <gregw> It is in a persistent connection.
- # [22:51] * Quits: JoePeck (~jjp@2620:0:1b00:1171:fa1e:dfff:fed9:b9a) (Ping timeout: 276 seconds)
- # [22:51] <zcorpan> iirc Hixie argued that the random bytes are content after the upgrade
- # [22:51] <gregw> and if we are HTTP complient other status codes might get sent back - like a 401 for authentication
- # [22:52] <gregw> zcorpan: no he wants them to not be content
- # [22:52] * Quits: ROBOd (~robod@92.86.241.52) (Quit: http://www.robodesign.ro)
- # [22:52] <gregw> so they break HTTP servers... so they can't be "tricked" into doing a handshake
- # [22:52] * Joins: davidhund (~davidhund@dnuhd.xs4all.nl)
- # [22:52] <jgraham> gregw: Are there examples of HTTP servers that cannot implement WebSockets due to this design
- # [22:52] <othermaciej> the WebSocket connection can't be used as a persistent HTTP connection
- # [22:53] <othermaciej> so Content-Length is not required
- # [22:53] <othermaciej> that being said, if it was added, would that address your objection?
- # [22:53] * Parts: davidhund (~davidhund@dnuhd.xs4all.nl)
- # [22:53] <gregw> sure - but then you might as well make it a header
- # [22:53] <gregw> simpler to implement
- # [22:53] <gregw> and I'm not sure that 101 can have a body
- # [22:54] <othermaciej> these bytes are in the request, not the response
- # [22:54] <othermaciej> any request can have a body (other than GET or HEAD) IIRC
- # [22:54] <gregw> there are more in the response
- # [22:54] <gregw> but actually the response ones are OK
- # [22:54] <gregw> as they are after the 101
- # [22:54] <gregw> so yeh - if the request ones can be made legal HTTP then I'm happy
- # [22:54] <othermaciej> so it sounds to me like nothing here breaks HTTP before the 101 response is sent
- # [22:54] * Quits: tndH (~Rob@cpc2-leed18-0-0-cust427.leed.cable.ntl.com) (Ping timeout: 245 seconds)
- # [22:55] <gregw> but I still think they are a little bit overkill
- # [22:55] <gregw> it does if you send something other than the 101
- # [22:55] <gregw> like a 401
- # [22:55] <gregw> or a 500
- # [22:55] <gregw> etc
- # [22:55] <othermaciej> what breaks http in that case?
- # [22:55] <gregw> the random bytes will be a bad request
- # [22:56] <gregw> unless they are content of the request
- # [22:56] <othermaciej> the client doesn't send a 401 though
- # [22:56] <othermaciej> the client doesn't know whether it will get a 401
- # [22:56] <othermaciej> so that can't possibly affect what is a valid http request
- # [22:56] <gregw> OK - let's flip this around... what's the problem with making it a completely legal HTTP request?
- # [22:56] <othermaciej> I believe it already is a completely legal HTTP request
- # [22:57] <gregw> It is, but the random bytes break the next request in the connection
- # [22:57] <othermaciej> if it isn't one, I would consider that a bug
- # [22:57] <othermaciej> but there won't be a next request in the connection
- # [22:57] <gregw> there can be if a 401 is sent
- # [22:57] <zcorpan> i thought the random bytes were there to make it harder to do a cross protocol attack or so
- # [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
- # [22:57] <gregw> the random bytes work just as well in a header
- # [22:57] <Hixie> not for the purpose of breaking intermediaries
- # [22:58] <jgraham> Are clients already epected to deal with arbitary HTTP responses?
- # [22:58] <othermaciej> gregw: in the case of a 401, the client has to close the connection
- # [22:58] <gregw> no
- # [22:58] <Hixie> yes
- # [22:58] <gregw> my no was to jgraham
- # [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
- # [22:59] <gregw> but there is a reasonable level of support in the IETF WG to have that as an option
- # [22:59] <gregw> and those bytes make that impossible for little clear benefit
- # [22:59] <gregw> othermaciej: why not - that is not compliant HTTP
- # [23:00] <othermaciej> what do you mean?
- # [23:00] <gregw> the whole point is that before the 101, the connection is-a HTTP request
- # [23:00] <othermaciej> the client can close its connection at any time
- # [23:00] <gregw> so if client and server agree to use it as a persistent HTTP connection, they can do so
- # [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.
- # [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)
- # [23:00] <Hixie> It's only the server who thinks it's HTTP
- # [23:00] <gregw> well you client might be, but there are other clients
- # [23:00] * Quits: JonathanNeal (~JonathanN@rrcs-76-79-114-210.west.biz.rr.com) (Read error: Connection reset by peer)
- # [23:01] <Hixie> an HTTP client isn't going to try to upgrade to WebSocket
- # [23:01] <Hixie> and so there's no problem there either
- # [23:01] <gregw> there is the use-case that you want to try to do the upgrade, but also request some real content
- # [23:01] * Joins: JonathanNeal (~JonathanN@rrcs-76-79-114-210.west.biz.rr.com)
- # [23:01] <gregw> so that if you can upgrade you do, if you can't you send some real content
- # [23:01] <Hixie> no, there isn't
- # [23:01] <gregw> and avoid another RTT
- # [23:01] <Hixie> no browser is ever going to do that
- # [23:02] <othermaciej> neither the client protocol nor the JS client API support that use case
- # [23:02] <gregw> that is what the SPDY guys are interested in
- # [23:02] <Hixie> the SPDY guys aren't using websocket
- # [23:02] <othermaciej> if you want to propose it, go ahead, but "I want a new feature" is very different from "this breaks HTTP"
- # [23:02] <gregw> not yet
- # [23:02] * Joins: JoePeck (~jjp@2620:0:1b00:1171:fa1e:dfff:fed9:b9a)
- # [23:02] <Hixie> the SPDY guys are never going to use websocket -- websocket is a completely inappropriate protocol for their use case
- # [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
- # [23:02] <othermaciej> running SPDY over WebSocket would be silly
- # [23:03] <othermaciej> gregw: do you believe -76 has less consensus than -75?
- # [23:03] <gregw> I think that lots of -76 has consensus, but that parts do not
- # [23:03] <othermaciej> that doesn't answer my question
- # [23:03] <gregw> why would running SPDY over websocket be silly? there is interest on the EITF WG list
- # [23:03] * Joins: workmad3 (~workmad3@cpc3-bagu10-0-0-cust651.1-3.cable.virginmedia.com)
- # [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])
- # [23:04] <gregw> -75 has consensus in as much as it reflects the implementations currently shipping
- # [23:04] <othermaciej> because SPDY doesn't need or want an additional framing layer
- # [23:04] <gregw> I think we all accept there are problems
- # [23:04] * Joins: john_fallows (~j_r_fallo@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net)
- # [23:04] <gregw> but it has a framing layer
- # [23:04] * Quits: miketaylr (~miketaylr@38.117.156.163) (Remote host closed the connection)
- # [23:04] <othermaciej> the only implementation shipping -75 is Chrome and it's in the process of being rewritten to -76
- # [23:04] <gregw> so why are we inventing 2 new framing layers that go over HTTP intermediaries
- # [23:04] * Joins: sidda (~sidda@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net)
- # [23:04] <gregw> surely it would be best to come up with only 1
- # [23:04] <franksalim> SPDY is not intended to go over HTTP intermediaries
- # [23:04] <gregw> othermaciej: have a read of the list of impls on wikipedia
- # [23:05] <gregw> there are 10s
- # [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?
- # [23:05] <jgraham> gregw: There are many server side implementations. But they are worthless without clients
- # [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
- # [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
- # [23:06] <Hixie> :-)
- # [23:06] <othermaciej> I'm pretty sure all the client implementations listed in Wikipedia are going to upgrade to -76
- # [23:07] <othermaciej> -76 definitely does not meet the HTTP compliance requirement any *less* than -75
- # [23:07] <Hixie> (i mean, i've written at least 3 myself)
- # [23:07] <othermaciej> it definitely meets it more, and arguably meets it completely
- # [23:07] <gregw> Hixie: so are impls less important that clients?
- # [23:07] <Hixie> the HTTP compliance requirement isn't even a goal, IMHO.
- # [23:07] <Hixie> gregw: server impls are far less important than clients, yes
- # [23:08] <gregw> obviously not here... but it is in the IETF WG
- # [23:08] <Hixie> i'm in the IETF WG
- # [23:08] <Hixie> as is maciej
- # [23:08] <gregw> anyway... I'm obviously not making my point here
- # [23:08] <gregw> so I'll leave you be
- # [23:08] <othermaciej> I'm not sure what's better about -75 than -76
- # [23:08] <gregw> no random bytes outside of the request
- # [23:08] <gregw> put them in a header and it would be a lot better
- # [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
- # [23:09] * Joins: tndH (~Rob@cpc2-leed18-0-0-cust427.leed.cable.ntl.com)
- # [23:09] <othermaciej> I don't recall a requirement that the handshake request must not have a body
- # [23:10] <othermaciej> certainly that's not required for the "http compliance" requirement
- # [23:10] <gregw> I'm cool if they are a legal body
- # [23:10] <gregw> but they are not
- # [23:10] <othermaciej> -75 also blatantly doesn't meet that requirement
- # [23:10] * jgraham would still like examples of actual deployed HTTP servers that cannot cope with -76
- # [23:10] <othermaciej> why are they not a legal body?
- # [23:10] <Hixie> per HTTP, the eight bytes the client send are the first eight bytes of a second pipelined request
- # [23:10] <othermaciej> can you point to a specific conformance requirement in the HTTP RFC that they violate?
- # [23:10] <Hixie> that's intentional, the whole point is to break intermediaries who don't know websocket
- # [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
- # [23:11] <othermaciej> Hixie: so HTTP doesn't allow a request body without Content-Length?
- # [23:11] <Hixie> not for GET iirc
- # [23:11] <gregw> Hixie: +1
- # [23:11] <othermaciej> the WebSocket request is a GET?
- # [23:11] <othermaciej> (it doesn't allow a body at all for GET)
- # [23:11] <Hixie> yes
- # [23:11] <Hixie> yes it does
- # [23:11] <Hixie> you can set Content-LEngth with a GET
- # [23:11] <gregw> and thus needs a content-length or chunking to have a body
- # [23:11] <Hixie> (but nobody does it)
- # [23:11] <othermaciej> I see
- # [23:11] <othermaciej> would sending a Content-Length be a problem?
- # [23:11] <Hixie> gregw: no the whole POINT is to cause the intermediaries to fail
- # [23:11] <Hixie> othermaciej: yes, cos then intermediaries wouldn't fail
- # [23:12] <gregw> it might cause some intermediaries to fail sometimes
- # [23:12] <Hixie> from the point of view of the client, it's not HTTP at all, it's websocket the whole time
- # [23:12] <othermaciej> Hixie: do we have data showing that this makes unaware intermediaries fail early?
- # [23:12] <gregw> they will fail anyway becuause Upgrade is hop by hop
- # [23:12] <Hixie> from the point of view of an HTTP server, it's an HTTP request followed by a bogus request
- # [23:12] <gregw> if the intermediary does not know about websocket, it will not forward the upgrade
- # [23:12] <othermaciej> (more so than anything else in the handshake)?
- # [23:12] <Hixie> from the point of view of a WebSocket server, it's a WebSocket request
- # [23:12] <gregw> unless it is a dumb byte copier
- # [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
- # [23:13] <gregw> in which case the random bytes will be copied
- # [23:13] * Quits: sidda (~sidda@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net) (Remote host closed the connection)
- # [23:13] <gregw> jgraham: I'm not advocating that
- # [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
- # [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
- # [23:13] <gregw> Hixie: but if you send weboscket data before the 101, then you are not HTTP compliant
- # [23:14] <Hixie> gregw: intermediaries don't follow the spec, they pass upgrades through unmodified
- # [23:14] <gregw> it is a HTTP connection until the 101 is sent
- # [23:14] <othermaciej> Hixie: I guess non-anecdotal data would be what we need to determine if this mechanism is effective for its purpose
- # [23:14] <gregw> if intermediaries pass the upgrade unchanged, then they will probaby copy the bytes as well
- # [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
- # [23:14] <jgraham> gregw: Allowing arbitary response codes seems like more complexity. Maybe not the full comlexity of HTTP
- # [23:14] <Hixie> othermaciej: which is basically what this handshake does now
- # [23:14] <gregw> or just make it legal HTTP as the IETF wants
- # [23:15] <gregw> jgraham: that's only for consenting clients/servers. it is not a MUST requirement
- # [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
- # [23:15] <othermaciej> Hixie: would it cause a problem to send the random bytes after the "successful" 101 response?
- # [23:15] <gregw> jgraham: but if a client and server want to use BASIC or DIGEST auth, then why not let them use it?
- # [23:15] <jgraham> gregw: Consenting serves, yes. I don't see how any client could avoid it
- # [23:16] <othermaciej> john_fallows: that's a neat idea
- # [23:16] <Hixie> gregw: argument from authority has no effect here (invoking the IETF's name won't win you the argument)
- # [23:16] <gregw> jgraham: there is no need to follow a 401
- # [23:16] <Hixie> gregw: especially since we are part of the IETF WG
- # [23:16] <gregw> it's just that the server will only allow clients that do connect
- # [23:16] <othermaciej> argument from authority shouldn't win in the IETF either
- # [23:16] <Hixie> othermaciej: it doubles the RTT for the handshake
- # [23:16] <jgraham> gregw: That's the same as saying "all clients need to implement it"
- # [23:16] <othermaciej> Hixie: what about john_fallows's POST idea?
- # [23:17] <gregw> jgraham: well all the browsers have it already... so it's not a big deal
- # [23:17] <gregw> othermaciej: that is still illegal HTTP
- # [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.
- # [23:17] <Hixie> othermaciej: but i don't think it'd make gregw happier
- # [23:17] * Joins: sidda (~sidda@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net)
- # [23:18] <othermaciej> Hixie: would it be technically legal HTTP?
- # [23:18] <jgraham> gregw: I am unconvinced it is that simple, but have no experience with implementing a client
- # [23:18] <gregw> Hixie: true. I think it should be HTTP legal until the 101 is received
- # [23:18] <Hixie> othermaciej: off-hand, no idea
- # [23:19] <othermaciej> I can't find any requirement to send Content-Length in a request
- # [23:19] <othermaciej> I guess I need to read the HTTP RFC more carefully
- # [23:19] <gregw> without something to indicate the content length, it is not legal
- # [23:19] <othermaciej> gregw: or if you have a cite for what conformance requirement is violated, that would help
- # [23:19] * Quits: franksalim (~frank@adsl-75-61-84-181.dsl.pltn13.sbcglobal.net) (Ping timeout: 264 seconds)
- # [23:19] <zcorpan> are there other ways to make intermediaries fail while being legal http?
- # [23:19] <othermaciej> ah:
- # [23:19] <gregw> othermaciej: you need to look at RFC2616 in the section about marking body ends
- # [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."
- # [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."
- # [23:20] * Quits: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
- # [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.
- # [23:21] <othermaciej> Hixie: that's not a conformance requirement (and doesn't seem to quite match the server requirements)
- # [23:21] <Hixie> gregw: so you just feel like stop energy, you don't seem to be helping.
- # [23:21] <gregw> Hixie: true, but I don't think your solution works anyway, and I don't think it is actually possible
- # [23:21] <Hixie> othermaciej: oh, good point
- # [23:21] <gregw> intermediairies will either be good or they will be stupid byte copiers
- # [23:22] <othermaciej> however, what I quoted is a MUST-level requirement for HTTP 1.1 clients
- # [23:22] <gregw> your proposal does not help with the later and is not needed for the former
- # [23:22] <zcorpan> othermaciej: so if the server is known to be compliant, that MUST doesn't apply
- # [23:22] <othermaciej> Hixie: could the random content bytes piggyback on the packet for the first client message?
- # [23:22] * Joins: roc (~roc@203-97-204-82.dsl.clear.net.nz)
- # [23:22] <gregw> zcorpan: but then it is either a content length or chunking
- # [23:22] <othermaciej> zcorpan: right - though connecting to a random server, you have no way to know
- # [23:22] <gregw> let me find the section....
- # [23:22] <Hixie> gregw: evidence does not bear this out
- # [23:22] * Joins: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net)
- # [23:23] <gregw> Hixie: then please publish the evidence
- # [23:23] <othermaciej> gregw: at least in section 4.4 Message Length, there doesn't seem to be a requirement to that effect
- # [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
- # [23:23] <Hixie> gregw: the data was sent to the hybi list
- # [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
- # [23:23] <othermaciej> http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4
- # [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
- # [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
- # [23:24] <Hixie> othermaciej: (the client in that case is a websocket client, so it isn't bound to HTTP rules)
- # [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
- # [23:25] <gregw> Hixie: so you can make the first message of the websocket connect a check message
- # [23:25] <gregw> if a message is not quickly received, then the upgrade did not work
- # [23:25] <gregw> and you have fail fast
- # [23:26] <gregw> the first message can be an application message if one is available, or some kind of noop ping
- # [23:26] <gregw> there is already talk about keep-alives and pings
- # [23:26] <gregw> so just send one immediately if there is no application message
- # [23:27] <gregw> that also separates out the attack protection mechanism (the random bytes) from the fast fail mechanism
- # [23:27] <Hixie> othermaciej: well HTTP 1.1 servers can assume they are HTTP 1.1, so the 1.0 requirement doesn't apply
- # [23:27] <Hixie> gregw: how can you do that without requiring an extra RTT?
- # [23:28] * Quits: svl (~me@ip565744a7.direct-adsl.nl) (Quit: And back he spurred like a madman, shrieking a curse to the sky.)
- # [23:28] <gregw> well if you have an application message, you send that just as you would anyway
- # [23:28] <gregw> if you don't then send a ping
- # [23:28] * Joins: jwalden (~waldo@68.65.169.207)
- # [23:28] <gregw> ok so the fail fast is not as fast
- # [23:28] <gregw> the failure has one more RTT
- # [23:28] <gregw> but that's only for failures
- # [23:28] <Hixie> that makes the client behaviour depnd on JS execution speed, which is an interop nightmare
- # [23:29] <Hixie> i'd much rather do what we're doing now
- # [23:29] <gregw> no - the browser can send a ping immediately the 101 is received
- # [23:29] <Hixie> wait, that won't work anyway
- # [23:29] <gregw> but what you are doing now is breaking HTTP and will cause all sorts of future problems
- # [23:29] <Hixie> the whole point is the API doesn't say it's connected until it's connected
- # [23:30] <Hixie> if we require a ping first, then there's an extra RTT before we're connected
- # [23:30] <zcorpan> i don't like adding more latency to the handshake
- # [23:30] <Hixie> that's a terrible solution
- # [23:30] <Hixie> we're
- # [23:30] <Hixie> not
- # [23:30] <Hixie> breaking
- # [23:30] <Hixie> HTTP
- # [23:30] <Hixie> this isn't HTTP
- # [23:30] <gregw> it is until the 101 is sent
- # [23:30] <Hixie> no, it's not
- # [23:30] <Hixie> that's BS
- # [23:30] <Hixie> plus, even if it was, as maciej has pointed out, it's not actually invalid
- # [23:31] * Quits: Maurice (copyman@5ED573FA.cable.ziggo.nl)
- # [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
- # [23:31] <gregw> or you can close the connection... but that's not useful for a request
- # [23:32] <Hixie> quote the spec that says that
- # [23:32] <Hixie> please
- # [23:32] <Hixie> cite the MUST requirement
- # [23:32] <gregw> in section 4.4
- # [23:32] <gregw> there are only 5 ways
- # [23:32] <Hixie> paste the sentence
- # [23:32] <gregw> and 1 does not apply, nor does 5
- # [23:32] <gregw> so you are left with 2, 3 or 4
- # [23:33] <Hixie> 4.4 is all server requirements
- # [23:33] <Hixie> except for the HTTP 1.0 compat requirement maciej pasted
- # [23:33] <Hixie> which as noted isn't relevant here
- # [23:33] * Quits: eighty4 (~eighty4@c-d9cee455.012-403-6c6b701.cust.bredbandsbolaget.se) (Remote host closed the connection)
- # [23:33] <gregw> no it is for any HTTP message
- # [23:33] * Quits: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net) (Ping timeout: 264 seconds)
- # [23:34] <Hixie> it's about how to receive the message
- # [23:34] <Hixie> which in the case of a client-sent message, is a server-side requirement
- # [23:34] <gregw> it's a HTTP message requirement
- # [23:35] <Hixie> no, it's not
- # [23:35] <gregw> and the random bytes will break a HTTP connection if the upgrade is not accepted
- # [23:35] <Hixie> there's no HTTP connection in that case
- # [23:35] <Hixie> the client will abort regardless of the response
- # [23:35] <gregw> why?
- # [23:35] <Hixie> because the websocket spec requires it to
- # [23:35] * Joins: sicking (~chatzilla@nat/mozilla/x-vzleqeqstgheqbyl)
- # [23:36] <gregw> but you are not in websockets! the upgrade faile
- # [23:36] <gregw> but you are not in websockets! the upgrade failed
- # [23:36] <Hixie> if you're not a websocket client, then you didn't send an upgrade request or the 8 random bytes
- # [23:36] <zcorpan> gregw: the client is always in websockets
- # [23:36] <gregw> so you have a valid HTTP connection that should be able to be used without requirement for another RTT
- # [23:37] <gregw> you might be a client that can be websocket or can be something else
- # [23:37] <Hixie> the connection itself isn't HTTP or WebSockets or whatnot. That's a meaningless abstraction.
- # [23:37] <Hixie> it's just bytes
- # [23:37] <gregw> so it tries the upgrade, and if that does not work, keeps using HTTP
- # [23:37] <Hixie> what matters is what the peers think is going on
- # [23:37] <Hixie> there is no way to try an upgrade and continue using HTTP
- # [23:37] <gregw> so you are going to require and extra RTT for all the apps that can't use Websocket
- # [23:37] <Hixie> that's a violation of the websocket protocol
- # [23:37] <gregw> just so they can try to use it
- # [23:37] <gregw> but until the 101, you are not in websockets
- # [23:37] <Hixie> there's no other way to use the API
- # [23:37] <gregw> you are in HTTP
- # [23:38] * Joins: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net)
- # [23:38] <Hixie> the client is NEVER in HTTP
- # [23:38] <gregw> there are other clients than JS
- # [23:38] <Hixie> those clients should use TCP
- # [23:38] <Hixie> websockets is irrelevant to those clients
- # [23:38] <gregw> well that's not what is happening out there
- # [23:38] <Hixie> those clients do not need to send the 8 bytes
- # [23:38] <Hixie> they can do whatever they want to upgrade the server
- # [23:38] <gregw> some of them are called browsers!
- # [23:39] <Hixie> you are not making any sense here
- # [23:39] <gregw> well that's a winning argument
- # [23:39] <gregw> l8r
- # [23:40] * Joins: JusticeFries (~justicefr@2002:43ad:ef61:0:226:8ff:fedd:9464)
- # [23:43] <jgraham> FWIW it seems likely to me that non-browser clients for websockets will be used
- # [23:43] * Quits: aroben (~aroben@unaffiliated/aroben) (Read error: Connection reset by peer)
- # [23:44] <Dashiva> Wouldn't they just connect directly with tcp without going via http?
- # [23:44] <jgraham> Because there is value in interacting with the websocket ecosystem outside the browser
- # [23:44] <jgraham> Dashiva: Connect to what?
- # [23:44] <jgraham> Assume some service is provided over websockets for browsers
- # [23:45] <jgraham> And someone wants to develop a custom non-browser app that connets to exactly the same service
- # [23:45] * Joins: cpearce (~cpearce@203-97-204-82.dsl.clear.net.nz)
- # [23:48] * Joins: nessy (~Adium@124-170-18-159.dyn.iinet.net.au)
- # [23:52] <othermaciej> then they couldn't use a general-purpose http client to talk to that service
- # [23:52] * Quits: workmad3 (~workmad3@cpc3-bagu10-0-0-cust651.1-3.cable.virginmedia.com) (Remote host closed the connection)
- # [23:53] <gregw> but they want to be able to tunnel bidirectional communication through a HTTP infrastructure (eg firewalls, proxies and intermediaries)
- # [23:53] <gregw> plus browsers themselves might want to do websocket extensions
- # [23:54] <gregw> so the "can't do it in JS, so can't do it at all" argument is not that valid
- # [23:54] <jgraham> I'm not suggesting a non-browser-client would be a general purpose HTTP client
- # [23:54] <jgraham> It would be custom websockets code
- # [23:54] <othermaciej> I agree that this seems likely
- # [23:55] <jgraham> (this is why I would like the client side to be relatively simple to implement)
- # [23:55] <gregw> jgraham: I don't anybody disagrees with that
- # [23:56] <gregw> but that is not to say that we cannot have optional less simple solutions as well
- # [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
- # [23:57] <jgraham> gregw: I don't really believe in optional features
- # [23:57] <jgraham> othermaciej: agreed that complexity for security is well justified
- # [23:58] <gregw> jgraham: but that says that websocket has to have an authentication system that will keep everybody happy for all the time
- # [23:58] <gregw> and compression that will last forever
- # [23:58] <gregw> jgraham: but I agree that options have to be carefully thought out so they are not by default mandatory
- # [23:59] * Quits: m_W (~mwj@c-69-141-106-205.hsd1.nj.comcast.net) (Ping timeout: 265 seconds)
- # [23:59] * Joins: cohitre (~cohitre@174-21-104-138.tukw.qwest.net)
- # Session Close: Tue May 04 00:00:00 2010
The end :)