| 00:00 | <Hixie> | assuming your "(btw,...)" was to me, i don't understand the question |
| 00:00 | <annevk> | Hixie, oh, see your inbox in that case |
| 00:00 | <sicking> | annevk: case sensitivity is tricky since methods get normalized |
| 00:00 | <annevk> | sicking, that sounds like a bug |
| 00:00 | <annevk> | in theory methods are case sensitive |
| 00:01 | annevk | ponders |
| 00:01 | <sicking> | right, but people use "post" as well as "POST" |
| 00:01 | <sicking> | and probably "Post" too |
| 00:01 | sicking | wants to use "P057" |
| 00:02 | <annevk> | "9051" |
| 00:03 | <annevk> | sicking, in XMLHttpRequest we made a limited set of HTTP methods case-insensitive |
| 00:04 | <annevk> | although I believe implementations differ from that |
| 00:04 | <annevk> | maybe we should just defy the HTTP gods and make them all case insensitive US-ASCII strings... |
| 00:09 | <sicking> | hmm.. looks like we never change the case |
| 00:09 | <sicking> | we must be somewhere... |
| 00:10 | <annevk> | sicking, btw, ideas non same-origin stuff for XHR1 is also appreciated, especially the last open issue with respect to data:, javascript: etc. |
| 00:10 | <annevk> | I think that's the only thing apart from the Microsoft comment that's blocking a new draft |
| 00:10 | <sicking> | annevk: i think data should always be allowed, and javascript never |
| 00:10 | <sicking> | annevk: well.. |
| 00:11 | <annevk> | except after a redirect? |
| 00:11 | <annevk> | the redirects make it annoying |
| 00:11 | <Hixie> | you mean redirect to data: ? |
| 00:12 | <annevk> | Hixie, yeah |
| 00:12 | <Hixie> | you should basically abort as soon as you redirect out of the origin, as far as i can tell |
| 00:12 | <sicking> | Hixie: why? |
| 00:12 | <annevk> | not with XHR2 |
| 00:12 | <Hixie> | with xhr1 i mean |
| 00:12 | <sicking> | ah |
| 00:12 | <sicking> | yeah |
| 00:12 | <sicking> | well |
| 00:13 | <sicking> | i don't really care much about xhr1 there as we already support xhr2 for same-origin stuff |
| 00:13 | <Hixie> | if example.com has a page that redirects to data: to show sensitive data, we don't want evil.invalid to redirect to the page that redirects to data: |
| 00:13 | <Hixie> | yeah i'm just saying for anne's blocking issue |
| 00:14 | <annevk> | for xhr2 you'd need an out-of-origin flag that gets set once you go out of origin which you check the moment you hit a data: URI |
| 00:14 | <annevk> | i think there's such a flag already |
| 00:15 | <annevk> | it would prolly be good to publish xhr2 too, even though it's not done yet |
| 00:17 | <Hixie> | origin->data: should be ok |
| 00:17 | <Hixie> | only origin->remote->data: is bad (and origin->remote is the step that makes it "bad") |
| 00:17 | <Hixie> | origin->remote->origin is also "bad" |
| 00:18 | <sicking> | bad meaning what? |
| 00:18 | <Hixie> | yeah, not sure how to handle that one |
| 00:18 | <sicking> | that you need AC checks? |
| 00:19 | <Hixie> | doing AC checks against the origin is pointless since you're supposing that the origin is evil |
| 00:19 | <annevk> | i think origin->remote->origin is handled by doing ac checks on origin which is kind of pointless |
| 00:19 | <Hixie> | hm, origin->remote->origin is an interesting way of doing cross-origin xhr with UA-provided credentials today |
| 00:20 | <Hixie> | i assume we block that at the moment |
| 00:20 | <Hixie> | but it's unclear to me what XHR2 should do in that case |
| 00:20 | <sicking> | no, today we bail as soon as we get the origin->remote redirect |
| 00:20 | <Hixie> | right |
| 00:20 | <sicking> | yeah |
| 00:20 | <Hixie> | xhr2 should definitely mention that in the security section |
| 00:20 | <Hixie> | not sure how to solve it though |
| 00:20 | sicking | ponders disabling cross-origin redirects in initial release |
| 00:21 | <sicking> | so one way of solving it is this: |
| 00:21 | <annevk> | there's a flag that tells you whether the initial request is same-origin or not |
| 00:22 | <sicking> | if you have origin->site A->site B->site C redirects |
| 00:22 | <sicking> | check all of origin, site A and site B against the AC rules |
| 00:22 | <Hixie> | jgraham: you still there? if so, i'm not sure how to handle "http://example.com/#comment" vs "http://example.com/ #comment" in the manifest, if we use # as the comment separator |
| 00:22 | <sicking> | and only if all pass allow the content |
| 00:22 | <Hixie> | jgraham: for similar reasons we can't use // as the comment delimiter |
| 00:23 | <Hixie> | so the redirects have to do what? include Access-Control: headers? |
| 00:23 | <annevk> | what's the attack scenario btw? |
| 00:24 | <sicking> | the redirects are normal. but the final doc would have to have AC rules allowing origin, A and B |
| 00:24 | <annevk> | what if site C is origin though |
| 00:24 | <sicking> | fine |
| 00:24 | <annevk> | you're thinking of another problem |
| 00:25 | <Hixie> | i can't really see any attack scenarios here that aren't already a problem with <img> to be honest |
| 00:25 | <sicking> | you check AC rules for origin anyway |
| 00:25 | <Hixie> | since the only data you get back is in the uri, and the origin has access to its own uris |
| 00:25 | <sicking> | Hixie: how so? with <img> you can never read the actual data |
| 00:25 | <Hixie> | there's no data to read here |
| 00:25 | <Hixie> | i'm talking about origin->a->origin |
| 00:25 | <Hixie> | or any case of evil->victim->evil |
| 00:25 | <annevk> | there's data in the URI |
| 00:26 | <annevk> | not? |
| 00:26 | <sicking> | no, i'm thinking victim->evil->vicitm |
| 00:26 | <Hixie> | annevk: right but you can read the uri |
| 00:26 | <Hixie> | sicking: why would victim redirect to evil? |
| 00:26 | <annevk> | with <img>? maybe with <iframe> |
| 00:27 | <Hixie> | yeah, with iframe |
| 00:27 | <sicking> | Hixie: out of curiosity, can you read the final uri of an <img> redirect? |
| 00:27 | <Hixie> | with an <iframe> you can |
| 00:27 | <sicking> | you can? |
| 00:27 | <Hixie> | (on another note, why does rfc3986 have a stick figure in the diagram in section 3) |
| 00:27 | <sicking> | you can't read iframe.contentWindow.location |
| 00:27 | <Hixie> | sure, just read contentDocument.location |
| 00:27 | <Hixie> | you can, it's yours |
| 00:27 | <sicking> | nope, it's write-only |
| 00:28 | <sicking> | iirc |
| 00:28 | <sicking> | i should add :) |
| 00:28 | <Hixie> | we're talking about the case where you've redirected back to yourself, right? |
| 00:28 | <sicking> | ah, ok, in that case |
| 00:28 | <sicking> | sorry, got side tracked |
| 00:28 | <Hixie> | the cases when you don't redirect to yourself, we've already taken care of |
| 00:28 | <Hixie> | as far as i can tell |
| 00:28 | <sicking> | yeah, sorry, i was talking about something else |
| 00:29 | <annevk> | ok, so origin->foobar->origin does not need an access check and is ok |
| 00:29 | <annevk> | as it has the same risks that <iframe> already has |
| 00:29 | <annevk> | fun |
| 00:30 | <sicking> | hmm.. |
| 00:30 | <sicking> | i'm not entirely convinced |
| 00:31 | <Hixie> | what's the attack scenario that you can't already do? |
| 00:31 | <sicking> | but i don't have the attack scenario entierly clear |
| 00:32 | <sicking> | why do we have a flag for has-been-crossorigin? |
| 00:32 | <annevk> | sicking, because at some point we deemed this to be a problem |
| 00:33 | <annevk> | and solved it wrongly |
| 00:36 | <annevk> | (There is a flag in the current spec for initially same-origin that helps with a non same-origin redirect for non-GET requests.) |
| 00:37 | <annevk> | sicking, btw, user/password can't be included in redirects, or do you mean as part of the URI? |
| 00:39 | <sicking> | yeah, as part of the uri |
| 00:39 | <sicking> | you can redirect to http://foo:bar⊙eo/ |
| 00:40 | <annevk> | yup, k |
| 00:40 | <Hixie> | blimey URIs use a lot of symbols. ok if we're to allow comments at end of lines we have to have a comment delimited that isn't one of + - . : / @ _ ~ % ! $ & ' ( ) * , ; = [ ] ? # |
| 00:40 | <Hixie> | what does that leave |
| 00:40 | <annevk> | Hixie, why would fragment identifiers be part of the URIs in the manifest? |
| 00:40 | <sicking> | sol |
| 00:40 | <annevk> | a pipe? |
| 00:41 | <annevk> | http://test | comment |
| 00:41 | <sicking> | hmm.. it's on my swedish keyboard, but on the US one |
| 00:41 | <sicking> | ¤ |
| 00:41 | <annevk> | \\ |
| 00:41 | <Hixie> | annevk: i have no idea, but it would be confusing if we disallowed it since it wouldn't look disallowed |
| 00:41 | <Dashiva> | § :) |
| 00:42 | <annevk> | " comment |
| 00:42 | <annevk> | { comment } |
| 00:42 | <sicking> | ok kids, gotta profile stuff, so closing un-needed apps |
| 00:42 | <sicking> | see ya l8er |
| 00:43 | <Hixie> | the punctuation we have left in ASCII is: " < > \ ^ ` { | } |
| 00:43 | <Hixie> | we could use {...} like in pascal |
| 00:44 | <Philip`> | Why can't the comment just require a space before it? |
| 00:44 | <Dashiva> | An end delimiter seems annoying for end-of-line comments |
| 00:45 | <Hixie> | Philip`: because the space doesn't look important |
| 00:45 | <annevk> | http://example.org/test test/ |
| 00:45 | <Hixie> | that'd be a valid line in the fallback section |
| 00:45 | <Philip`> | I mean a space before a #, so http://example.org/#test is still a single URI but http://example.org/ #test is a comment |
| 00:46 | <Dashiva> | Seems prone to errors |
| 00:46 | <Philip`> | unless #test might be interpreted as a relative URI |
| 00:46 | <annevk> | Hixie, oh interesting, so %20 is required |
| 00:46 | <Dashiva> | I'd prefer | or maybe >> |
| 00:46 | <Dashiva> | Looks delimiter-ish |
| 00:46 | <Hixie> | Philip`: beacuse it would mean that "http://example.org/# unimportant" was a fallback line instead of one URI with a comment, despite looking like the latter |
| 00:47 | <Hixie> | (because "http://example.org/#" and "unimportant" are both valid URIs) |
| 00:47 | <kingryan> | what about '*' ? |
| 00:47 | <Hixie> | kingryan: the punctuation we have left in ASCII is: " < > \ ^ ` { | } |
| 00:48 | <kingryan> | oh, I missed that |
| 00:48 | kingryan | has no idea where * is used in URLs |
| 00:48 | <Hixie> | kingryan: me either, but there we go |
| 00:48 | <kingryan> | " would be like VB, right? |
| 00:48 | <kingryan> | or was that a single quote? |
| 00:49 | <kingryan> | http://example.com/ "an example url |
| 00:49 | <Philip`> | http://search.cpan.org/~kane/Acme-Comment/lib/Acme/Comment.pm lists some current comment syntaxes |
| 00:49 | <annevk> | file names and such can include most of those characters btw so URIs could include them... |
| 00:50 | <Philip`> | "Pilot: Single-line comments in the syntax \/\/ are supported." - that starts with an acceptable character |
| 00:50 | Dashiva | ponders HTML comments |
| 00:50 | <Dashiva> | They start with a non-URL char |
| 00:50 | annevk | isn't sure whether URI legalness is cared much for and whether the current syntax should be loosened |
| 00:51 | <kingryan> | why don't we put a special character in the 7th column, like cobol? |
| 00:51 | <annevk> | yeah, lets introduce the insane comment parsing everywhere! |
| 00:51 | <Hixie> | well this discussion is pretty much cementing my conclusion to avoid end-of-line comments :-P |
| 00:52 | <kingryan> | Hixie: aren't you concerned that people will use them anyway? |
| 00:52 | <Philip`> | We could have a table at the end of the file which lists the byte ranges in the earlier part of the file that should be interpreted as comments |
| 00:52 | <Hixie> | kingryan: if they do, the entire line will be ignored |
| 00:52 | <kingryan> | until some browser decides to be more liberal in their parsing :) |
| 00:53 | <Hixie> | Philip`: if we do that, i'd want the offsets expressed relative to 12-bit words |
| 00:53 | <Dashiva> | annevk: Well, browsers have to be able to parse them anyway :P |
| 00:53 | <Hixie> | kingryan: since the spec will define error handling too, it'll be less likely to happen. but yes, if we get implementation feedback to the effect that we must change the rules, then that's a different matter. |
| 00:54 | <Dashiva> | Besides, it would just be a check for <!-- like in JS, since it goes to the end of the line anyway. The --> would just become part of the comment if included |
| 00:55 | <karlUshi> | Dashiva: which might break some CMS |
| 00:55 | <karlUshi> | <!-- begin content --> |
| 00:55 | <Philip`> | Dashiva: That sounds evil, since people would expect they could put <!-- ... --> on separate lines surrounding a block they want to remove |
| 00:55 | <Dashiva> | Philip`: Then they haven't used enough JS >:D |
| 00:57 | <Dashiva> | What about a heredoc-ish thing? The manifest can define its own comment delimiter |
| 00:57 | annevk | -> bed |
| 00:59 | <Hixie> | lol http://bugs.webkit.org/show_bug.cgi?id=5909#c30 |
| 01:05 | <Dashiva> | About time they admitted it :P |
| 01:11 | <othermaciej> | annevk, Hixie: sorry meeting |
| 01:11 | <othermaciej> | if it just replies with what methods are allowed, shouldn't it be a different method, not a different header? |
| 01:12 | <othermaciej> | if it never actually gives you the entity body then it seems to me the behavior is more header-like than method-like |
| 06:53 | <hsivonen> | hmm. so John Foliot considers suing people "social engineering"... |
| 06:54 | <othermaciej> | indeed, an unusual point of view |
| 07:23 | <hsivonen> | Hixie: should inline data templates be outright non-conforming in text/html inputs, then? |
| 07:24 | <hsivonen> | Hixie: Re: one possible context: do you mean the rule content model should be bimorphic, embedded, metadata or any table slice? |
| 07:25 | <hsivonen> | Hixie: I don't think I can agree at present (without examples to the contrary) that datatemplates were simpler than repetition templates for either authors or UA implementors |
| 07:26 | <hsivonen> | Hixie: were there cases where repetition templates sucked badly and that data templates address? |
| 07:28 | <othermaciej> | I still don't really understand the use cases for repetition templates |
| 07:29 | <othermaciej> | people usually mention online store shopping carts but they are clearly not useful for that |
| 07:29 | <hsivonen> | off-hand, I remember implementing repeating forms twice: |
| 07:30 | <hsivonen> | 1) a simple task tracking app |
| 07:30 | <hsivonen> | 2) an app for authoring online questionnaires |
| 07:31 | <hsivonen> | though the latter was too ajaxy to be really done without JS |
| 07:31 | <hsivonen> | but I guess it could have been done without JS with repetition templates |
| 07:32 | <othermaciej> | I guess I really wonder how often a button that just does add or remove of a repetition item is useful; it would have to be a case where you don't want to do anything else with script when adding or removing a repeat item |
| 07:32 | <hsivonen> | othermaciej: yes, I guess most often you want to do something else as well |
| 07:32 | <othermaciej> | it seems weird to me to have specialized kinds of button controls just for these two actions |
| 07:33 | <hsivonen> | with data templates, I get an even stronger feeling that it is something complex that only deals with simple cases and real apps will have to work around the limitations anyway |
| 07:34 | <hsivonen> | which is why I asked on the list why querySelector() and E4X tree literals aren't the answer |
| 07:34 | <othermaciej> | well, having a clear model for escaping to script helps |
| 07:34 | <othermaciej> | I don't think any current E4X implementation has good integration with the DOM |
| 07:34 | <othermaciej> | maybe I am wrong on this |
| 07:34 | <othermaciej> | in any case E4X is hardly less complex than datatemplate |
| 07:35 | <hsivonen> | Hixie: anyway, my intuitive reaction to repetition templates was positive and my intuitive reaction to data templates was very negative (regardless of RELAX NG considerations). I'd like to see more examples. |
| 07:35 | <hsivonen> | othermaciej: E4X isn't less complex, but it solves the problem of DOM fragment literals in the right place |
| 07:36 | <othermaciej> | hsivonen: you think the JavaScript level is the right place for DOM fragment literals? |
| 07:37 | <othermaciej> | (and really E4X only gives you XML fragment literals, converting them to DOM form is an excercise left to the reader) |
| 07:37 | <hsivonen> | othermaciej: yes, because for JS, DOM fragments are very common (like strings and hashtables) |
| 07:37 | <hsivonen> | othermaciej: yeah, that's a problem |
| 07:38 | <othermaciej> | hsivonen: I guess the current state of the art is for JS to store DOM fragments as strings |
| 07:38 | <othermaciej> | and use stuff like innerHTML to get them into the tree |
| 07:38 | <hsivonen> | yes |
| 07:38 | <othermaciej> | sadly that is both much easier and much more performant than using DOM APIs |
| 07:38 | <othermaciej> | referring to fragments declared elsewhere does seem like a pain |
| 07:38 | <othermaciej> | hyatt tells me XUL's similar template feature was used to good effect |
| 07:39 | <hsivonen> | also vulnerable against unescaped data under concatenation |
| 07:39 | <othermaciej> | I guess it is mainly useful for data binding type use cases, but where your data model may change over time so XSLT is not suitable |
| 07:39 | <hsivonen> | othermaciej: did you see anne's link to the anti-XUL template article? |
| 07:41 | <othermaciej> | hsivonen: well, hyatt clearly has reason to be biased about things XULish |
| 07:42 | <othermaciej> | one thing that datatemplates seemed like they might be nice for is <datalist> used with an <input>; if the data source is external, you can convert it to the needed format client side |
| 07:43 | <othermaciej> | it would also be nice to have some way to get datagrid to bind to data |
| 07:43 | <othermaciej> | I did not see the link |
| 07:43 | <othermaciej> | is it in the logs? |
| 07:43 | <hsivonen> | I'm still entirely unconvinced that just writing JS binding glue isn't a better solution considering that it is backwards compatible and can do anything that is computable without having to escape to another solution |
| 07:44 | <hsivonen> | othermaciej: yes, it the logs. but here it is: http://www.jerf.org/resources/xblinjs/whyNotMozilla/notXulTemplates.html |
| 07:46 | <othermaciej> | the idea of general-purpose templating does sound kind of cool, but to be fair it also seems like the area is littered with half-assed failures |
| 07:47 | <hsivonen> | (even though querySelector() and E4X tree literals aren't backwards compatible, Prototype and jQuery plus innerHTML are Good Enough substitutes) |
| 07:47 | <othermaciej> | maybe better to stick to adopting solutions where there is no script-based alternative and/or where an appropriate solution is clear |
| 07:55 | <othermaciej> | reading that reminds me of using XSLT vs. a perl script and regexps for document transforms for some reason |
| 07:55 | <othermaciej> | "clever" declarative solution that makes simple things into a mind puzzle |
| 07:55 | <othermaciej> | some people find that sort of thing fun |
| 08:03 | <hsivonen> | Hixie: your blog front page seems to have so have Pingback-related UTF-8 badness (lone byte 0xC2 for example) |
| 08:05 | <othermaciej> | hsivonen: I'm asking hyatt to tell me about templates on #webkit |
| 08:30 | <othermaciej> | hello hyatt |
| 08:31 | <hyatt> | hi |
| 08:32 | <hsivonen> | hi |
| 08:34 | <hsivonen> | hyatt: do we expect Web apps to have multiple view of a data source often enough to engineer a built-in feature for that case? |
| 08:34 | <hyatt> | yeah that's a good question |
| 08:36 | <hsivonen> | when I did the "remarkably short" manual binding, I had code that loaded the model tree via XHR and looped over it to copy the data to the view tree. at the same time, as each view chunk was created, I added closures that captured model references as view onchange handlers, so changes to the view were immediately reflected in the model |
| 08:36 | <hsivonen> | then I used XHR for sending the model back |
| 08:36 | <hyatt> | those closures would take up a lot of memory |
| 08:37 | <hyatt> | if you mean you had 1 for each "data item" basically |
| 08:37 | <hsivonen> | yes, one for each item that needed to be synced back to the model |
| 08:38 | <othermaciej> | I can see how that might hurt if you had thousands of editable items (like a bookmarks list or something) |
| 08:38 | <hyatt> | thats the kind of stuff that xul templates would avoid |
| 08:38 | <hyatt> | having 3000 JS objects for closures |
| 08:38 | <hyatt> | for example |
| 08:40 | <hsivonen> | if I hadn't created new closures but had shared the same syncing function instance on each item and had a separate plain object reference to the model on each item would that have been acceptable? |
| 08:40 | <hsivonen> | does a custom object reference on a DOM node have such a memory overhead that creating new HTML language features is justified to avoid it? |
| 08:41 | <hyatt> | well some of this also depends on how well the template feature is implemented too |
| 08:41 | <hyatt> | it may take up a lot of memory also in order to efficiently transmit changes |
| 08:41 | <hsivonen> | especially considering that desktops already have abundant RAM and handheld resource grow all the time |
| 08:42 | <hyatt> | yeah |
| 08:42 | <hsivonen> | hyatt: what was the "yeah" in reference to? |
| 08:42 | <hyatt> | yeah i see your point |
| 08:43 | <hsivonen> | ok |
| 08:43 | <hyatt> | is there some way to observe changes in sqlite databases in whatwg's spec |
| 08:43 | <hyatt> | i don't think this feature is just about binding to XML DOM data back ends |
| 08:44 | <hyatt> | but should be about binding to a database |
| 08:44 | <othermaciej> | the whatwg spec doesn't have a way to observe changes on the database |
| 08:44 | <hyatt> | even if we never do something like datatemplate, we should make sure it's easy to observe database changes in JS |
| 08:44 | <othermaciej> | I'm not sure databases with sql-based APIs have that |
| 08:44 | <othermaciej> | I was thinking about it just now though |
| 08:44 | <hyatt> | i'm sure they must have something since i think mozilla is moving to that kind of database |
| 08:44 | <hyatt> | and xul templates have to work |
| 08:45 | <othermaciej> | seems like you can't just use the database as a data model if it doesn't have change notification, you need something on top |
| 08:45 | <hsivonen> | hyatt: can there be anything but the app itself modifying the database? wouldn't the right hand of the app effectively be observing what the left hand does with the db as an intermediate? |
| 08:45 | <othermaciej> | hsivonen: if the app is multiple windows and you can't observe, you need to make an ad-hoc change notification protocol |
| 08:45 | <hsivonen> | othermaciej: ok |
| 08:45 | <othermaciej> | you might even be running multiple instances that have no way (currently) to rendezvous |
| 08:46 | <othermaciej> | the Storage API does have change notifications |
| 08:46 | <othermaciej> | so you could use that for notification and the database for storage |
| 08:46 | <othermaciej> | but that seems crappy |
| 08:46 | <othermaciej> | I will ask the Safari team's local SQL experts about this tomorrow |
| 08:47 | <hyatt> | i really think you should be able to build UI easily from a local SQL database |
| 08:47 | <hyatt> | that might be modified dynamically |
| 08:47 | <hyatt> | e.g., maybe facebook dumps your friends list in there |
| 08:47 | <hyatt> | and updates it when you yank a friend |
| 08:48 | <hyatt> | would be cool if it was easy for the web page to just fix up the UI |
| 08:48 | <hyatt> | anywhere friends are being displayed |
| 08:49 | <aroben> | othermaciej: I think SQLite has callbacks for when data is changed |
| 08:49 | <hsivonen> | intuitively, the ability to register JS change listeners to a data source seems more complete than templating |
| 08:50 | <hyatt> | i certainly think it should be there |
| 08:50 | <hyatt> | regardless of whether templating is around |
| 08:50 | <aroben> | othermaciej: http://www.sqlite.org/capi3ref.html#sqlite3_update_hook |
| 08:50 | <hyatt> | (register change listeners to an SQL data source i mean) |
| 08:51 | <othermaciej> | aroben: ok, I'll get Brady to look at it and see if we can propose something |
| 08:51 | <hyatt> | the biggest negative i think about templates |
| 08:52 | <hyatt> | is that they can be rocket science |
| 08:52 | <hyatt> | to the average web site developer |
| 08:52 | <hyatt> | not many people at netscape could understand them |
| 08:52 | <hyatt> | but then again not many people at netscape could understand much of anything |
| 08:52 | <hsivonen> | basically, my concern with templates is this: the solution for easy cases and the solution for complex cases should not be separate but on the same continuum so that if you start with an easy case and find that you need to add something, you don't need to from the solution for easy cases go back to zero and restart with the solution for complex cases. |
| 08:53 | <hyatt> | yes i agree with that statement |
| 08:55 | <hyatt> | so here's some of what made templates nasty in xul |
| 08:55 | <hyatt> | templates were basically built on top of something called RDF |
| 08:55 | <hyatt> | RDF's job was to aggregate data from multiple data sources |
| 08:55 | <hyatt> | into a graph |
| 08:56 | <hyatt> | thus you could think of data as being a collection of "assertions" made between nodes in some universe |
| 08:56 | <hyatt> | much of the complexity and headaches of xul templates |
| 08:57 | <hyatt> | arose from having to talk to a graph rather than a tree |
| 08:57 | <hyatt> | e.g., it wasn't clear what relationships would constitute "parent/child" relationships |
| 08:57 | <hyatt> | and which would be "attributes" |
| 08:58 | <hyatt> | RDF also had funny performance limitations |
| 08:58 | <hyatt> | because it produces a graph |
| 08:58 | <hyatt> | it's actually very bad at say removing an item from an ordered sequence |
| 08:58 | <hyatt> | because what you have is arcs labeled 1, 2, 3, 4, 5 etc. |
| 08:58 | <hyatt> | so inserting an item could force a renumbering to occur |
| 08:59 | <hyatt> | in other words conventional "DOM"-like trees are actually very clumsy to operate on or manipulate when represented via RDF |
| 08:59 | <hyatt> | and yet much of the data that XUL wanted to operate on was more naturally representable as a tree rather than a graph |
| 08:59 | <hyatt> | e.g., bookmarks |
| 09:00 | <hyatt> | so RDF can be blamed for a lot of the performance troubles that XUL templates have |
| 09:00 | <hyatt> | it's not really the template that is slow, it's the RDF updating |
| 09:01 | <hyatt> | so anyway if the back end is more of a tree model |
| 09:01 | <hyatt> | or even a list model where items can be updated and indexed efficiently |
| 09:02 | <hyatt> | the syntax and performance of a template should be much better than in XUL |
| 09:03 | <hyatt> | i think the big question is, will web pages be producing apps of such complexity that they would benefit from templates |
| 09:03 | <hyatt> | most of the time, the answer is "probably not" |
| 09:14 | <hsivonen> | yeah, there's the problem that the application needs to match the level of complexity templates assume. If it is too simple, templates don't help. If it is too complex, templates don't help, either (without growing into an awkward programming language like XSLT) |
| 09:14 | <hyatt> | there is something XSLT-like about templates |
| 09:14 | <hyatt> | but i do think they are simpler |
| 09:14 | <hyatt> | than XSLT at least |
| 09:14 | <hsivonen> | zcorpan: HTML 4.0 is now special-cased: http://validator.nu/?doc=http%3A%2F%2Fln.hixie.ch%2F |
| 09:14 | <hyatt> | you can think of the firefox "web app" as being incredibly complex :) |
| 09:14 | <hyatt> | hsivonen: this is kind of a feeble argument |
| 09:14 | <hyatt> | hsivonen: but other languages like flex do have these features |
| 09:14 | <hyatt> | hsivonen: i.e., it may be perceived as something we should have in the language to "keep up" with other RIA alternatives |
| 09:14 | <hyatt> | i guess i convinced hixie that this feature is cool |
| 09:14 | <hyatt> | :) |
| 09:15 | <hyatt> | i'll look at the thread soon hopefully |
| 09:15 | <hyatt> | and see what was actually proposed |
| 09:15 | hsivonen | googles for flex bindings |
| 09:16 | <hyatt> | yeah i need to research those also |
| 09:16 | <hyatt> | i am stating that they are similar |
| 09:16 | <hyatt> | but could be totally mistaken |
| 09:16 | <hyatt> | hsivonen: i think at some point it might be worthwhile tryign to pick some of the html5 features to punt to html6 |
| 09:16 | <hyatt> | or 5.1 |
| 09:17 | <hyatt> | or whatever the next version will be |
| 09:17 | <hyatt> | html5 is just huge and intimidating at this point |
| 09:17 | <hyatt> | so much new stuff |
| 09:17 | <hsivonen> | hyatt: yeah |
| 09:18 | hsivonen | notes that Adobe has copied the year-in-namespace-URI anti-pattern from the W3C |
| 09:18 | <hyatt> | bedtime for me |
| 09:18 | <hyatt> | night |
| 09:22 | <hsivonen> | hmm. the first Flex examples Adobe offers don't have anything in them explaining why you wouldn't want to use an onchange event handler plus a matching initializer (except you avoid the part of having to write the matching initializer) |
| 09:23 | <hsivonen> | heh. the Flex reference is like javadocs after a treatment by a graphic designer |
| 09:26 | <hsivonen> | wow, flex is huge. I wonder how many person-centuries Adobe has put into this proprietary platform |
| 09:57 | <mpt> | othermaciej, with special types of buttons for add/remove, WebKit can know to draw them as (–)(+) in Mac OS X rather than as [–][+] :-) |
| 09:59 | <othermaciej> | mpt: huh? |
| 10:00 | <mpt> | <othermaciej> it seems weird to me to have specialized kinds of button controls just for these two actions |
| 10:01 | <othermaciej> | mpt: yes, but I don't understand what you are saying about (-)(+) vs [-][+] |
| 10:02 | <mpt> | I mean circular (like all the add/remove row buttons in Mac OS X), rather than rectangular (like typical <button>s) |
| 10:10 | <annevk> | anyone here who happens to know how to limit a <Files foo> to the current directory in Apache? |
| 10:11 | <annevk> | I'm confused, why does http://www.whatwg.org/specs/web-apps/current-work/ have the W3C specification layout? |
| 10:21 | <mpt> | It's a conspiracy |
| 10:22 | <mpt> | Either that, or a CVS error |
| 10:22 | <annevk> | WHATWG uses SVN |
| 10:22 | <annevk> | maybe Hixie's script messed up |
| 10:26 | <mpt> | I get a 502 Proxy Error on the w3.org version, but not on the rest of w3.org |
| 10:27 | <annevk> | dev.w3.org seems down |
| 10:37 | <annevk> | it's up again |
| 12:05 | <zcorpan> | hmm. is the [[Get]] method on HTMLDocument defined in html5? |
| 12:07 | <annevk> | don't think so |
| 12:08 | zcorpan | reverse engineers the others |
| 12:51 | <zcorpan> | hmm, role in svg eh |
| 12:51 | <zcorpan> | then html:role might as well be dropped altogether? |
| 12:52 | <annevk> | yeah |
| 12:52 | <annevk> | it's of no use in languages that have no notion of focusability anyway |
| 12:54 | <zcorpan> | indeed |
| 12:54 | <zcorpan> | post this to the list? |
| 12:54 | <annevk> | and making that global too just leads to people using the wrong format |
| 12:56 | <zcorpan> | although allowing it for any format makes it easier to support in a particular format; just add a way to make elements focusable |
| 12:57 | <annevk> | that depends on how you implement it |
| 12:58 | <annevk> | another way would be: just add a namespace URI to some list |
| 13:59 | gsnedders | laughs at rumours that Apple is working on something to rival Google Gears |
| 14:12 | <zcorpan> | annevk: could you rephrase? i don't follow |
| 14:14 | <annevk> | i'm saying that the cost of adding support for these attributes on n-formats does not have to be big |
| 14:20 | <zcorpan> | annevk: ok. indeed |
| 14:21 | <zcorpan> | we'd still have to support aaa:foo="" though |
| 14:21 | <zcorpan> | i think |
| 14:22 | <zcorpan> | unless we can convince dojo to use both aria-foo and aaa:foo |
| 14:25 | <annevk> | lets hope we can |
| 14:33 | <zcorpan> | i've emailed aaronlev and anders, let's see what they think |
| 15:53 | <Philip`> | It's slightly irritating that when I find a nice technique in SVG to achieve some effect, I then find that the implementations of that feature are unusably buggy |
| 16:23 | <zcorpan> | man, ie's handling of <object> is harier than i thought |
| 16:25 | <zcorpan> | http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0D%0A%3Cbody%3E%3Cobject%20name%3Dx%3E%3Cembed%20name%3Dx%3E%3C%2Fobject%3E%0D%0A%3Cscript%3E%0D%0Aw(%22document.x.length%3A%20%22%20%2B%20document.x.length)%0D%0Aw(%22tagName%3A%20%22%20%2B%20document.x.tagName)%0D%0Aw(%22innerHTML%3A%20%22%20%2B%20document.x.innerHTML)%0D%0Aw(%22firstChild%3A%20%22%20%2B%20document.x.firstChild)%0D%0A%3C%2Fscript%3E |
| 16:47 | <hsivonen> | Any advice whether I should bother to insist on my mobileOK comments or just let it be? |
| 17:02 | <zcorpan> | hsivonen: depends on whether you like wasting your time ;) |
| 17:03 | <hsivonen> | zcorpan: I take that as a "let it be" |
| 17:04 | <zcorpan> | yeah |
| 17:04 | <hsivonen> | though I find it *absurd* to say that XML 1.1 is OK but PNG isn't |
| 17:04 | <zcorpan> | indeed |
| 17:04 | <zcorpan> | or to pretend that XML is being dealt with in the first place |
| 17:04 | <zcorpan> | it's just harmful to XML |
| 17:05 | <zcorpan> | it might force opera to also use the html parser for xml content |
| 17:08 | <hsivonen> | Also, this imaginary profile doesn't make sense. |
| 17:09 | <hsivonen> | I have 2 mobile devices currently and both only host browsers based on engines that you can expose to real Web content |
| 17:16 | <hsivonen> | hmm. reading the XHTML 1.0 RNG schema I find some presentational attributes I didn't remember even existed |
| 17:16 | <hsivonen> | frame and rules |
| 17:32 | <zcorpan> | on <table> right |
| 17:48 | <hsivonen> | zcorpan: Regarding the HTML 4.0 request: do you have an opinion on treating all quirky doctypes as html4? |
| 17:48 | <hsivonen> | or should I just special-case HTML 4.0 doctypes? |
| 17:50 | hsivonen | special-cases HTML 4.0 |
| 18:19 | <zcorpan> | hsivonen: just 4.0 |
| 18:23 | <hsivonen> | zcorpan: ok |
| 19:51 | <Hixie> | wow i've no idea how the whatwg page ended up with the w3c stylesheet |
| 19:51 | <Hixie> | that's screwed up |
| 20:18 | <hsivonen> | zcorpan: I think I've nailed HTML 4.0 support now: http://validator.nu/?doc=http%3A%2F%2Fln.hixie.ch%2F |
| 20:19 | <zcorpan> | hsivonen: nice! |
| 20:28 | <hsivonen> | zcorpan: Re: the way duplicate IDs on imageshack are reported as two errors as opposed to error plus info: that comes from the bowels of Jing, which doesn't know about info |
| 20:28 | <hsivonen> | zcorpan: I think I should move the XHTML 1.0 ID duplicate checking to a new mechanism when I write a new mechanism for HTML5 |
| 20:35 | <hsivonen> | am I reading correcly that XSD regexps don't have \u escapes? |
| 20:37 | hsivonen | still doesn't like white space differences between HTML5 and XML |
| 20:40 | <hsivonen> | Hixie: just checking: enumerated values are now ASCII-case-insensitive for both HTML5 and XHTML5, right? (this appears to have changed when I wasn't looking) |
| 22:11 | <Philip`> | "A date or time string is a valid date or time string if the following algorithm, when run on the string, doesn't say the string is invalid." - that's totally helpful |
| 22:11 | Philip` | tries reading the 67-step algorithm |
| 22:22 | <gsnedders> | Philip`: that and the parsing algorithm are the only two sections I've yet to review |
| 22:45 | <Philip`> | ^\s*(\d\d\d\d-\d\d-\d\d\s*T?\s*\d\d:\d\d(:\d+\.?\d*)?\s*(Z|[+-]\d\d:\d\d)|\d\d:\d\d(:\d+\.?\d*))\s*$ |
| 22:45 | <Philip`> | Much easier to read |
| 22:46 | <Philip`> | but it seems odd that you can't have a valid date (no time) string, so maybe I'm missing something |
| 22:50 | <Philip`> | ^\s*(\d\d\d\d-\d\d-\d\d(\s+|\s*T?\s*)\d\d:\d\d(:\d+\.?\d*)?\s*(Z|[+-]\d\d:\d\d)|\d\d:\d\d(:\d+\.?\d*))\s*$ - oops, bugfix |
| 22:50 | <Philip`> | Ugh |
| 22:50 | <Philip`> | ^\s*(\d\d\d\d-\d\d-\d\d(\s+|\s*T\s*)\d\d:\d\d(:\d+\.?\d*)?\s*(Z|[+-]\d\d:\d\d)|\d\d:\d\d(:\d+\.?\d*))\s*$ |
| 22:51 | <Hixie> | are you have connection issues? |
| 22:51 | <Hixie> | :-P |
| 22:54 | <Philip`> | ^\s*(\d\d\d\d-\d\d-\d\d(\s+|\s*T\s*)\d\d:\d\d(:\d+\.?\d*)?\s*(Z|[+-]\d\d:\d\d)|\d\d:\d\d(:\d+\.?\d*)?)\s*$ |
| 22:55 | <Philip`> | Sorry, I think there's a newt in my keyboard that's typing regexps at me :-( |
| 22:55 | <Hixie> | looks like an ISO-8601 regexp to me, but i recommend perl's /x option |
| 22:56 | <Philip`> | Pfah! Whitespace is for Python programmers |
| 22:56 | <Hixie> | lol |
| 23:03 | <Dashiva> | I'd recommend quantifiers |
| 23:03 | <Hixie> | i want the part of my brain that knows all the http response codes off by heart back. |
| 23:04 | <Dashiva> | 404 |
| 23:04 | <Dashiva> | Actually, probably 410 |
| 23:04 | <Hixie> | (as in, i want to reclaim that part of my brain, as i don't think it's something i actually need to remember) |
| 23:04 | <Hixie> | it just seems wrong to me that i just instinctively know it's "304 Not Modified". |
| 23:04 | <Hixie> | and not 305... or 303... or whatever. |
| 23:04 | <Philip`> | Dashiva: Like \d{2}? That's longer than just typing \d\d |
| 23:05 | <Dashiva> | It's more readable, and it's shorter for n>2 |
| 23:05 | <Hixie> | (Use Proxy... See Other...) |
| 23:05 | <Dashiva> | 207? |
| 23:05 | <Philip`> | There's only one value in datetime with n>2, and far more with n<=2 :-) |
| 23:05 | <Dashiva> | Still more readable :) |
| 23:06 | <Hixie> | 207? |
| 23:06 | <Dashiva> | What's that one? |
| 23:06 | <Hixie> | probably webdav or something |
| 23:06 | <Hixie> | i don't know of a 207 in http 1.1 |
| 23:06 | <Hixie> | the google says 207 MULTISTATUS |
| 23:06 | <Dashiva> | Impressive |
| 23:08 | <Hixie> | RFC4918:11.1 says 207 Multi-Status |
| 23:08 | <Hixie> | defined in section 13 |
| 23:09 | <Hixie> | jesus wept, webdav needs to crawl down a hole and die |
| 23:09 | Hixie | goes back to defining manifest parsing |