| 00:02 | <heycam> | Philip`, that SVG-in-<img> is not scaling nicely when zooming the page is https://bugzilla.mozilla.org/show_bug.cgi?id=600207 |
| 00:33 | <MikeSmith> | Hixie: looking into the cvs problem now |
| 00:59 | <MikeSmith> | Hixie: cvs problem should be fixed now |
| 01:06 | <Hixie> | MikeSmith: k thanks |
| 04:11 | <Hixie> | is there any equivalent of the fillText() method's last argument in CSS? something that says "try really hard to fit this text in this width"? |
| 04:11 | <Hixie> | i have a heading that i'd really like to have fit on one line, even if it has to be condensed to fit, regardless of screen width |
| 04:11 | <Hixie> | (it's only two words and on desktops it just looks fine but on some phones with particularly narrow screens it ends up wrapping to two lines which just looks ugly) |
| 05:44 | <MikeSmith> | looks like CSAIL has a major scheduled network outage on the weekend of June 9 and 10 that I think will mean bugzilla and probably a lot of other stuff will not be available |
| 05:45 | <MikeSmith> | mail too I guess |
| 05:45 | <Hixie> | k |
| 05:57 | <Hixie> | does JS have some mechanism by which an object can respond to method calls for methods i haven't yet defined? |
| 05:58 | <Hixie> | like perl's autoload? |
| 05:58 | <Hixie> | i have an object that represents something on the server but at the time the js object is instantiated i don't yet know what the object's type is cos i'm still waiting on the server |
| 05:58 | <Hixie> | the object's methods are all async |
| 05:58 | <Hixie> | so i want the methods, if called before i have the data, to just queue up the info and wait until we have it and then call back |
| 06:01 | <MikeSmith> | Hixie: google finds http://stackoverflow.com/questions/5422754/javascript-equivalent-of-perls-autoload |
| 06:01 | <MikeSmith> | no idea if that's helpful or not |
| 06:02 | <Hixie> | yeah, __noSuchMethod__ is what i want |
| 06:02 | <Hixie> | wonder if they're adding this to new ES versions |
| 06:02 | <MikeSmith> | I thought that was already in 5.1 |
| 06:02 | <Hixie> | https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/NoSuchMethod (first hit on google) says "non-standard" |
| 06:03 | <MikeSmith> | oh |
| 06:03 | <Hixie> | hm, there's something called "proxies" in some version of JS |
| 06:04 | <Hixie> | blimey |
| 06:05 | <Hixie> | "simplicity" is the first thing on their requirements list |
| 06:05 | <Hixie> | but it's not clear that they managed it |
| 06:06 | <MikeSmith> | speaking of simplicity the powers that be in the CSS WG seem to be doing a great job making it a really good illustration of Conway's Law |
| 06:06 | <Hixie> | fullscreen? |
| 06:06 | <MikeSmith> | bingo |
| 06:08 | <Hixie> | yeah ok this proxies thing is going so far above my head i can't even feel it |
| 06:08 | <Hixie> | i guess i'll try something dumber |
| 07:22 | <dbaron> | MikeSmith, what has the CSS WG done to fullscreen? |
| 07:25 | <jgraham> | In the interests of what journalists like to call "balance" http://www.zdnet.com/blog/btl/women-in-tech-manuela-hutter-sees-endless-possibilities/68158 |
| 07:28 | <annevk> | http://tumbledry.org/2012/05/30/5_things_about_television o_O |
| 07:30 | <MikeSmith> | dbaron: discussion on the chairs list |
| 08:13 | <annevk> | odinho: haha, that IDL typo bug |
| 08:13 | <odinho> | annevk: heh, yeah, embarrasing |
| 08:13 | <annevk> | notices double ;, does not notice glaring typo |
| 08:14 | <annevk> | that's a meme for the "IDL junky" face |
| 08:18 | <odinho> | annevk :P |
| 08:18 | <odinho> | annevk: I can said that was implied, too easy, anyone could see it :P |
| 08:19 | <wodemaye__> | how do i get at the hostname of an href the DOM-standard-compliant way? |
| 08:20 | <wodemaye__> | getElementsByTagName("a")[0 |
| 08:20 | <wodemaye__> | oops |
| 08:20 | <wodemaye__> | is getElementsByTagName("a")[0].href.hostname standards-compliant? |
| 08:21 | <odinho> | wodemaye__: Don't think so, but it should be best to check spec. |
| 08:21 | <wodemaye__> | odinho, any specific place/doc u would look in? |
| 08:21 | <annevk> | wodemaye__: it.s [0].hostname |
| 08:22 | <annevk> | http://whatwg.org/C#htmlanchorelement |
| 08:22 | <wodemaye__> | annevk, is that guaranteed standards-compliant/cross-browser compatible? |
| 08:22 | <odinho> | wodemaye__: Write a test and test it :-) |
| 08:22 | <annevk> | well it's in the HTML standard |
| 08:22 | <annevk> | it probably works everywhere as it's ancient (iirc), but who knows |
| 08:23 | <wodemaye__> | annevk, but it's not deprecated? |
| 08:23 | <annevk> | no |
| 08:24 | <wodemaye__> | annevk, ur link fails. |
| 08:24 | <odinho> | wodemaye__: Works in Opera, Firefox, Chromium, and IE10. So that's them done. |
| 08:24 | <annevk> | DreamHost is having some issues I guess |
| 08:24 | <wodemaye__> | annevk, whatwg is hosted on dreamhost? |
| 08:24 | <annevk> | should work in a bit |
| 08:25 | <annevk> | yeah |
| 08:25 | <wodemaye__> | the goog couldn't spare a bit of hosting space, Hixie ? |
| 08:26 | <annevk> | they probably can, but we like to run the show without using company resources (other than time) |
| 08:27 | <odinho> | annevk: hmmz. the spec at w3, can't click stuff to get backlinks etc. Is that disabled for w3 compat mode? |
| 08:28 | <annevk> | odinho: W3C had issues with running scripts at some point |
| 08:28 | <MikeSmith> | no such issues now |
| 08:28 | <odinho> | wodemaye__: http://dev.w3.org/html5/spec/the-a-element.html#the-a-element http://dev.w3.org/html5/spec/the-a-element.html#dom-a-hostname |
| 08:28 | <MikeSmith> | the backlinks work in the author-view |
| 08:29 | <MikeSmith> | including the multi-page |
| 08:29 | <MikeSmith> | for the full spec, I thought I had them working, for the single-page version at leat |
| 08:30 | <odinho> | wodemaye__: Ah, look at author view instead. http://dev.w3.org/html5/spec-author-view/the-a-element.html#htmlanchorelement |
| 08:30 | <odinho> | MikeSmith: Yes, it did work in author view. :] |
| 08:30 | <MikeSmith> | I should fix it for the full spec if it's not working |
| 08:31 | <MikeSmith> | I guess I would notice these things if I actually used that when I needed to look up something |
| 08:32 | <odinho> | MikeSmith: lol, what do you mean, where do you look? at whatwg? at w3schools? (:P) |
| 08:32 | <odinho> | I gave you some heavy opposites there. |
| 08:32 | <jgraham> | MikeSmith is actually the secret villian behinf w3schools |
| 08:32 | <odinho> | babambmaaaaamm!!! :-o |
| 08:33 | <MikeSmith> | I put the "cool" in w3schools |
| 08:33 | <jgraham> | It is run from his HQ inside a Japanese volcano |
| 08:33 | <wodemaye__> | except there is no "cool" in w3schools. |
| 08:33 | <wodemaye__> | is w3s at all associated with w3c? |
| 08:33 | <annevk> | nope |
| 08:33 | <MikeSmith> | I only write my w3schools content when I'm loaded |
| 08:33 | <odinho> | lol |
| 08:36 | <MikeSmith> | the problem with sites like MDN is that they value accuracy too highly |
| 08:36 | <MikeSmith> | leaves no room for free improvisation |
| 08:37 | <wodemaye__> | loaded? MikeSmith |
| 08:38 | <MikeSmith> | wodemaye__: piped up |
| 08:39 | <wodemaye__> | MikeSmith, piped up? |
| 08:39 | <odinho> | MikeSmith: As a reader, there's also way too much relevant information on those pages, I find it much better when you can just get some incorrectly written super small non-helping description instead. |
| 08:39 | <MikeSmith> | odinho: now you're talking |
| 08:39 | <wodemaye__> | not a native english speaker so i don't know some slang, sorry. |
| 08:39 | <wodemaye__> | does it mean drunk? |
| 08:39 | <MikeSmith> | you'd understand w3schools much better if you used it while listening to Albert Ayler's "Love Cry" |
| 08:40 | <MikeSmith> | there are messages in there waiting to be heard |
| 08:40 | <wodemaye__> | but doesn'nt MDN specifically document the mozilla implementation of the standards? |
| 08:40 | <Ms2ger> | Not anymore |
| 08:40 | <wodemaye__> | Ms2ger, seriously? |
| 08:40 | <Ms2ger> | The documentation for web-exposed APIs should be vendor-neutral |
| 08:42 | <benvie> | they discuss vendor specifics but for all vendors |
| 08:42 | <benvie> | which is useful |
| 08:42 | <Ms2ger> | With help from paul_irish and other Googlers, too |
| 08:43 | <odinho> | Helpful list at the bottom too: https://developer.mozilla.org/en/http_access_control#Browser_compatibility |
| 08:44 | <odinho> | Although stuff does hang in there: Requires Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) |
| 08:44 | <wodemaye__> | web-exposed APIs? |
| 08:44 | <odinho> | Well, Access-Control-Expose-Headers works in most all browsers now AFAIK, not just Gecko 2 :P |
| 08:44 | <odinho> | At least in Opera 12, which I know best. |
| 08:45 | <Ms2ger> | MDN also documents a lot of Gecko internals; not much point in trying to make those vendor-neutral |
| 08:45 | Ms2ger | glares at his inbox |
| 08:46 | <wodemaye__> | Ms2ger, i almost never used mdn cus i wanted to code to standards and not implementations, but holy shit there's some badass document'n in there. |
| 08:46 | <wodemaye__> | thanks dude. Ms2ger |
| 08:46 | <Ms2ger> | Np :) |
| 08:47 | <benvie> | it's often not clear when you've drifted out of the standard JS stuff into mozilla-specific land |
| 08:47 | <odinho> | benvie: Yeah, -- it would be nice to have them more seperated. |
| 08:47 | <benvie> | but it's usually noe just a section of an article, but like the whole section of the site |
| 08:47 | <benvie> | but they look the same and interlink |
| 08:48 | <odinho> | Although I can really see why Mozilla doesn't want to move it to a more neutral place :P |
| 08:48 | <Ms2ger> | There's been talk of separating them more, not sure how that's going ahead |
| 08:48 | <benvie> | hah yeah |
| 08:48 | <MikeSmith> | do we really not have any contributed test cases for postmsg? |
| 08:49 | <odinho> | I seem to remember Opera and Google wanting to part with their docs for a W3-hosted place like this. But Mozilla has the most thorough and best docs, so would be giving away most stuff by far. |
| 08:49 | <benvie> | well it seems like everyone's moving in the same general direction, which towards more js-centric and standardized in that fashion |
| 08:49 | <MikeSmith> | jgraham: btw and fwiw I agree it'd be better at this point to end the approved/submitted division |
| 08:50 | <wodemaye__> | benvie, what's a good/comprehensive/reliable/accurate documentation effort that aims primarily to document only standards with maybe some notes sprinkled through about implementation but explicitly made known as such. |
| 08:50 | <MikeSmith> | jgraham: I guess details about whether a test is approved or not could go into a manifest or something |
| 08:50 | <benvie> | well |
| 08:50 | <benvie> | I don't know that there is one |
| 08:50 | <Ms2ger> | jgraham, I approve of anything that makes the paths shorter, that would make life easier for thunderbird developers on windows :) |
| 08:50 | <benvie> | MDN does a good job as it is |
| 08:51 | <benvie> | so there's no push to redo its efforts |
| 08:51 | <wodemaye__> | what about the official w3/whatwg docs? those aren't the most readable... |
| 08:51 | <wodemaye__> | would u recommend referring to those often benvie ? |
| 08:51 | <benvie> | from my experience, the W3C specs combined with MDN are all that's eneded |
| 08:51 | <odinho> | MikeSmith: where is this email, if any? |
| 08:51 | <Ms2ger> | odinho, public-test-infra |
| 08:52 | <benvie> | let's see |
| 08:52 | <odinho> | All these lists I'm not on... *finding* |
| 08:52 | <benvie> | http://www.html5rocks.com/en/ is probably a big one for quality |
| 08:52 | <odinho> | benvie: Although often very WebKit-centric |
| 08:52 | <benvie> | yeah it's very much a google/webkit oriented thing |
| 08:53 | <wodemaye__> | benvie, but its fairly authoritative? |
| 08:53 | <benvie> | I guess it's kind of hard to find a party willing to put in the expertise resources to produce this content that ISN'T directly affiliated with one of the vendors |
| 08:54 | <Ms2ger> | Achievement unlocked: fantasai agrees with me on www-style |
| 08:54 | <jgraham> | Ms2ger: You sure? |
| 08:54 | <benvie> | and with how things are standardized, you can get away with doing a laege chunk of standardized...ish content that still favors your specific implementation's strengths |
| 08:54 | <benvie> | just because you know it best |
| 08:54 | <MikeSmith> | Ms2ger: watch out for lightening strikes |
| 08:55 | <jgraham> | Also, working backwards through time, lol windows |
| 08:55 | <benvie> | authoritative in this world is easy |
| 08:55 | <Ms2ger> | jgraham, yeah :/ |
| 08:55 | <jgraham> | MikeSmith: Yeah that seems much more sensible to me |
| 08:55 | <benvie> | does it exist in an implemtnation or not |
| 08:55 | <benvie> | it either can be used or can't be |
| 08:56 | <Ms2ger> | jgraham, in a meta element! ;) |
| 08:56 | <jgraham> | Ms2ger: You unlocked the trolling #whatwg achievement a long time agao. No need to do it again :p |
| 08:57 | <Ms2ger> | Why thank you, dear |
| 08:57 | <benvie> | the web api sphere is a finely balanced dance of anarchy. It's like a house of cards that is reinforced by its own frailty |
| 09:10 | <MikeSmith> | benvie: a dancing spherical house of cards? |
| 09:12 | <Ms2ger> | Yay, unprefixed border-image coming to Gecko |
| 09:12 | Ms2ger | bets Opera did it first |
| 09:12 | <smaug____> | :p |
| 09:13 | <odinho> | Never gets old, does it :P |
| 09:13 | <Ms2ger> | No :) |
| 09:15 | <odinho> | Webbrowser getting bought by a website, Opera did it first (?) : |
| 09:18 | <smaug____> | well, ok, that is something NS managed to do first |
| 09:18 | smaug____ | hopes the rumors about FB buying Opera aren't true |
| 09:19 | <odinho> | smaug____: Ah yes. Then it's no danger, because it's already done. So no reason to do it. *phew |
| 09:22 | wodemaye__ | hopes they are true! :) |
| 09:24 | <smaug____> | it would be very sad to lose Opera to an evil empire. |
| 09:24 | <odinho> | It would be very sad to suddenly work for an evil empire. |
| 09:24 | <odinho> | I would probably even have to get a facebook account. |
| 09:26 | <AryehGregor> | zcorpan, yes, the stack trace can be annoyingly large, I agree. Unfortunately, since it's not in a standard format, we can't really do anything to make it better except not print it. Which is probably a good idea for most tests, but not for my crazy complicated tests. :) |
| 09:28 | <zcorpan> | AryehGregor: we should make it a standard already :-P |
| 09:28 | <AryehGregor> | annevk, in the United States, I noticed that after I kept an HTTP connection open for more than a second or so, bandwidth dropped drastically. I suspect my ISP was prioritizing short-lived TCP connections to benefit typical HTTP over long downloads and such. |
| 09:29 | <AryehGregor> | (which is a good form of network non-neutrality, IMO, although it might do the wrong thing for videoconferencing) |
| 09:30 | <annevk> | this was ssh |
| 09:30 | <AryehGregor> | (it shouldn't hurt VoIP as long as they only throttle the bandwidth of long-lived connections) |
| 09:30 | <AryehGregor> | Right, but they'd want to hit BitTorrent and FTP too, so if I were them I'd just do it at the TCP level and ignore the protocol. |
| 09:30 | <AryehGregor> | That also means you don't have to actually inspect the traffic. |
| 09:30 | <AryehGregor> | Which is good because often you can't. |
| 09:48 | <jgraham> | AryehGregor: FWIW we don't actually have any local branches yet |
| 09:49 | <jgraham> | But it is a use case we have had, and addressed badly for non-W3C testsuites so it doesn't seem unlikely that we will have to address it for W3C ones |
| 09:50 | <jgraham> | (e.g. if there is some test that hardcodes domains due to testing document.domain, we would want to patch it to use different domains) |
| 09:51 | <jgraham> | Life would be much easier if Hixie didn't sleep. Does anyone understand navigation well enough to explain https://www.w3.org/Bugs/Public/show_bug.cgi?id=17245 to me? |
| 09:54 | <annevk> | didn't we have a copy of the Design Principles on the WHATWG Wiki at some point? |
| 09:54 | <AryehGregor> | jgraham, why not just fix it in the repo? You have commit access. |
| 09:54 | <annevk> | or was it a W3C Wiki page? |
| 09:56 | <odinho> | AryehGregor: Hmmm. Like it is now, it's not looked nicely upon to go into other vendors folders and just rewrite them :P |
| 09:56 | <annevk> | http://www.w3.org/html/wg/wiki/ProposedDesignPrinciples |
| 09:56 | <AryehGregor> | odinho, I think it's considered fine once they're formally submitted, at least if you talk to the submitter first, right? |
| 09:56 | <AryehGregor> | It should be, anyway . . . |
| 09:56 | <annevk> | seems to be have become quite the mess |
| 09:57 | <jgraham> | AryehGregor: Fix what? |
| 09:57 | <AryehGregor> | jgraham, if the test isn't usable from non-W3C-land. |
| 09:57 | <odinho> | AryehGregor: yea, -- but I don't feel like I should mess around in e.g. the submitted/Microsoft/ folder, I don't belong in there. |
| 09:58 | <jgraham> | It is quite possible that for some tests different servers will be needed on the public internet and on our internal network |
| 09:58 | <AryehGregor> | odinho, I think CSSWG policy, at least, is that you're allowed to. Anyway, you certainly can give it as feedback before it gets approved. |
| 09:58 | <Ms2ger> | odinho, I'm happy to mess around in the Opera folders ;) |
| 09:58 | <AryehGregor> | jgraham, sure, but there should be some way to do that without patching the tests. |
| 09:59 | <MikeSmith> | annevk: it seems like there was something on the WHATWG wiki |
| 09:59 | <jgraham> | AryehGregor: Perhaps, I guess it depends on the details of the tests |
| 09:59 | <MikeSmith> | um, what does "frictionless" mean in terms of Web development? |
| 09:59 | <odinho> | AryehGregor: Yea, I already have a support.js file where you can set some variables. Those should be possible (and most maybe want) to override at least. |
| 10:00 | <odinho> | Ms2ger: Yea, I'm okay with people messing around in the Opera folder. We're just that kind of company ^^ |
| 10:01 | <annevk> | MikeSmith: I cannot find it |
| 10:01 | <jgraham> | In any case I wouldn't like to design in the assumption that we will never have to make local patches |
| 10:03 | <MikeSmith> | annevk: yeah, I can't either |
| 11:12 | <jgraham> | There's nothing I like more than spec threads where someone says "we should change the spec to say X" and then others say "yeah we changed our implementation to do that already (but didn't tell anyone)" |
| 11:12 | <odinho> | Seems to have been a few lately. |
| 12:00 | <MikeSmith> | how is the word skägg pronounced? |
| 12:02 | <jgraham> | If you are a human? By configuring your vocal chords/tounge/lips in the correct way and modulating the flow of air through them as needed. If you are Ms2ger? By sending electrical signals that cause vibrations in the cone of a speaker. |
| 12:03 | <jgraham> | I imagine |
| 12:03 | <jgraham> | Not that I have ever examined his hardware of course |
| 12:06 | <zcorpan> | MikeSmith: http://sv.forvo.com/word/sk%C3%A4gg/#sv |
| 12:08 | <MikeSmith> | tack |
| 12:10 | <Ms2ger> | *takk |
| 12:10 | <annevk> | zcorpan: we should nail down that list then |
| 12:12 | <MikeSmith> | annevk: plh is going to shut down our working group if we don't get remaining issues resolved and publish a LCWD |
| 12:12 | <MikeSmith> | charter expires in 1 month |
| 12:15 | <annevk> | MikeSmith: for a guy that claims to care about patent commitments he seems to care little |
| 12:16 | <annevk> | MikeSmith: did he miss that Apple joined the Notifications WG? |
| 12:16 | <MikeSmith> | no, he knows that |
| 12:16 | <MikeSmith> | he would just kind of like to see some actual further progress made on the spec I guess |
| 12:17 | <annevk> | I did actually ping John again earlier today |
| 12:17 | <annevk> | apparently he's on the YouTube team so doesn't have much time |
| 12:17 | <annevk> | but I'll see what he says |
| 12:18 | <annevk> | I happen to not care much for WGs so threatening to close mine down seems counter-productive |
| 12:18 | <MikeSmith> | k |
| 12:18 | <annevk> | but I do care somewhat about Notifications |
| 12:19 | <Ms2ger> | Shut down the WG and move to the WHATCG? |
| 12:19 | <MikeSmith> | annevk: I wonder whether other John might be willing to work on the spec |
| 12:19 | <MikeSmith> | John Lee |
| 12:19 | <MikeSmith> | Apple |
| 12:20 | <MikeSmith> | he seems a bit more motivated right now |
| 12:21 | <MikeSmith> | annevk: hey there's a new CSS group for you to join |
| 12:21 | <MikeSmith> | http://www.w3.org/community/blog/2012/05/31/proposed-group-css-specifications-community-group/ |
| 12:21 | <MikeSmith> | no idea who floated that one |
| 12:21 | <MikeSmith> | "This group addresses and discusses proposed ideas for CSS specifications." |
| 12:21 | <MikeSmith> | both addresses and discusses |
| 12:21 | <MikeSmith> | in that order |
| 12:22 | <annevk> | MikeSmith: we could ask him if John doesn't do anything |
| 12:22 | <annevk> | MikeSmith: or I could do it; I have some time now |
| 12:22 | <MikeSmith> | whatever works for you |
| 12:23 | <annevk> | I have doubts John Lee has the time |
| 12:23 | <MikeSmith> | OK |
| 12:25 | <zcorpan> | hmm, seems nobody supports MutationNameEvent? |
| 12:25 | <annevk> | s/hmm, seems/yay/ |
| 12:25 | <Ms2ger> | Seems correct for Gecko |
| 12:26 | <annevk> | also Opera/WebKit checking window.MutationNameEvent |
| 12:27 | <gsnedders> | wilhelm: Given you keep on complaining about it, you might be interested in what the latest snapshot has a fix for. ;) |
| 12:27 | <annevk> | IE also doesn't have it |
| 12:28 | <Ms2ger> | IE10? |
| 12:28 | <annevk> | ooh |
| 12:28 | <annevk> | MutationNameEvent was a DOM Level 3 Events addition? |
| 12:28 | <annevk> | it's not in http://www.w3.org/TR/DOM-Level-2-Events/events.html anyway |
| 12:29 | <Ms2ger> | For document.renameNode(), apparently |
| 12:29 | <zcorpan> | filed https://www.w3.org/Bugs/Public/show_bug.cgi?id=17270 |
| 12:29 | <annevk> | fast zcorpan is fast |
| 12:31 | <wilhelm> | gsnedders: I have already been informed. Thanks, I'll try it out. (c: |
| 12:32 | <annevk> | I guess it would prudent to check Level 3 against Level 2 to see what else was added that's not actually useful |
| 12:33 | <kennyluck> | Can we publicly criticize Google on the WHATWG blog for not making enough effort in the standardization work? |
| 12:33 | <MikeSmith> | eh? |
| 12:33 | <Ms2ger> | And Apple? |
| 12:33 | <Ms2ger> | And Mozilla? |
| 12:33 | <Ms2ger> | And Microsoft? |
| 12:33 | <zcorpan> | and w3c? |
| 12:33 | <MikeSmith> | heh |
| 12:33 | <Ms2ger> | Not Opera, I guess |
| 12:33 | <zcorpan> | nope, we did it first |
| 12:34 | <gsnedders> | We shipped a Native HTML6 implementation last year. |
| 12:34 | <Ms2ger> | You were first not to make enough effort? |
| 12:34 | <Ms2ger> | Glad you got over that, then ;) |
| 12:35 | <annevk> | kennyluck: if that's the summary of the post I'm not sure how that's a useful post for the WHATWG blog |
| 12:35 | <kennyluck> | *shrug* |
| 12:36 | <gsnedders> | kennyluck: What's the justification for them not putting in enough effort? |
| 12:36 | <MikeSmith> | kennyluck: shop that idea out to due at .Net magazine. I bet he'd love it |
| 12:37 | <kennyluck> | gsnedders, why ask me? It seems pretty clear that we have very little or no expectation for Apple, but Google… hmm... |
| 12:37 | <annevk> | so why do FocusEvent and such still have init*Event()? |
| 12:38 | <zcorpan> | why does DOMActivate still exist in the spec? |
| 12:38 | <zcorpan> | why does DOM3 Events still suck? |
| 12:38 | <zcorpan> | so many questions :-) |
| 12:39 | <kennyluck> | why does CSS2.1 read like an advanced tutorial instead of a spec? |
| 12:39 | <annevk> | because it's CSS 2.0 patched instead of the rewrite it deserved |
| 12:40 | <Ms2ger> | I guess that applies equally to D3E |
| 12:40 | <annevk> | Media Queries too :( |
| 12:42 | <Ms2ger> | ALL THE SPECS |
| 12:43 | <Ms2ger> | Who's going to try and get CSS to define what "critical subresources" are? |
| 12:44 | annevk | frowns |
| 12:46 | <MikeSmith> | if berjon is working on updating the WebIDL stuff in respec, would be good to update it to use the same biblio stuff as anolis |
| 13:57 | <annevk> | I hope he succeeds |
| 14:02 | <codacoder> | anyone here? |
| 14:06 | <jgraham> | No |
| 14:06 | <codacoder> | I can tell ;) |
| 14:07 | <codacoder> | it's that vacant look |
| 14:08 | <jgraham> | We're so pretty |
| 14:08 | <codacoder> | Was hoping someone could explain something about the specs - specifically, about DEPRECATED/OBSOLETE |
| 14:08 | <codacoder> | lol |
| 14:08 | <codacoder> | a Brit I see. Prob as old as me too |
| 14:08 | <Philip`> | Which specs? |
| 14:09 | <codacoder> | html5 |
| 14:09 | <Philip`> | HTML5 doesn't do deprecated - things are either allowed, or not allowed |
| 14:09 | <jgraham> | Some are "obsolete but conforming" |
| 14:09 | <Philip`> | (which is totally independent of whether browsers must implement support for those things or not) |
| 14:09 | <jgraham> | Which sounds a lot like "deprecated with delicious figs" |
| 14:10 | <codacoder> | well... yes... but the spec I'm reading seems to be sitting painfully right on the fence re obsolete |
| 14:10 | <Philip`> | I think "deprecated" is more like "conforming but obsolete" |
| 14:10 | <codacoder> | Phil: yep |
| 14:11 | <codacoder> | I woundered why, then, there's a whole section on rendering obsolete crap |
| 14:11 | <codacoder> | so a definition of obsolete would be good |
| 14:12 | <Philip`> | Most people write non-conforming content (never mind obsolete-but-conforming content), so browsers are required to render that stuff correctly anyway, because that's necessary for real-world interoperability |
| 14:12 | <codacoder> | example: FRAMESET |
| 14:12 | <codacoder> | I agree - but the spec is not clear about what it means |
| 14:13 | <codacoder> | as a reader, it's not clear and can cause endless "going in circles" trying to tie it down |
| 14:13 | <Philip`> | "obsolete" means nothing more than "conformance checkers will warn about this" and "the spec writers would prefer you not to do this (but we know you're going to anyway)" |
| 14:13 | <codacoder> | right |
| 14:13 | <Philip`> | (Rather, "obsolete but conforming" means that) |
| 14:14 | <Philip`> | frameset is entirely non-conforming, which means "conformance checkers will give an error about this" and "the spec writers would prefer you not to do this (but we know you're going to anyway)" |
| 14:14 | <codacoder> | I guess it's an unfortunate flow I'm "carrying" that, deprecated -> obsolete -> gone |
| 14:15 | <Philip`> | The "obsolete -> gone" step never occurs in practice |
| 14:15 | <codacoder> | agreed |
| 14:15 | <Philip`> | (Browsers still support things that were deprecated in the first ever published HTML specs) |
| 14:15 | <codacoder> | but the spec does not make that clear, is my point |
| 14:15 | <codacoder> | I know |
| 14:16 | <zcorpan> | codacoder: the spec usually says something like "authors must not do X" and then "user agents must do Y when authors do X" |
| 14:16 | <codacoder> | context: I'm writing a test suite, I wanna make sure my wording is as correct as poss |
| 14:16 | <zcorpan> | test suite aimed at browsers? |
| 14:17 | <Philip`> | Would it be clearer if somewhere like http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html#obsolete repeated something like the text from http://www.whatwg.org/specs/web-apps/current-work/multipage/introduction.html#conformance-requirements-for-authors ("this specification defines in some detail the required processing for invalid documents as well as valid documents.")? |
| 14:17 | <codacoder> | and to "defend" my statements i need a "source" <- the spec aint helping (much) |
| 14:17 | <codacoder> | reading... |
| 14:17 | <zcorpan> | what are you testing? |
| 14:17 | <codacoder> | test-suite aimed at browser based app |
| 14:20 | <zcorpan> | if your test is testing the user agent (the browser), then you should ignore all requirements on authors/documents |
| 14:20 | <codacoder> | no, it's testing the content |
| 14:22 | <codacoder> | Philip: it needs to be clear what obsolete means in practice |
| 14:23 | <codacoder> | I think (IMO) it's less than clear and is missing the (old) "MUST" etc definitions. What I've read is wishy-washy (sorry) |
| 14:26 | <Philip`> | I think in pretty much every case there is a relevant series of "must"s somewhere in the spec, but it tries to only require things once and then uses wishy-washy language elsewhere to describe consequences of those requirements |
| 14:26 | <kennyluck> | Yeah, I guess I don't get the "obsolete but conforming" idea either. So here's a concrete question: If I were to write a book about HTML, should I include elements/syntax that are "obsolete but conforming"? |
| 14:26 | <Philip`> | and it's hard to find the right "must" if you don't know where to look |
| 14:27 | <codacoder> | kenny: Zackly! |
| 14:27 | <codacoder> | any of you here part of the authorship team? |
| 14:27 | <jgraham> | kennyluck: No |
| 14:27 | <Philip`> | kennyluck: If you're writing a reference book for people who have to maintain old pages, you should include everything that's ever used in practice, including non-conforming features |
| 14:28 | <jgraham> | (unless it is some very special case like Philip` says) |
| 14:28 | <kennyluck> | Philip`, yes, but what I am talking about new books. I don't exactly get what the middle class is for. |
| 14:28 | <codacoder> | Imagine - test fails. Reason: blah. Why -> link |
| 14:28 | <jgraham> | If you were writing a handbook for implementors with a catchy title like "HTML: Living Standard" then yes |
| 14:28 | <Philip`> | kennyluck: If you're writing a tutorial-style book for new content authors, you should just describe the features that you think they ought to use, which should be a subset of the non-obsolete conforming features |
| 14:29 | <codacoder> | It's almost impossible using the spec as it is |
| 14:29 | <Philip`> | (There's probably a lot of conforming features that aren't worth taking the effort to describe, so it depends on where you choose to focus as the author of the book) |
| 14:30 | <codacoder> | or in my case as the author of tests |
| 14:30 | <webben> | Philip`: "The "obsolete -> gone" step never occurs in practice". I wonder if that's really true. Didn't that happen with <layer>? |
| 14:30 | <kennyluck> | That I don't quite agree. I thought the whole point of making a subset of what browsers implement conforming is for educational purposes and yet you are telling me to build my own thing. |
| 14:31 | <Philip`> | webben: As far as I'm aware, that was never supported outside of Netscape |
| 14:31 | <Philip`> | (and never in a spec) |
| 14:31 | <codacoder> | layer was netscape - not a spec |
| 14:32 | <webben> | Philip`: True AFAIK, though a single browser supporting something is not necessarily a blocker to it becoming widespread in the corpus. |
| 14:32 | <webben> | Maybe <layer> never did. |
| 14:33 | <codacoder> | sticking to my point tho - this spec is too loose in the context i mentioned. It's not aiding me aid "them" |
| 14:33 | <Philip`> | http://philip.html5.org/data/tag-count-pages.txt says <layer> is on about 1% of pages, but I think it's almost always perfectly acceptable to treat it like <span>, which is what most browsers do now |
| 14:34 | <webben> | codacoder: I find it easiest to think of these things as: browsers need to support whatever features are needed to give users access to the corpus. authors should be encouraged to use whatever features give the best results for users |
| 14:34 | <Philip`> | codacoder: Could you give a more concrete example of the kind of information you can't find in the spec? |
| 14:35 | <codacoder> | said it earlier - may have scrolled past... imagine: test fails. Reason: blah. Why -> link |
| 14:35 | <webben> | codacoder: Yeah ... like what test are you unsure how to write? |
| 14:35 | <codacoder> | webben: I am not unsure |
| 14:35 | <codacoder> | I know exactly what I want to write |
| 14:35 | <Philip`> | kennyluck: I think there's a fundamental problem with different people having different ideas on what's a good subset for educational purposes; the spec just gives one idea (its notion of conformance) and a compromise with a slightly different idea (its notion of obsolete but conforming), under the belief that it's better to say something than nothing |
| 14:36 | <webben> | codacoder: Are you writing a document conformance checker of some sort? |
| 14:36 | <codacoder> | no - a test suite |
| 14:36 | <Philip`> | but that doesn't preclude anyone else from coming up with their own definition of 'good' HTML |
| 14:36 | <codacoder> | runs against an app |
| 14:36 | <Philip`> | codacoder: That didn't sound very concrete to me :-) |
| 14:36 | <webben> | codacoder: But testing for HTML conformance violations? |
| 14:37 | <codacoder> | Philip: test is (eg) FRAMESET or CENTER |
| 14:37 | <webben> | codacoder: You're looking for some text to link to that gives rationale for why FRAMESET (say) is not conforming HTML? |
| 14:38 | <codacoder> | more detail... $("center").length === 0 |
| 14:38 | <codacoder> | webben: yep |
| 14:38 | <codacoder> | it's too linky-linky-linky |
| 14:38 | <webben> | codacoder: It would be nice if the spec had rationale for all its design decisions, but I'm not sure that's realistics. |
| 14:38 | <codacoder> | like i said, it's not helping me help them |
| 14:39 | <codacoder> | and the terminology is way too wishywashy |
| 14:39 | <webben> | codacoder: For one thing, to a large extent the spec is an artefact of compromises. |
| 14:39 | <codacoder> | webben: you got it nailed there |
| 14:39 | <webben> | codacoder: So it's not necessarily reducible to fundamental design principles. |
| 14:40 | <webben> | codacoder: Worse still, this is true of pretty much all specifications where multiple parties need to agree, so the spec isn't really exceptional here. |
| 14:40 | <webben> | codacoder: Also, the rationale could easily be longer than the spec itself... |
| 14:41 | <webben> | codacoder: There are occasional efforts to write up some rationale outside the spec tho. |
| 14:41 | <codacoder> | I sort of agree. But in this case (dare I say it) the w3c older specs were better |
| 14:42 | <webben> | codacoder: http://wiki.whatwg.org/wiki/FAQ#Is_design_rationale_documented.3F |
| 14:42 | <codacoder> | in this regard, HTML5's definition of obsolete has no teeth and becomes pretty meaningless |
| 14:42 | <codacoder> | thanks |
| 14:42 | <webben> | codacoder: The older specs omitted a lot of rationale. |
| 14:42 | <webben> | They also omitted a lot of spec ;) |
| 14:43 | <webben> | codacoder: HTML5's definition of obsolete seems pretty straightforward. |
| 14:43 | <kennyluck> | Philip`, that's reasonable. But just like some people write specs because browser implementers don't bother reverse engineering each other. The idea of a conforming class for authors should be similar: not everyone would bother reading all rationale and going into the debates of why something is conforming and not and come up with his/her own class. The existence of the class in the middle means that the spec doesn't address this use |
| 14:43 | <codacoder> | understand I'm not here to "knock the specs" - here to improve them if I can |
| 14:43 | <webben> | Not sure what teeth you expect it to have. |
| 14:43 | <webben> | codacoder: Yep, understood. |
| 14:44 | <codacoder> | obsolete is absolutely (my baggage acknowledged) meaningless |
| 14:44 | <webben> | codacoder: It just means discouraged. That's it. |
| 14:44 | <codacoder> | and if I managed to link to the right spot in the spec, it would go against me, not for me |
| 14:44 | <codacoder> | but that was what deprecated means (meant) |
| 14:45 | <webben> | codacoder: No. |
| 14:45 | <webben> | codacoder: Deprecated implied future UAs could drop support. |
| 14:46 | <codacoder> | haha. see? it's a freakin nightmare! |
| 14:47 | <codacoder> | when i said "my baggage" this is what I meant! |
| 14:47 | <webben> | codacoder: I don't think these terms have ever been used or understood consistently. But you can just use the definition in the spec at hand. |
| 14:47 | <codacoder> | If i had a spec that was definitive (what else is a spec for at base values?) It would remove ALL baggage! |
| 14:47 | <webben> | codacoder: It is definitive. |
| 14:48 | <codacoder> | nope - it's "loose" |
| 14:48 | <codacoder> | I guess I should code as though I was writing a validator and take their suggestions for that |
| 14:49 | <webben> | codacoder: I don't get how http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html is loose. |
| 14:49 | <webben> | codacoder: It says authors must not use X, conformance checkers must warn about X, user agents must do Y with X. |
| 14:50 | <webben> | codacoder: In your test justification text, you could entirely ignore the language about "obsolete" if you think it's confusing. |
| 14:50 | <codacoder> | which is a toothless definition of obsolete |
| 14:50 | <kennyluck> | It says author *should not* use X. |
| 14:50 | <codacoder> | right |
| 14:50 | <kennyluck> | It really should be "must not" if that's the intention. |
| 14:51 | <webben> | kennyluck: Only for obsolete but conforming. |
| 14:51 | <codacoder> | I guess we're getting to it now... what in the hell does obsolete mean? I think they need a different term |
| 14:51 | <kennyluck> | I think it should probably be called "non-conforming but only triggers warning in conformance checker class" |
| 14:52 | <webben> | codacoder: Use the dictionary definition: http://www.merriam-webster.com/dictionary/obsolete |
| 14:52 | <codacoder> | webben: it's not about my ignoring something... it's about where I send a failing programmer to read something - what he reads should be clear, meaningful and "absolute" |
| 14:52 | <codacoder> | kenny: yep |
| 14:52 | <webben> | it is absolute |
| 14:53 | webben | shrugs |
| 14:53 | <codacoder> | webben: within its own confined context <- I say its chosen a bad one |
| 14:53 | <webben> | I'd prefer "discouraged" to "obsolete but conforming" and "forbidden" to "obsolete". |
| 14:54 | <codacoder> | RIGHT - much better |
| 14:54 | <webben> | In general, changing what goes into these categories let alone what they are called is a political minefield. |
| 14:55 | <codacoder> | oh yes. |
| 14:55 | <codacoder> | however, it should be better than it is |
| 14:55 | <webben> | Compromise often does result in things that are worse than they should be, but are better than not having them at all. |
| 14:56 | <codacoder> | agreed |
| 14:56 | <webben> | I often feel we'd have been better off just not bothering with author conformance requirements and leaving the whole business to linters. |
| 14:57 | <webben> | If nothing else it would have saved a lot of fairly pointless arguments. |
| 14:57 | <codacoder> | you got it |
| 14:57 | <kennyluck> | webben, that's true. |
| 14:58 | <codacoder> | in many ways, this entire conv is "evidence" |
| 14:58 | <webben> | I've been involved in a lot of those arguments, trying to make the conformance requirements make sense (from my perspective). |
| 14:58 | <webben> | It's very difficult to get people to agree. |
| 14:58 | <webben> | And I don't much like the set of conformance requirements we've got at the moment. |
| 14:58 | <jgraham> | No it's not! |
| 14:58 | <webben> | :) |
| 14:58 | <codacoder> | lol |
| 15:00 | <kennyluck> | But still, the problem here is quite obvious. "conforming" and "should not" are opposite words. |
| 15:00 | <webben> | kennyluck: They're not. |
| 15:00 | <webben> | kennyluck: That's standard IETF stuff. |
| 15:00 | <webben> | kennyluck: SHOULD NOT = don't do unless you've got good reason |
| 15:00 | <webben> | kennyluck: MUST NOT = non-conforming |
| 15:01 | <kennyluck> | webben, hmm.. ok I guess it makes some sense now. |
| 15:03 | <codacoder> | LEt's say I link to 15.2 (http://www.whatwg.org/specs/web-apps/current-work/multipage/obsolete.html) because someone has used (say) FRAMESET |
| 15:03 | <codacoder> | they read, then click on Frameset link... |
| 15:04 | <codacoder> | which takes them to a section talking about how frameset is meant to work (which is hardly my personal definition of obsolete) |
| 15:04 | <kennyluck> | webben, the IETF RFC for these keywords doesn't define what "conforming" means so I can't tell if that's true though. http://tools.ietf.org/html/rfc2119 |
| 15:05 | <kennyluck> | I think the normal practice is, though, when writing a test suite, is to include those "should"s and "should not"s. |
| 15:05 | <kennyluck> | In that sense, a violation of "should" seems to indicate that it is non-comforming… but I am not sure... |
| 15:05 | <codacoder> | kenny: agreed. I wanted to use the spec as definitve "why" - complaint is, it's not |
| 15:08 | <codacoder> | will you guys all sign wavers so I can store this entire thread in my tests? LOL |
| 15:09 | <codacoder> | anyway, I'm out of here. Thanks. It was informative and "confirming" (if not conforming) ;) |
| 15:10 | <kennyluck> | I have no problem and the channel log is public (see title) anyway. |
| 15:10 | <Philip`> | codacoder: "$("center").length === 0" - that makes it sound like you're implementing a conformance checker |
| 15:10 | <Philip`> | which would be an easier way to describe the problem :-) |
| 15:11 | <codacoder> | ok - just for Philip: that's only a tiny part of it, but yes, in this context, it pretty much is |
| 15:12 | <codacoder> | the test engine tests app functionality too |
| 15:13 | <codacoder> | ok going this time. Thanks again all. |
| 15:13 | <annevk> | smaug____: http://www.w3.org/TR/progress-events/#interface-progressevent |
| 15:13 | <annevk> | smaug____: btw |
| 15:13 | <odinho> | Seems I was under the false impression that Firefox nightly didn't allow sync XHR with CORS. But testing it, it does in fact do that. |
| 15:13 | <annevk> | smaug____: did Gecko disable cross-origin XMLHttpRequest? |
| 15:14 | <annevk> | oh |
| 15:14 | <odinho> | So time seems to be running out for that. |
| 15:14 | <odinho> | I don't see how they can wait so long with it if Moz really wants to do it. |
| 15:15 | <odinho> | annevk: A mozilla girl said it at the F2F. :-) |
| 15:17 | <smaug____> | annevk: disable CORS? |
| 15:17 | <smaug____> | oh, sync |
| 15:17 | <smaug____> | I don't think so |
| 15:17 | <smaug____> | sicking did suggest that |
| 15:18 | <smaug____> | annevk: yes, ProgressEvents spec has that, but implementations do have, IIRC, init*Event |
| 15:18 | <smaug____> | and createEvent("progressevent"); is supported, again, IIRC |
| 15:18 | <smaug____> | also some event related to storage handling... |
| 15:19 | <smaug____> | annevk: https://bugzilla.mozilla.org/show_bug.cgi?id=736058 |
| 15:19 | <annevk> | and bugs cannot be fixed? |
| 15:19 | <annevk> | aah |
| 15:19 | <annevk> | what nonsense is that |
| 15:19 | <annevk> | for a test you add that? |
| 15:20 | <odinho> | smaug____: So then I *don't* have to rewrite the CORS-tests to be async? Well, I'll make them more readable again then :P |
| 15:21 | <smaug____> | well, we haven't disabled CORS yet |
| 15:21 | <smaug____> | odinho: would be better to ask sicking |
| 15:21 | <smaug____> | I think disabling CORS could be quite risky |
| 15:22 | <odinho> | Yes, seems to be, esp. after CORS with sync XHR has worked for so long on the wild web. |
| 15:22 | <odinho> | But you have some release trains to test with. |
| 15:25 | <smaug____> | unfortunately surprisingly many sites are tested only with release builds |
| 15:25 | <smaug____> | but |
| 15:25 | <smaug____> | hmm |
| 15:25 | <smaug____> | perhaps a warning first |
| 15:25 | <smaug____> | "CORS with sync XHR will be disabled" |
| 15:26 | <smaug____> | warning are effective in some cases |
| 15:26 | <smaug____> | +s |
| 15:30 | <odinho> | smaug____: I meant for sitecompat, - I guess you'll have people reporting broken sites etc. |
| 15:30 | <smaug____> | sure |
| 15:31 | <smaug____> | but certain kinds of sites are used only with release builds |
| 15:31 | <smaug____> | like intranets |
| 15:31 | <smaug____> | some intranets |
| 15:31 | <odinho> | So if they're like "omg web iz broken!1" it might be hard, but if it's all like ... crickets ... it might be more okay. |
| 15:31 | <odinho> | smaug____: Yeah, I can see that. |
| 15:58 | <dglazkov> | good morning, Whatwg! |
| 16:41 | <TabAtkins> | Ms2ger: What spec talks about "critical subresources"? |
| 16:41 | <Hixie> | html |
| 16:41 | <Ms2ger> | CSS doesn't, that's the issue :) |
| 16:41 | <TabAtkins> | Ms2ger: Okay, then I don't get the context. |
| 16:41 | <Ms2ger> | https://www.w3.org/Bugs/Public/show_bug.cgi?id=17011 |
| 16:42 | <TabAtkins> | Ah, kk. Was wondering if you were just kvetching about a CSS problem without bringing it up with us again. ^_^ |
| 16:43 | <TabAtkins> | Hixie: If you need any help with Proxies for whatever reason, I can help. They're not hard. |
| 16:44 | <Hixie> | i want an object that just forwards all unknown method calls to another |
| 16:44 | <TabAtkins> | "critical subresources" sounds like it's potentially a useful term for CSS to define anyway. |
| 16:44 | <Hixie> | it's like 2 lines of code in perl |
| 16:44 | <TabAtkins> | Hixie: Slightly more than two lines in JS, but not much. |
| 16:45 | <Hixie> | it looked to be a lot more than two when i was looking at the proxy api |
| 16:45 | <Hixie> | and some long lines of unintuitive api calls at that |
| 16:45 | <TabAtkins> | You were looking at "proxy" instead of "direct proxy", weren't you. |
| 16:46 | <TabAtkins> | (It's the first google hit, I know.) |
| 16:46 | <Hixie> | no idea what the difference is |
| 16:46 | <Hixie> | i was looking at brendan' slide show, amongstother things |
| 16:46 | <TabAtkins> | The wiki page says, right at the top, that the "proxy" proposal is obsolete and superceded by direct proxies. |
| 16:47 | <TabAtkins> | iirc, all you need is: |
| 16:47 | <Hixie> | oh. if the stuff i was reading is dead then that's awesome. |
| 16:48 | <Hixie> | it was all claiming to be accepted and stuff |
| 16:48 | <Hixie> | is there a spec somewhere? |
| 16:48 | <Hixie> | that represents the latest thinking on js? |
| 16:49 | <Hixie> | [javascript direct proxy] doesn't help me |
| 16:49 | <TabAtkins> | var wrapped = Proxy(obj, {get: function(target, name, receiver) { if( methodIWantToCatch(name) ) { return doStuff(name); } else return target[name]; }); |
| 16:50 | <TabAtkins> | http://wiki.ecmascript.org/doku.php?id=harmony:direct_proxies |
| 16:50 | <Hixie> | yeah, that looks like what i was looking at |
| 16:51 | <TabAtkins> | Okay, that's not exactly hard. |
| 16:51 | <Hixie> | surely what you describe would result in the |this| pointing to the wrong object |
| 16:51 | <Hixie> | i want it pointing at the thing i'm proxying, not the proxy |
| 16:51 | <TabAtkins> | No, it works. |
| 16:52 | <Hixie> | how? |
| 16:52 | <TabAtkins> | The "return target[name]" part soft-binds this appropriately. |
| 16:52 | <TabAtkins> | For the unknown properties. |
| 16:52 | <TabAtkins> | var wrapped = Proxy(obj, {get: function(obj, name) { if( methodIWantToCatch(name) ) { return doStuff(name); } else return obj[name]; }); |
| 16:53 | <TabAtkins> | Easier to see now? |
| 16:53 | <Hixie> | oh sorry i think i misexplained |
| 16:53 | <Hixie> | let me be more clear |
| 16:54 | <Hixie> | i'm creating an object A at time t0. When A is created, it does a network request, and at time t1>t0, i'll use that data to create an object B. I want all calls to A to get proxied to B once A has created B. |
| 16:55 | <TabAtkins> | And before A has created B, what happens? |
| 16:55 | <Hixie> | does that make sense? |
| 16:55 | <Hixie> | before A has been created, some other code I write will do stuff, in particular, it will queue the requests to be run once I have B (all these calls are async) |
| 16:56 | <Hixie> | A will also have other methods |
| 16:56 | <Hixie> | e.g. to see how the network is doing |
| 16:56 | <TabAtkins> | Okay, the line I have above will work, with the obvious modifications inside the get trap. |
| 16:56 | <Hixie> | (an alternative would be for A to replace itself with B somehow... maybe i can do that with some prototype magic) |
| 16:56 | <Hixie> | your use of the word "obvious" is foreign to me :-P |
| 16:56 | <TabAtkins> | Check if the property being got is one that A "natively" has. If so, do it. |
| 16:57 | <TabAtkins> | Otherwise, check if B has been craeted. If not, queue it up. If so, forward it. |
| 16:57 | <Hixie> | what is "obj" in the first argument to Proxy? |
| 16:57 | <TabAtkins> | You can't swap things out. A has to be a Proxy the whole time. |
| 16:57 | <TabAtkins> | The object that you're wrapping with the proxy. |
| 16:57 | <Hixie> | A? |
| 16:58 | <TabAtkins> | No, it's B. |
| 16:58 | <TabAtkins> | A is the proxy. |
| 16:58 | <Hixie> | B doesn't exist yet |
| 16:58 | <TabAtkins> | Right. |
| 16:58 | <TabAtkins> | So. |
| 16:59 | <TabAtkins> | Hm. |
| 16:59 | <Hixie> | (what if i'm proxying to different objects depending on what the method is? or one of the arguments?) |
| 17:00 | <Hixie> | i just want to trap "method was called but not defined", i don't really want the JS system to know i'm proxying |
| 17:00 | <TabAtkins> | The JS *doesn't* know that you're proxying. That's the point of proxies - they're undetectable except by the isProxy method. |
| 17:00 | <TabAtkins> | So actually, I got it. You need some indirection because of your swap-out. |
| 17:01 | <Hixie> | i mean the JS compiler |
| 17:01 | <TabAtkins> | Then you have to invoke magic. |
| 17:01 | <smaug____> | ah, innerHTML serializes html:script and svg:script in a different way. |
| 17:01 | <TabAtkins> | Magic which is perfectly possible to do with proxies. |
| 17:01 | <TabAtkins> | Why do you care aout the J?S compiler? |
| 17:02 | <Hixie> | TabAtkins: oh i completely believe this is possible, my thesis is just that it's way more complicated than perl. |
| 17:02 | <smaug____> | hsivonen: ping |
| 17:02 | <TabAtkins> | I... somehow doubt that your actual use-case is two lines in perl. |
| 17:02 | <Hixie> | TabAtkins: i don't care about the compiler, i mean, if it needs to know it needs to know, i just don't know why i need to tell it |
| 17:02 | <TabAtkins> | A simple "forward everything I dont' have to thsi other object", sure. |
| 17:03 | <TabAtkins> | But you actually want something more complicated. |
| 17:03 | <Hixie> | use AutoLoader; sub AUTOLOAD { ...do whatever i want with $AUTOLOAD... } |
| 17:03 | <Hixie> | the code in that block will get run for any undefined method |
| 17:04 | <TabAtkins> | While not built-in, that's doable easily with the line I posted above. |
| 17:04 | <Hixie> | (it's almost identical to __noSuchMethod__, which would work fine too) |
| 17:04 | <Hixie> | TabAtkins: i believe that it's doable, i just don't see how |
| 17:04 | <TabAtkins> | Okay, let me send you an email with real code. |
| 17:04 | <Hixie> | k :-) |
| 17:05 | <TabAtkins> | Proxies is purposely a low-level API that allows any other proxy-style abstraction to be built on top, so it maps directly to ES's fundamental operations. |
| 17:06 | <Hixie> | yes |
| 17:06 | <MikeSmith> | TabAtkins: maybe post it as a gist and link to it here (along with e-mailing to Hixie). for people wandering across the logs |
| 17:06 | <Hixie> | TabAtkins: again, i'm not arguing that it's not powerful, or whatnot, just that it isn't simple. |
| 17:07 | <Hixie> | TabAtkins: i'm sure it is great for people who understand JS fundamentals |
| 17:07 | <TabAtkins> | Okay, I'll grant you that. I think it's simple because it's easy to think about in terms of those fundamentals, and easy to build abstractions on top of. |
| 17:07 | <TabAtkins> | MikeSmith: Sure, I'll do a blog post. |
| 17:08 | <Hixie> | when i look at the API definition and the first thing I see is "getOwnPropertyDescriptor", i wonder how many JS authors have any clue what that means |
| 17:08 | <TabAtkins> | The fundamental traps are confusing. ^_^ Most of the time you just need to worry about the derived traps like "get". |
| 17:09 | <Hixie> | i guess what i don't understand is the difference between "proxy" and "target". If I just want to have an object that traps all these operations, it's unclear to me whether that's the Proxy object, or the object I pass to the Proxy method. |
| 17:09 | <Hixie> | (also why is it a method and not a constructor?) |
| 17:10 | <TabAtkins> | It's a constructor. A lot of the fundamental constructors dont' require "new". |
| 17:10 | <Hixie> | that's confusing |
| 17:10 | <gsnedders> | [[Construct]] is mostly just a slightly magic [[Call]] |
| 17:10 | <TabAtkins> | The proxy stands between the author and the target. |
| 17:11 | <Hixie> | say i wanted to make an object that just logged all these traps |
| 17:11 | <Hixie> | so if i call foo.bar, it says "getting bar!" |
| 17:11 | <Hixie> | and if i call foo.quux = 2, it says "setting quux!" |
| 17:12 | <Hixie> | how do i do that? |
| 17:12 | <Hixie> | var proxy = Proxy(null, { get: ... }); ? |
| 17:12 | <Hixie> | var proxy = Proxy({}, { get: ... }); ? |
| 17:12 | <TabAtkins> | Proxy({}, {get: function(obj,name){ console.log("getting "+name+"!"); }, set: function(){...}), ...}); |
| 17:12 | <Hixie> | ok |
| 17:13 | <Hixie> | i think it's ridiculous that you have to pass {} in that case. |
| 17:13 | <Hixie> | that's what i mean by "i don't want to have to tell the compiler what i'm proxying" |
| 17:13 | <TabAtkins> | It wasn't seen as worthwhile to provide a variant API that is in all ways identical to just passing an empty object as the first argument. |
| 17:14 | <Hixie> | i don't understand what the purpose of that argument is at all |
| 17:14 | <TabAtkins> | Though there is http://wiki.ecmascript.org/doku.php?id=harmony:virtual_object_api which is similar, but it requires you to define all the fundamental traps. |
| 17:14 | <TabAtkins> | Say you were not just throwing out console spam, but actually *doing* the operations (and also console spamming). |
| 17:14 | <gsnedders> | Hixie: [], {}, function(){} produce different objects. |
| 17:14 | <gsnedders> | Hixie: or host objects |
| 17:14 | <TabAtkins> | Then your call would look more like: |
| 17:15 | <TabAtkins> | Proxy(obj, {get: function(obj, name) { console.log("getting "+name+"!"); return obj[name]; }...}); |
| 17:15 | <TabAtkins> | The proxy is a wrapper around some other object, intercepting calls to that object. |
| 17:16 | <TabAtkins> | Thus the name - it's a proxy for the original object. |
| 17:16 | <Hixie> | i don't understand the use case (other than logging/debugging) for wrapping a single object that already existed when the proxy was made |
| 17:16 | <TabAtkins> | There's tons. |
| 17:16 | <Hixie> | i see lots of use case for proxying to multiple objects or objects that don't yet exist |
| 17:16 | <Hixie> | or for proxying to nothing at all but doing lots of magic |
| 17:17 | <gsnedders> | Hixie: Make array-like methods (filter, reduce) available on a NodeList, as an example |
| 17:17 | <Hixie> | but when do you just want to proxy to an existing object? |
| 17:17 | <Hixie> | for that you'd presumably just poke at the prototype, why would you make a proxy? |
| 17:17 | <TabAtkins> | Hixie: Before I start writing this code, what's your actual use-case? Making sure I capture the details correctly. |
| 17:17 | <Hixie> | in fact how would you even use a proxy to do that? |
| 17:18 | <TabAtkins> | ...that's precisely the main and most direct use-case for Proxies. I have no idea how you're missing it. |
| 17:18 | <gsnedders> | Hixie: A lot of libraries don't want to mutate built-in prototypes. Proxy get to return Array.prototype.reduce when "reduce" is got. |
| 17:19 | <Hixie> | TabAtkins: i want to gsnedders i don't understand why that is better, can you elaborate? |
| 17:20 | <Hixie> | TabAtkins: i have JS objects that represent objects in a server-side data structure, which is lazily loaded as needed. I don't know the types of the objects until I get them, but I need to instantiate the objects before I get them. The API to those objects is all async (callback-based). |
| 17:20 | <gsnedders> | Hixie: Consider the case of having mutliple libraries loaded. You don't want them defining slightly different NodeList.prototype.reduce with different APIs |
| 17:21 | <Hixie> | gsnedders: oh, you do in fact mean "Make array-like methods (filter, reduce) available on a NodeList" and not "Make array-like methods (filter, reduce) available on NodeList", i see |
| 17:22 | <TabAtkins> | Hixie: Okay, cool. You mentioned possibly having multiple objects to dispatch to, based on which method is called. Is that necessary, or was it just theorizing? |
| 17:23 | <Hixie> | TabAtkins: that's a different use case that i've had before, but not relevant to my immediate problems (though i'm curious how it would work too) |
| 17:23 | <gsnedders> | Hixie: Most libraries like jQuery return a wrapper around NodeList or so |
| 17:23 | <TabAtkins> | Okay. It's a trivial modification, but I'll ignore it for now. |
| 17:32 | <ap> | Hi Hixie! I spent some time refreshing my memory of appcache spec, but am still unsure of the answer: can an iframe use a different appcache than main frame? The use case is to cache main application in one cache, and also have a cache with localized data per language. Localized data would be loaded in an invisible iframe. |
| 17:32 | <ap> | Hixie: from what I see, that should work, right? |
| 17:32 | <Hixie> | yes, iframes are inependent |
| 17:32 | <Hixie> | d |
| 17:32 | <ap> | Hixie: thanks |
| 17:42 | <Ms2ger> | Heh |
| 17:42 | <Ms2ger> | css3-marquee |
| 17:43 | <Hixie> | i really should be working at the office rather than at home. bbl. :-) |
| 17:43 | <Ms2ger> | Why? :) |
| 17:43 | <MikeSmith> | whew |
| 17:44 | <gsnedders> | Work from offices? Pff! |
| 17:44 | <MikeSmith> | glad that all the tedious discussion about boring technical stuff is over for now |
| 17:44 | <gsnedders> | Though sometimes I think I should do so more… |
| 17:44 | <MikeSmith> | let's please get back to discussing responsible images |
| 17:48 | <MikeSmith> | oh man |
| 17:48 | <MikeSmith> | https://twitter.com/stevefaulkner/status/208252675110871040 |
| 17:48 | <MikeSmith> | but hey that's a very normal thing that happens very often |
| 17:49 | <MikeSmith> | where multi-year business agreements are extended for only a single month |
| 17:49 | <MikeSmith> | so that's probably not a sign of anything else going on at all |
| 17:49 | <MikeSmith> | they probably just plan to keep extending it for one month at a time for the next 5 years, right? |
| 17:54 | <hober> | could someone remind me who the Redundancy Activity Lead is? [ context: https://twitter.com/w3c/status/208170557169090560 ] |
| 17:57 | <Ms2ger> | You should tell glazou |
| 18:02 | <hober> | Ms2ger: there's already a Member-space thread about it |
| 18:03 | <Ms2ger> | You shouldn't tell me that in a public channel, dear :) |
| 18:09 | <Ms2ger> | hober++ |
| 18:10 | rniwa | wonders where ++ came from |
| 18:10 | <rniwa> | or attributed to |
| 18:12 | <TabAtkins> | Hm. Queueing method calls with proxies is kinda annoying. |
| 18:13 | <rniwa> | AryehGregor: yt? |
| 18:13 | <AryehGregor> | rniwa, briefly. |
| 18:13 | <TabAtkins> | Because the traps don't know it's a method call, they just know that a property is being requested. |
| 18:13 | <rniwa> | AryehGregor: hi, did you get what I mean for the pre bug? |
| 18:13 | <AryehGregor> | (usually I'm not around at this hour, though) |
| 18:13 | <AryehGregor> | rniwa, I replied on the bug asking for more details, didn't I? |
| 18:13 | <TabAtkins> | So you have to return a special object that'll intercept the call and queue the info for you. |
| 18:13 | <rniwa> | AryehGregor: maybe I'll go visit you in Israel one of these days :) unless you're coming to the TPAC in France this year |
| 18:14 | <rniwa> | AryehGregor: yeah and I replied |
| 18:14 | <AryehGregor> | rniwa, didn't see that yet. I'll look tomorrow. Nope, not coming to TPAC. |
| 18:14 | <rniwa> | AryehGregor: with an example |
| 18:14 | <rniwa> | AryehGregor: okay. |
| 18:14 | <rniwa> | fwiw, i've been to google's tel-aviv office for bidi work :) |
| 18:14 | <AryehGregor> | :) |
| 18:14 | <rniwa> | AryehGregor: it'll be nice to catch up in person every now and then |
| 18:15 | <rniwa> | latency is killing our lively conversatino sometimes :\ |
| 18:15 | <AryehGregor> | Yes, true. |
| 18:19 | <Philip`> | MikeSmith: I guess that's a hint that Google's going to announce next month that it's finished organising the world's information and will henceforth shut down, and they don't want any outstanding contracts at that time |
| 18:19 | <MikeSmith> | heh |
| 18:19 | <rniwa> | AryehGregor: maybe I can go to Israel after/before TPAC |
| 18:20 | <MikeSmith> | Philip`: they should hire me for that job |
| 18:20 | <rniwa> | AryehGregor: I'd rather go fly to Israel from/to France |
| 18:20 | <rniwa> | AryehGregor: than from bay area. |
| 18:20 | <MikeSmith> | Philip`: the shutting down part, I mean |
| 18:20 | <rniwa> | since i got really sick both ways the last time I flew :( |
| 18:20 | <AryehGregor> | rniwa, make sure you coordinate with me well in advance -- I don't work full-time, so I'd have to make sure it's at a time that works for me. |
| 18:20 | <rniwa> | AryehGregor: of course, only if you have a free time around that time |
| 18:20 | <AryehGregor> | rniwa, want to send me an e-mail? |
| 18:20 | <rniwa> | AryehGregor: yeah, will do that :) |
| 18:20 | <AryehGregor> | Thanks! |
| 18:20 | <rniwa> | AryehGregor: but TPAC is in October |
| 18:21 | <rniwa> | AryehGregor: so will probably contact you around August or so |
| 18:21 | <AryehGregor> | rniwa, okay. |
| 18:21 | <rniwa> | it's waaay too early to book a plane ticket, etc... :) |
| 18:21 | <MikeSmith> | Philip`: I like shutting stuff down. I wish I could shut down some more things. Failed social experiments... |
| 18:21 | <MikeSmith> | failed organizations |
| 18:22 | <MikeSmith> | refund us finally our confiscated gods |
| 18:22 | <MikeSmith> | and all that |
| 18:23 | <Ms2ger> | Failed standards organizations? |
| 18:24 | <divya> | :)) |
| 18:24 | <rniwa> | MikeSmith: since you're here... |
| 18:24 | <rniwa> | MikeSmith: is there anyway to codify instructions for manual tests? |
| 18:25 | <rniwa> | MikeSmith: in HTML or JavaScript? |
| 18:25 | <rniwa> | MikeSmith: the thing is WebKit has a bunch of test automation extensions like window.layoutTestController in our test runner |
| 18:25 | <rniwa> | MikeSmith: and we can emulate keyboard, mouse, etc... events with that. |
| 18:26 | <rniwa> | MikeSmith: so if we could codify instructions in W3C manual tests, we could automate those tests as well. |
| 18:28 | <MikeSmith> | um |
| 18:28 | <MikeSmith> | I don't understand what it means to automate manual tests |
| 18:28 | <AryehGregor> | rniwa, definitely coordinate with someone at Mozilla, because we have the same issue. |
| 18:28 | <MikeSmith> | wait |
| 18:28 | <MikeSmith> | what issue? |
| 18:29 | <MikeSmith> | I think I'm missing something here |
| 18:29 | <rniwa> | oops sorry |
| 18:29 | <rniwa> | MikeSmith: this is about W3C test suites |
| 18:29 | MikeSmith | nods |
| 18:29 | <rniwa> | MikeSmith: there are a bunch of manual tests in there |
| 18:29 | <MikeSmith> | yeah |
| 18:29 | <rniwa> | MikeSmith: which says something like "click X and do Y" |
| 18:29 | <MikeSmith> | ah |
| 18:29 | <MikeSmith> | WebDriver? |
| 18:30 | <MikeSmith> | emulating user actions? |
| 18:30 | <rniwa> | MikeSmith: right. we have WebDriver-like extension in our test runner |
| 18:30 | <rniwa> | MikeSmith: except that they're exposed as a javascript object. |
| 18:30 | <MikeSmith> | ok |
| 18:30 | <rniwa> | MikeSmith: so instead of you have an external program that drives a test |
| 18:30 | <MikeSmith> | yeah |
| 18:30 | <rniwa> | MikeSmith: the test itself can control what test runner does. |
| 18:31 | <rniwa> | MikeSmith: I suspect Mozilla has a similar mechanism from what AryehGregor just said. |
| 18:31 | <AryehGregor> | Yes. |
| 18:31 | <MikeSmith> | unless I'm missing something, this is exactly the scope of the standard Web driver API work |
| 18:32 | <MikeSmith> | Simon Stewart et all |
| 18:32 | <MikeSmith> | minus one l |
| 18:33 | <MikeSmith> | http://dvcs.w3.org/hg/webdriver/raw-file/default/webdriver-spec.html |
| 18:33 | <MikeSmith> | if not, it should be the scope |
| 18:33 | <MikeSmith> | the ultimate goal being, automate everything |
| 18:33 | <MikeSmith> | or "anything that can be automated must be automated" |
| 18:33 | <rniwa> | MikeSmith: hm... the last time i checked, WebDriver API was supposed to be used externally? |
| 18:34 | <MikeSmith> | sorry, what do you mean by "externally"? |
| 18:34 | <MikeSmith> | this is an API that's exposed to Web applications |
| 18:34 | <rniwa> | MikeSmith: oh is it? |
| 18:34 | <MikeSmith> | yeah man |
| 18:34 | <MikeSmith> | that's the whole idea |
| 18:35 | <rniwa> | MikeSmith: so if you have test.html |
| 18:35 | <MikeSmith> | unless I'm deeply confused |
| 18:35 | <rniwa> | MikeSmith: we can invole methods, etc... of WebDriver in test.html itself? |
| 18:35 | <MikeSmith> | yes |
| 18:35 | <MikeSmith> | once it's actually implemented of course |
| 18:36 | <MikeSmith> | but man you are talking to the village idiot here |
| 18:36 | <MikeSmith> | me I mean |
| 18:36 | <MikeSmith> | I recommend pinging Simon Stewart about it |
| 18:36 | <MikeSmith> | dude can make it much more clear than me |
| 18:37 | <rniwa> | MikeSmith: ok. is he n #testing at irc.w3.org? |
| 18:37 | <MikeSmith> | sometimes |
| 18:37 | <rniwa> | MikeSmith: the last time i talked with someone wokring on webdriver |
| 18:37 | <MikeSmith> | he may also be on #chromium |
| 18:37 | <MikeSmith> | David Burns is also working on this |
| 18:38 | <MikeSmith> | and Eran Messeri |
| 18:38 | <rniwa> | MikeSmith: oh, Simon Stewart is a googler :\ |
| 18:38 | <MikeSmith> | rniwa: yeah? |
| 18:38 | <MikeSmith> | yeah man |
| 18:38 | <Ms2ger> | Boo, Googlers :) |
| 18:38 | <MikeSmith> | jesus |
| 18:38 | <rniwa> | MikeSmith: okay, I'll go talk with him. thanks! |
| 18:38 | <MikeSmith> | do you guys actually talk to each other? |
| 18:39 | <MikeSmith> | rniwa: your company is too big, chief |
| 18:39 | <rniwa> | hm... there are at least 3 Simon Stewart at Google :( |
| 18:39 | <MikeSmith> | wow |
| 18:39 | <MikeSmith> | that's a clear sign it's time to move on to somewhere smaller |
| 18:39 | <Ms2ger> | Consider Mozilla, for example... |
| 18:39 | <Ms2ger> | We're always looking for people who know things about editing :) |
| 18:40 | <MikeSmith> | we too |
| 18:40 | <MikeSmith> | and we have only 60 people on staff |
| 18:40 | <MikeSmith> | maybe 30 people if you count the ones that are actually doing productive work |
| 18:40 | <MikeSmith> | maybe |
| 18:41 | <MikeSmith> | hard to trump that |
| 18:42 | <rniwa> | Ms2ger: nah... you g!uys have AryehGregor & ehsan |
| 18:42 | <Ms2ger> | Do you know what our code looks like? |
| 18:42 | <rniwa> | oops s/g!uys/guys/ & s/ehsan/ehsan!/ |
| 18:42 | <Ms2ger> | Hmm, ehsan factorial would be nice... |
| 18:43 | <rniwa> | MikeSmith: i think google has something like 30,000 employees now... |
| 18:43 | <rniwa> | LOL |
| 18:43 | <rniwa> | Ms2ger: that'll be a lot of ehsan indeed. |
| 18:44 | <MikeSmith> | rniwa: you should test all of those people to determine how well the can estimate how many basketballs can fit in the room |
| 18:45 | <Ms2ger> | MikeSmith, surely HR already did that? |
| 18:45 | <TabAtkins> | That's the first question you answer to get in the door. |
| 18:45 | <rniwa> | Ms2ger: to make you feel better, take a look at http://trac.webkit.org/browser/trunk/Source/WebCore/editing/ReplaceSelectionCommand.cpp |
| 18:45 | <MikeSmith> | OK, well at least make the draw the organizational structure of Google on a whiteboard |
| 18:46 | <rniwa> | Ms2ger: which is mutually recursive (we bail out when the actual recursion happens) with DeleteSelectionCommand (another class) & mergeParagraphs |
| 18:46 | <rniwa> | with moveParagraphs |
| 18:46 | <MikeSmith> | TabAtkins: my answer is, it's a fucking stupid question that reveals asshattedness in the person assking it |
| 18:47 | <MikeSmith> | but hey that's just me |
| 18:48 | <Ms2ger> | rniwa, hmm, that code seems to be calling RefPtr::get() a lot |
| 18:48 | <TabAtkins> | MikeSmith: Yes, I was joking. ^_^ |
| 18:48 | <rniwa> | MikeSmith: someone said the joke that we should ask every SWE in our company to see if they can understand the recent "proof" of P != NP |
| 18:48 | <rniwa> | Ms2ger: that's okay. RefPtr::get() is an inline function that just obtains a raw pointer |
| 18:49 | <rniwa> | Ms2ger: it's basically zero-cost. |
| 18:49 | <Ms2ger> | rniwa, yeah, but our refptrs have an operator T* |
| 18:49 | <MikeSmith> | TabAtkins: problem is I guess I can't tell where the joke starts. the truth is actually stranger than the fiction |
| 18:49 | <rniwa> | Ms2ger: the reason we don't have that is due to PassRefPtr I believe |
| 18:49 | <Ms2ger> | Oh, how silly |
| 18:50 | <rniwa> | Ms2ger: it actually saves us a lot of CPU cycles :) |
| 18:50 | <rniwa> | s/ us// |
| 18:50 | <rniwa> | Ms2ger: not to mention it improves the cache locality |
| 18:51 | <rniwa> | although Darin (Adler) recently told me a depressing story about how editing was the reason we introduced RefPtr... :'( |
| 18:51 | <Ms2ger> | Heh |
| 18:52 | <MikeSmith> | anyway, building an organization where the product-dev work in largely driven by Assperghers-syndome engineers combined with the revenue side being driven by completely unethical moneygrubbers is clearly the recipe for long-term success |
| 18:52 | <TabAtkins> | Worked for us! (You gotta make sure the revenue-type people don't infiltrate management, is all.) |
| 18:53 | <MikeSmith> | TabAtkins: then you have the cases like Marius Milner who combine the best of both worlds |
| 18:53 | <rniwa> | TabAtkins: "revenue-type people don't infiltrate management" indeed is very important for almost all companies |
| 18:54 | <MikeSmith> | whoever decided to hire Marius and give him free reign should get a super-big gold star |
| 18:55 | <TabAtkins> | OMG, people are still talking about the wifi bullshit? |
| 18:55 | <MikeSmith> | yeah |
| 18:56 | <MikeSmith> | because I guess people sorta are surprised when other people blow smoke up their asses |
| 18:56 | <TabAtkins> | You send data to unencrypted websites over unencrypted wifi, everyone in your vicinity has access to it. |
| 18:56 | <MikeSmith> | yeah |
| 18:56 | <MikeSmith> | and then you lie about it |
| 18:56 | <MikeSmith> | nothing wrong with that |
| 18:57 | <MikeSmith> | you claim you had no clue what was going on |
| 18:57 | <MikeSmith> | was just one crazy dude out there doing stuff on his own |
| 18:57 | <MikeSmith> | nothing evil about that |
| 18:58 | <MikeSmith> | anyway |
| 18:58 | <MikeSmith> | we all work for really wonderful organizations |
| 18:58 | <TabAtkins> | It was random bits of data grabbed across a few seconds as a car drove by. |
| 18:58 | <MikeSmith> | yep |
| 18:58 | <MikeSmith> | exactly |
| 18:58 | <MikeSmith> | that's all it was |
| 18:59 | <MikeSmith> | so no reason to not be totally transparent publicly about the fact that's what you were doing |
| 19:01 | <MikeSmith> | on the bright side there's no record of Marius actively working to prevent people who love each other from having the legal right to get married |
| 19:01 | <MikeSmith> | so that's a plus |
| 19:01 | <MikeSmith> | like I said, we all work for really wonderful organizations |
| 19:02 | <MikeSmith> | with really exemplary leadership |
| 19:03 | Ms2ger | wonders what got MikeSmith on his horse |
| 19:05 | <MikeSmith> | Ms2ger: nothing but love, an |
| 19:24 | <jgraham> | Please stop writing so much when I'm not looking |
| 19:24 | jgraham | tries to figure out if people eventually got the right story about WebDriver |
| 19:28 | <jgraham> | rniwa: So the story with webdriver is that it's typically external; you have some script outside the browser that drives the interaction |
| 19:28 | <TabAtkins> | Hm. Hixie: After finishing the impl, I'm pretty sure you don't need proxies at all. |
| 19:29 | <jgraham> | But they have made a js API for it. I don't know if that could be self-driving |
| 19:29 | <rniwa> | jgraham: can it be inside? |
| 19:29 | <rniwa> | jgraham: e.g. it'll be useful to be able to do something like |
| 19:29 | <rniwa> | div.sendKeyDown(); |
| 19:29 | <rniwa> | assertSomethingHappened() |
| 19:30 | <rniwa> | jgraham: if the API is only available to external programs |
| 19:30 | <rniwa> | jgraham: then asserting conditions will be much more complicated |
| 19:30 | <rniwa> | jgraham: because of concurrency, etc... |
| 19:30 | <jgraham> | Right. So the way we do that is to use watir which is a particularly crappy ruby wrapper around WebDriver |
| 19:30 | <jgraham> | Designed by the kind of people who says things like "tests can be specifications" |
| 19:31 | <jgraham> | And yes, I think concurrency is a problem |
| 19:31 | <jgraham> | Because it sort of tries to pretend that the API is sync, but it obviously isn't really |
| 19:31 | <rniwa> | jgraham: oh no :( cucumber... |
| 19:32 | <rniwa> | jgraham: yeah, so I'd vote for exposing it via JavaScript. |
| 19:32 | <rniwa> | jgraham: we certainly don't want to expose it all the time. |
| 19:32 | <TabAtkins> | Hixie: Ah, nm, I see the flaw in what I was going to write. You either need (a) proxies, (b) private names, or (c) to add the methods to every instance instead of them being on the prototype. |
| 19:32 | <jgraham> | Well it isn't really "exposed" in any sense |
| 19:32 | <rniwa> | but it's not an issue for browser vendors... |
| 19:32 | <jgraham> | I mean, you have to connect externally to the browser |
| 19:33 | <rniwa> | jgraham: right... so what I'm advocating is to expose it via DOM |
| 19:33 | <jgraham> | So, I don't really know how well that would work |
| 19:33 | <rniwa> | jgraham: webElementDiv = window.webDriver(div); |
| 19:33 | <jgraham> | It at the least sounds *different* to WebDriver |
| 19:34 | <jgraham> | But it was someone at Google who was working on the JS bindings |
| 19:34 | <jgraham> | I don't remember his name though |
| 19:34 | <rniwa> | jgraham: and then you can do something like webElementDiv.sendKeys(~~) |
| 19:34 | <jgraham> | ... I don't know the API details |
| 19:34 | <benvie> | if you're referring to what I think you are, I did that here using code generation from IDL and prototye accessors https://github.com/Benvie/svgstuff/blob/master/lib/defs.js |
| 19:35 | <jgraham> | I know that Mozilla are using the python bindings and I think Google/FB use it to test their websites (probably with Java/PHP bindings, respectively) |
| 19:35 | <jgraham> | But about the JS bindings I know nothing |
| 19:35 | <rniwa> | Simon Stewart? |
| 19:36 | <jgraham> | Well he will know who knows |
| 19:36 | <jgraham> | But it wasn't him that wrote them |
| 19:36 | <jgraham> | But he is project lead or something |
| 19:37 | <jgraham> | None of the Opera|ex-Opera people who would know more are here at the moment |
| 19:37 | <rniwa> | benvie: i don't understand. how are you emulating sendKeys, etc... |
| 19:37 | <rniwa> | benvie: from javascript? |
| 19:37 | <benvie> | well I did that using node and ffi but not really finished |
| 19:38 | <rniwa> | benvie: i don't think that's what we're looking for. |
| 19:38 | <benvie> | yeah |
| 19:38 | <benvie> | similar |
| 19:38 | <benvie> | but no =D |
| 19:38 | <rniwa> | benvie: yeah, the idea is similar. |
| 19:38 | <rniwa> | jgraham: i think there's a real value in exposing these APIs through javascript |
| 19:38 | <rniwa> | jgraham: so that tests can be self-contained |
| 19:39 | <rniwa> | jgraham: one drawback, however, is that we probably won't be shipping this API in production |
| 19:39 | <gsnedders> | rniwa: And that makes it impossible to test IE/Opera as a third-party. |
| 19:39 | <rniwa> | jgraham: so ordinary web developers can't use them to run tests :\ |
| 19:39 | <gsnedders> | rniwa: Or even release builds of Safari, say |
| 19:39 | <rniwa> | gsnedders: right. |
| 19:39 | <rniwa> | gsnedders: but that's already true. |
| 19:39 | <rniwa> | gsnedders: we can leave a manual test instruction |
| 19:40 | <rniwa> | gsnedders: at least that's what we do in webkit |
| 19:40 | <rniwa> | gsnedders: we have window.eventSender which lets us emulate keyboard/mouse events |
| 19:40 | <rniwa> | gsnedders: but we also leave manaul test instruction |
| 19:40 | <rniwa> | gsnedders: so that we can run those tests in firefox, etc... |
| 19:40 | <gsnedders> | rniwa: WebDriver being external allows automated testing of the browsers, which is better than that |
| 19:40 | <rniwa> | gsnedders: I don't think everyone is on the page, however. |
| 19:41 | <rniwa> | gsnedders: I remember Microsoft explicitly said they won't be implementing it for example. |
| 19:41 | <rniwa> | s/said/saying/ |
| 19:41 | <rniwa> | gsnedders: and I'm skeptical that we can use WebDriver API as is in our test harness |
| 19:42 | <rniwa> | gsnedders: what's the point of a test suite if browser vendors can't run them? |
| 19:42 | <rniwa> | or rather "don't" |
| 19:43 | <jgraham> | rniwa: Why are you skeptical? |
| 19:43 | <rniwa> | jgraham: that we can support WebDriver in our test harness. |
| 19:43 | <jgraham> | Hmm, well I guess I don't know how you run tests |
| 19:43 | <rniwa> | jgraham: fwiw, we don't use a full-blown web browser to run tests. |
| 19:44 | <jgraham> | Well we soert-of don't |
| 19:44 | <rniwa> | jgraham: we have a special test runner called DumpRenderTree or WebKitTestRunner (for webkit2) |
| 19:44 | <jgraham> | How unlike a real browser is it? |
| 19:44 | <rniwa> | jgraham: that exoses special objects such as layoutTestController, eventSender, textInputController in the global scope (i.e. on window object) |
| 19:44 | <rniwa> | jgraham: it's so unlike a real browser that it doesn't even have a window. |
| 19:45 | <rniwa> | jgraham: you can't see anything until the test completes |
| 19:45 | <jgraham> | Hmm, not having a window does sound like it could be a problem |
| 19:45 | <rniwa> | jgraham: and you can't interact with it. |
| 19:45 | <gsnedders> | jgraham: It literally just makes a render tree and (sometimes) a screenshot available. That's it. |
| 19:45 | <gsnedders> | jgraham: There is no interaction, you start it, it does that, over. |
| 19:45 | <rniwa> | gsnedders: right. |
| 19:45 | <jgraham> | Oh well that seems like a kind of broken way of testing |
| 19:46 | <jgraham> | In that it is very unlike anything you will ship |
| 19:46 | <jgraham> | (very different codepaths) |
| 19:46 | <rniwa> | jgraham: in practice, it can test things pretty well. |
| 19:46 | <rniwa> | jgraham: we do all the paining, layout, etc... normally |
| 19:46 | <rniwa> | it |
| 19:46 | <rniwa> | jgraham: it's just that it doesn't have any real UI to it. |
| 19:46 | <rniwa> | s/ to it// |
| 19:47 | <jamesr_> | we also do some testing with a fuller browser, of course, but we don't run every test that way |
| 19:47 | <rniwa> | jgraham: and doesn't let user interact because the whole point of the test runner is to automate testing |
| 19:47 | <rniwa> | jgraham: and run them as fast as possible. |
| 19:47 | <jgraham> | So it is rendering to an offscreen buffer, effectively? |
| 19:47 | <rniwa> | jgraham: if we were to start the entire web browser for each test case, it would be impratically slow. |
| 19:47 | <jamesr_> | correct |
| 19:47 | <rniwa> | jgraham: yes. |
| 19:47 | <jamesr_> | or in many cases not rendering at all |
| 19:48 | <jgraham> | rniwa: Sure, obviosuly you have to not do that |
| 19:48 | <rniwa> | jgraham: things like GPU acceleartion, etc... need a special treatment because of that. |
| 19:48 | <gsnedders> | Do you test stuff like GPU painting with it? |
| 19:48 | <jamesr_> | if the test doesn't depend on pixels |
| 19:48 | <jamesr_> | for tests that need it, we test that part of the GPU pipeline (normally using osmesa so it can run on VMs easily) |
| 19:48 | <jgraham> | We can use our remote-debugging support to load pages, wait for the browser to become idle (or for a result to be recieved) and load the next test, without restarting |
| 19:49 | <jgraham> | Although WebDriver/Watir tests are an exception, sadly |
| 19:49 | <gsnedders> | So you could, theoretically, have GPU pipeline bugs in layout tests that don't get found? |
| 19:49 | <rniwa> | gsnedders: our regular tests can't find them. but as jamesr said, we have special tests for those. |
| 19:49 | <jamesr_> | we could have bugs anywhere that don't get found, but exercise most of the GPU pipeline in layout tests (the parts that aren't covered are OS-integration things like IOSurface swapping, etc) |
| 19:50 | <jamesr_> | some of our regular layout tests run through the GPU path |
| 19:50 | <rniwa> | with GPU acceleration, though, testing everything is virtually impossible because you then have to try all permutations of OS, GPU chip/board, driver, etc... |
| 19:50 | <jamesr_> | but not all - most of our tests don't render at all, they just make JS assertions or dump the render tree without painting it |
| 19:51 | <jgraham> | (and we have a lightweight platform layer and render to a virtual buffer) |
| 19:52 | <gsnedders> | jgraham: That's not true, we render to Xvfb — our platform layer we run on is complete, just the platform beneath it isn't so standard. |
| 19:53 | <gsnedders> | jamesr_: Was mainly asking because I know we do have some general layout bugs with the GPU pipeline (though we equally don't normally run all tests through it) |
| 19:53 | <jgraham> | gsnedders: I meant "lightweight" as in "not the full desktop browser (except when we test that specifically)" |
| 19:54 | <jgraham> | Possibly that wasn't sufficiently obvious |
| 19:54 | <jamesr_> | i think it's a terminology thing but we would normally call that a rendering or paint bug, not layout |
| 19:54 | <jamesr_> | layout figures out parameters on a bunch of C++ objects representing what we call the render tree. painting goes through those data structures and generates pixels |
| 19:54 | <gsnedders> | jamesr_: Right, I wouldn't call that a layout bug per-se, but it's a bug affecting layout which is caught by the layout tests, even if the bug lies elsewhere |
| 19:54 | <jamesr_> | if the GPU pipeline is broken it'd tend to break the latter of those two steps but it couldn't really break the former |
| 19:55 | <gsnedders> | affecting layout insofar as what the user sees |
| 19:55 | <jamesr_> | yes definitely. we have tests to cover that |
| 19:55 | <rniwa> | gsnedders: we normally categorize those as painting bugs :) |
| 19:55 | rniwa | hates technical jargons |
| 19:56 | <rniwa> | why can't we stop inventing obnoxious jargons |
| 19:56 | <gsnedders> | jamesr_: I guess my point is more painting bugs can turn up (and hence regress!) in layout tests as well as painting tests. |
| 19:56 | <jgraham> | Hmm a painting bug sounds like you have the right information in layout but the gfx layer did something wrong (and it is often fixed by forcing a repaint) |
| 19:56 | <jamesr_> | jgraham, depends on the bug |
| 19:57 | <jamesr_> | gsnedders, certainly, and that's why we have the capability of going through the painting path (including GPU where applicable) in our layout test harness |
| 19:57 | <jgraham> | jamesr_: Sure, I think I'm just saying that I would draw a distinction along those lines |
| 19:57 | <jamesr_> | and then checking that those pixels either match a golden PNG or the rendering of a reference file |
| 19:57 | <jgraham> | Which might be an Opera thing or might be something I made up |
| 19:57 | <Hixie> | TabAtkins: still think it's trivial? :-) |
| 19:58 | <jamesr_> | we also have repaint tests which paint once, change something, then paint again and make sure we actually update all the pixels that are supposed to look different |
| 19:58 | <jgraham> | "then checking that those pixels either match a golden PNG" - I'm sorry :) |
| 19:58 | <jamesr_> | we have a lot of golden PNGs (as in golden file testing) in WebKit |
| 19:58 | <jgraham> | We still have too much of it in Opera |
| 19:58 | <jgraham> | It is evil and must die |
| 19:59 | <gsnedders> | jamesr_: And regressions could slip through if it's not done often. |
| 19:59 | <jamesr_> | we have bots that run it as fast as they can cycle (it's not every checkin, but it's every hour or two on the slowest configs) |
| 19:59 | <gsnedders> | Right, so it's part of the normal testing cycle, even if it isn't done on every run. |
| 20:00 | <gsnedders> | It just sounded as if it was exceptional and not normally done at all from what you said before. |
| 20:00 | <Philip`> | jgraham: I guess the problem is exacerbated by Opera supporting too many platforms? |
| 20:00 | <gsnedders> | Philip`: And subtle differences between products. |
| 20:01 | <rniwa> | anyways, |
| 20:01 | <jamesr_> | ah no, it's part of the configuration of the test so not all tests are configured to hit every path, but we run all the tests continuously in many configurations |
| 20:01 | <rniwa> | to re-iterate my point, it would be really nice if we could expose WebDriver API in tests themselves |
| 20:01 | <rniwa> | so that we can import W3C tests without havingt to manually modify them |
| 20:02 | <jgraham> | Philip`: > 1 you mean? :) |
| 20:02 | <jgraham> | Or really > 0 |
| 20:02 | <gsnedders> | It'd bad enough with one platform, having to manually verify things :P |
| 20:02 | <jgraham> | Since even on one platform people do annoying things like change the font engine every so often |
| 20:04 | <gsnedders> | (Font rendering was a big reason why we tested on Windows 2000 for a long time, not wanting to go through n thousand screenshots and relabel them) |
| 20:07 | <rniwa> | gsnedders: yeah... font anti-aliasing kills us :( |
| 20:08 | <rniwa> | gsnedders: we have to generate thousands of very similar PNGs just to cope up with font-aliasing differences between different versions of Mac/Win/etc... |
| 20:08 | <rniwa> | (or maybe we've disabled anti-aliasing on Windows; /me doesn't remember) |
| 20:14 | <rniwa> | jgraham, gsnedders: so... do you think exposing it via JavaScript would be an option at all? |
| 20:14 | <rniwa> | with manual instructions? |
| 20:15 | <rniwa> | jgraham, gsnedders: alternatively, i would be fine with having some external file that instructs WebDriver what to do. |
| 20:15 | <rniwa> | jgraham, gsnedders: as long as it's machine-readable so that we can manipulate it to work with our test harness. |
| 20:16 | <gsnedders> | I'd much rather be able to test release browsers. |
| 20:16 | <rniwa> | gsnedders: that could be done manually, right? |
| 20:16 | <rniwa> | gsnedders: we already do that manually. |
| 20:17 | <rniwa> | gsnedders: but i'm open to options that allows automated testing of browsers in production. |
| 20:17 | <rniwa> | gsnedders: that sounds like a very valuable goal to have. |
| 20:17 | <rniwa> | gsnedders: as long as the configuration is such that we can also use it in our test harness |
| 20:20 | <TabAtkins> | Hixie: More details are needed. These async methods, are they part of a stable, closed set? Or are they determined by the server-side object? |
| 20:21 | <rniwa> | gsnedders: would that sound good with you? |
| 20:22 | <rniwa> | s/would/does/ |
| 20:22 | <rniwa> | ugh... s/with/to/ |
| 20:25 | <TabAtkins> | If they're a closed set, I can do this without proxies at all. |
| 20:26 | <TabAtkins> | Hixie: The difficulty here that makes it harder than other languages is that Javascript doesn't actually have any concept of "methods". It just has properties, whose values might be callable. |
| 20:32 | <Hixie> | TabAtkins: there is a finite number of known types that will be instantiated, each with a finite number of methods. |
| 20:32 | <Hixie> | TabAtkins: sure. s/method/field/ is fine. |
| 20:32 | <TabAtkins> | Okay, that's the "closed set" option. Cool. |
| 20:32 | <TabAtkins> | Hixie: Renaming doesn't help. ^_^ It just means that I need to be a little fancy to intercept method calls. |
| 20:32 | <Hixie> | (i actually do have an open-ended set of methods but one of the methods from the closed set is what i'll use to invoke the open set) |
| 20:33 | <Hixie> | TabAtkins: ah |
| 20:41 | <TabAtkins> | Unless I'm crazy, this turned out to be *really* easy once I stopped trying to use Proxies, because they're not necessary. |
| 20:41 | <TabAtkins> | Though you likely need Private Names to avoid exposing some of the data here. |
| 20:43 | <jgraham> | So what are you doing? Swapping prototypes from one that queues the results to one that doesn't. That's pretty evil so presumably not... |
| 20:43 | <jgraham> | s/./?/ |
| 20:44 | <jgraham> | Or I guess you can just rewrite the properties at runtime in the object itself |
| 20:45 | <jgraham> | None of this sounds healthy though |
| 20:45 | <TabAtkins> | Hixie: http://www.xanthir.com/blog/b4JB0 |
| 20:45 | <TabAtkins> | jgraham: Tell me if I'm doing anything wrong here. |
| 20:47 | <Hixie> | TabAtkins: swapping prototypes is what i suggested a few hours ago when you were saying to use proxies :-) |
| 20:47 | <TabAtkins> | Hixie: I'm not swapping protos... |
| 20:47 | <Hixie> | oh, i misread what jgraham said, my bad |
| 20:47 | <TabAtkins> | I thought proxies were necessary when I thought that the set of async methods was open-ended. |
| 20:48 | <Hixie> | wait so i have to list every function that every possible class of object might implement? |
| 20:48 | <TabAtkins> | No, you have different FarObject classes. |
| 20:49 | <Hixie> | i don't know the type of the FarObject until i get back the data from the server |
| 20:49 | <TabAtkins> | Oh! |
| 20:49 | <TabAtkins> | Hm, then. Let me think about this. |
| 20:49 | <Hixie> | if i knew the type of the object it would be trivial, i just wouldn't need to create a proxy at all |
| 20:49 | <TabAtkins> | We'll probably be back to needing a proxy if we want to be efficient. |
| 20:49 | <Hixie> | i could just create the object and have the object itself do the queuing |
| 20:49 | <TabAtkins> | Yeah, that's what I ended up doing. ^_^ |
| 20:50 | <Hixie> | (which btw is what i think i will probably end up doing, by having every object ID actually include its type as well) |
| 20:50 | <Hixie> | (but i still wish it was easy to do it without that) |
| 20:50 | <TabAtkins> | If Type1 has asyncFoo and type2 has asyncBar, and you call asyncBar on the object before it's loaded but it ends up being Type1 when you get the data, what happens? |
| 20:51 | <Hixie> | in practice, you don't do that, because you'll have some idea of what the superclass of the object is and won't call things that that superclass doesn't support |
| 20:52 | <Hixie> | and only when you get information back from the methods of that superclass would you then call the methods of the subclass (the class it actually is) |
| 20:52 | <Hixie> | anyway i think my original point, which is that this is not as trivial as in perl, stands proven |
| 20:52 | <TabAtkins> | I think the "won't call" is more theory than practice. ^_^ |
| 20:52 | <benvie> | I implemented synchronizing across remote DOM implementations by using unique IDs for every new object and recording all the inputs and outputs of every action |
| 20:52 | <TabAtkins> | I defy you to actually write this in two lines of perl. |
| 20:52 | <Hixie> | i gave you the two lines of perl to define a catchall method |
| 20:53 | <benvie> | so document.createElement becomes #1 GET #2, apply #2 'div' creates #3 |
| 20:53 | <benvie> | and so on |
| 20:53 | <Hixie> | actually doing the dispatch would be a few more, but sure, hold on |
| 20:53 | <TabAtkins> | Yeah, the catchall part is easier because Perl has methods. |
| 20:53 | <Hixie> | Mozilla has (had?) __noSuchMethod__ |
| 20:53 | <Hixie> | in JS |
| 20:53 | <Hixie> | which would make this easy too |
| 20:54 | <TabAtkins> | That doesn't obey the raw JS semantics. ^_^ |
| 20:54 | <Hixie> | but it's easy :-) |
| 20:54 | <TabAtkins> | Of course it is! |
| 20:56 | <creis_> | Hixie: Do you know anything about the rel=external link type (http://blog.whatwg.org/the-road-to-html-5-link-relations#rel-external)? |
| 20:56 | <creis_> | Looks useful for something I'm considering, but it doesn't appear to have made it into the spec. |
| 20:57 | <creis_> | Just wondering if it's a dead proposal or still being considered. |
| 20:57 | <Hixie> | creis_: it's defined here: http://microformats.org/wiki/rel-external |
| 20:58 | <Hixie> | creis_: and registered here: http://microformats.org/wiki/existing-rel-values#HTML5_link_type_extensions |
| 20:58 | <Hixie> | creis_: the w3c had us remove it from the spec text itself for some reason or other, but i expect it'll be back in the spec sooner or later |
| 20:58 | <Hixie> | creis_: i'm planning on revamping how registration of things like rel values is done |
| 20:58 | <Hixie> | creis_: now that we're on a truly "living standard" model |
| 20:59 | <tantek> | Hixie - have there been any issues with using the microformats wiki? |
| 20:59 | <tantek> | (for rel registration) |
| 20:59 | <creis_> | Hixie: Cool, thanks. Slightly related, do you know if there's any consideration about applying similar link types to window.open, now that the "features" argument is supposed to be ignored? |
| 21:00 | <Hixie> | tantek: not especially, it's just not that great that the values that are "standard" aren't in the spec |
| 21:00 | <Hixie> | tantek: i don't expect use of the wiki to stop |
| 21:01 | <Hixie> | tantek: just that once things are "accepted" they be put in the spec so that people can find them more easily |
| 21:01 | <tantek> | ok cool. so the wiki helps with standardizing, then when things are stable, they can be incorporated into the spec. I'm fine with that. |
| 21:01 | <Hixie> | creis_: i don't think i've heard of any problem that that would solve |
| 21:01 | <tantek> | I'd like to avoid having redefining though - which is what happened with rel-tag |
| 21:01 | <Hixie> | tantek: indeed |
| 21:02 | <Hixie> | tantek: (well, rel=tag was more about matching existing practice than redefining) |
| 21:02 | <Hixie> | tantek: (but i agree in principle) |
| 21:02 | <tantek> | hixie - your opinion of existing practice, not without dispute |
| 21:02 | <creis_> | Hixie: One example is rel=noreferrer, which suppresses window.opener if used in combination with target=_blank. It would be nice to have a way to call window.open where opener was not set (e.g., with rel=external or something similar). |
| 21:02 | <tantek> | (document vs. blog post granularity) |
| 21:03 | <tantek> | Hixie, I'd say if you think the definition of a rel value on the wiki (and respective spec page there) is insufficiently detailed, it's probably not mature enough to make it into the standard |
| 21:04 | <Hixie> | creis_: makes sense. i don't recall if we have a solution for that offhand, but either way, please don't hesitate to file a bug or send e-mail about it to get it on the list. |
| 21:04 | <Hixie> | tantek: agreed, again in principle |
| 21:04 | <creis_> | Hixie: Thanks, I'll follow up. |
| 21:04 | <tantek> | Hixie, great. we'll cross further bridges when we get to them then. |
| 21:07 | <jgraham> | Hixie: It occurs to me that there is something I was going to ask you when you weren't around. Maybe I should work out what it was while you are around... |
| 21:08 | <jgraham> | Ah, maybe you already answered in a bug |
| 21:09 | <Hixie> | jgraham: yeah i think i answered in teh bug |
| 21:10 | <jgraham> | I wonder what happens if you don't use the location interface but set the src attribute |
| 21:10 | <Hixie> | on iframe? |
| 21:10 | <Hixie> | setting src on iframe iirc kills the browsing context entirely |
| 21:10 | <jgraham> | (this might also be covered already, the spec is still ladaing) |
| 21:10 | <Hixie> | and recreates it |
| 21:11 | <jgraham> | *loading |
| 21:11 | <jgraham> | But it is still possible that you would get one or two history positions in the joint session history |
| 21:13 | <Hixie> | when you set src="" the load happens with replacement enabled, iirc |
| 21:13 | <Hixie> | which means you get 1 |
| 21:13 | <Hixie> | the about:blank is nuked |
| 21:13 | <Hixie> | but i don't recall exactly |
| 21:14 | <jgraham> | I don't see that in http://www.whatwg.org/specs/web-apps/current-work/#attr-iframe-src |
| 21:14 | <Hixie> | TabAtkins: http://damowmow.com/playground/perl-forwarder.pm (not tested, includes all the boilerplate as well except for the actual loading code) |
| 21:14 | <jgraham> | But it is quite possible I am missing something because navigation feels quite like "you are in a maze of twisty algorithms, all alike" |
| 21:15 | <TabAtkins> | Hixie: Take my last scenario, with Type1 and Type2. What's the desired behavior difference, before the data is loaded, between calling asyncBar() (valid function, but not for the type you eventually figure out for it) and calling asyncUnknown() (no type has this function)? |
| 21:16 | <Hixie> | jgraham: search for "Furthermore, if the browsing context's session history contained only one Document when the process the iframe attributes algorithm" |
| 21:16 | <Hixie> | jgraham: just below the "process the iframe attributes" algorithm |
| 21:17 | <Hixie> | TabAtkins: i guess while you're loading, both should just do nothing, and once you're loaded, both should throw an exception (so in particular, the former shoudl throw an exception when the queue of methods is flushed) |
| 21:17 | <Hixie> | TabAtkins: at least, that's what the perl impl i threw together did |
| 21:18 | <Hixie> | TabAtkins: the perl implementation of AUTOLOAD ended up being 11 lines, of which 6 are trivial |
| 21:18 | <jgraham> | Hixie: But is that right? I can have multiple entries in the iframe history e.g. I initially lood 001.html and while that is loading switch the location.href to 002.html and while that is loading set the src to 003.html |
| 21:19 | jgraham | thinks the autoload thing would be just as easy in python but with less line noise |
| 21:19 | <Hixie> | jgraham: since navigation cancels existing navigations, i don't think you can have more than one |
| 21:19 | <Hixie> | jgraham: oh uh |
| 21:20 | <jgraham> | What if one ran to completion? |
| 21:20 | <Hixie> | jgraham: i misunderstood (because i was assuming setting src blows away the browsing context) |
| 21:20 | <Hixie> | jgraham: actually what i said still stands |
| 21:21 | <Hixie> | jgraham: you'd have a race condition in the example you give |
| 21:21 | <Hixie> | jgraham: "while that is loading" could mean either before the session history is updated, or after |
| 21:21 | <Hixie> | jgraham: if it's before, then it's as if it never happened |
| 21:21 | <Hixie> | jgraham: if it's after, then the condition doesn't apply |
| 21:23 | <jgraham> | Hixie: It is the latter case I wonder about, I think |
| 21:24 | <Hixie> | jgraham: so we'd be talking about a case where an iframe is loaded with a file that, while it is loading, replaces the src, and the question is do you get one entry or two. |
| 21:24 | <Hixie> | jgraham: should be easy enough to test :-) |
| 21:24 | <jgraham> | Yeah I guess I will do that tommorrow |
| 21:25 | <Hixie> | jgraham: (i'd also check to see if you get 2 or 3 entries in the same case but with a page being loaded completely first) |
| 21:25 | <Hixie> | jgraham: (in case setting src="" does indeed blow away the session history) |
| 21:25 | <jgraham> | I am pretty sure the answer will be that you get N+1 entries rather than N+2 given that you start with N |
| 21:25 | <Hixie> | jgraham: (which i could have sworn it did, i dunno why the spec doesn't say that) |
| 21:25 | <jgraham> | But I will see |
| 21:25 | <Hixie> | i am pretty sure you end either with N+2 entries or 1 :-) |
| 21:26 | <Hixie> | but not N+1 :-) |
| 21:26 | <jgraham> | Heh |
| 21:26 | <Hixie> | N+1 will be hard to spec, so i hope i'm right :-P |
| 21:26 | <jgraham> | Let's go with ">0" |
| 21:30 | <smaug____> | jgraham: whenever doing something with session history, test the implementations (which all do different things) and pick up the behavior which you like the best :) |
| 21:34 | <jgraham> | smaug____: That's what I am doing. I am also doing step 2) Avoid hypocritsy and make the world a better place by giving feedback on the spec, especially where we want to diverge from it |
| 21:34 | <jgraham> | *hypocrisy |
| 21:35 | <smaug____> | jgraham: wasn't someone going to spec session history |
| 21:35 | <smaug____> | I mean the parts which aren't spec'ed |
| 21:36 | <smaug____> | jgraham: someone from Opera, not you |
| 21:36 | <TabAtkins> | Hixie: http://www.xanthir.com/blog/b4JB0 |
| 21:36 | <TabAtkins> | 32 lines. |
| 21:37 | <smaug____> | jgraham: session history becomes very interesting when you start defining what should happen when DOM is modified |
| 21:37 | <smaug____> | (remove/add iframes, move them, etc) |
| 21:38 | <jgraham> | smaug____: When does DOM modification affect history? Apart from document.open() of course. Which is more "demolition" than "modification" |
| 21:38 | <TabAtkins> | As written the object never advertises that it has the async methods, even after it's loaded. That'll take another line to add them to 'near' and make it distinguish them properly. |
| 21:39 | <jgraham> | Well when I tested that last moving iframes always caused them to reload, so I would always expect an extra position in session history |
| 21:39 | smaug____ | tries to find some tests |
| 21:39 | <jgraham> | The only exception was chrome when you added/removed a node into the same place in a single step |
| 21:40 | <jgraham> | When it badly optimised away the action and missed the expected side effects |
| 21:41 | <smaug____> | where are my tests.. |
| 21:44 | <smaug____> | jgraham: http://mozilla.pettay.fi/moztests/history2/Start.html |
| 21:44 | <smaug____> | that is a case which behaves quite differently in different browsers |
| 21:45 | <smaug____> | note, the comments about browser engines aren't valid anymore |
| 21:45 | <smaug____> | Gecko follows IE behavior nowadays, at least in most cases |
| 21:45 | <smaug____> | since IE has traditionally been the least broken |
| 21:46 | jgraham | frames that sentence and puts it on the wall |
| 21:49 | <jgraham> | smaug____: Interesting test, thanks |
| 22:09 | <Hixie> | TabAtkins: what is a Name? |
| 22:10 | <TabAtkins> | The syntax isn't decided yet, but the functionality is http://wiki.ecmascript.org/doku.php?id=strawman:private_names |
| 22:10 | <TabAtkins> | it's a gensym, basically. |
| 22:10 | <TabAtkins> | The way that JS finally gains private properties. |
| 22:10 | <TabAtkins> | Alternately, http://www.xanthir.com/blog/b4FJ0 |
| 22:12 | <Hixie> | ah |
| 22:12 | <Hixie> | weird |
| 22:12 | <Hixie> | and "..." is an in-place array expansion operator? |
| 22:13 | <TabAtkins> | Yeah. |
| 22:13 | <Hixie> | well this is certainly simpler than i feared |
| 22:13 | <Hixie> | but not as simple as i'd like |
| 22:13 | <Hixie> | :-) |
| 22:14 | <Hixie> | whenever i look at the new JS stuff I feel like it's invented by computer science researchers |
| 22:14 | <Hixie> | rather than being copied from mainstream programming languages |
| 22:14 | <Hixie> | i can't help but wonder how regular authors will deal with it |
| 22:15 | <TabAtkins> | This is largely because it is. Also because the ESWG prefers to add new primitives, and then come along later and see what easy-to-use APIs to standardize on top of them. |
| 22:15 | <Hixie> | seems kinda like the opposite of what we do for the rest of the web |
| 22:15 | <TabAtkins> | Kinda, yeah. |
| 22:15 | <Hixie> | where we try desperately not to innovate |
| 22:15 | <Hixie> | anyway |
| 22:15 | <TabAtkins> | Or, wait. |
| 22:16 | <TabAtkins> | The point is that libraries get to innovate on top of the new primitives, and then we come through and bless the best solution. |
| 22:17 | <Hixie> | what i don't understand is why the primitives and libraries have to be in JS rather than in other languages |
| 22:17 | <Hixie> | as in |
| 22:17 | <Hixie> | why don't we look at existing libraries and languages and copy the already known best solutions |
| 22:17 | <Hixie> | rather than making JS have arcane computer science theory primitives, as well as, later, higher-level solutions to some problems |
| 22:18 | <TabAtkins> | Because without the primitives, a lot of problems *can't* be solved in a reasonable way? |
| 22:19 | <Hixie> | in the abstract, i find that hard to refute |
| 22:20 | <Hixie> | but for example, why do we need to provide a way for a property to be sealed dynamically, rather than just having statically defined classes with properties that can't be changed dynamically anyway? |
| 22:21 | <TabAtkins> | I can't comment much on the desire for sealing properties. |
| 22:22 | <TabAtkins> | But I suspect that at least some of it is that getting WG agreement on a class syntax is much harder than WG agreement on the ability to seal. |
| 22:22 | <TabAtkins> | (Which is why JS *still* doesn't have a class syntax.) |
| 22:23 | <Hixie> | fricking committee-driven design |
| 22:25 | <Hixie> | imageSmoothing... should affect patterns, right? |
| 22:26 | <TabAtkins> | I think so. |
| 22:27 | <TabAtkins> | Patterns can be resized and whatnot, right? |
| 22:27 | <TabAtkins> | If so, yes. |
| 22:27 | <Hixie> | yeah |
| 22:32 | <rafaelw_> | hixie: reference for H4X? |
| 22:33 | <Hixie> | dunno offhand |
| 22:33 | <Hixie> | it's basically just e4x but for html |
| 22:33 | <Hixie> | i don't think anything formal has been written, since it never gets any traction |
| 22:34 | <zewt> | heh, the worst features of all languages seem to be where they get "creative" |
| 22:34 | <rafaelw_> | ok. that makes it hard for me to respond =-) |
| 22:36 | <Hixie> | just imagine e4x but without namespaces and without comment support. |
| 22:36 | <Hixie> | (and with some of the <svg>/<math> namespace magic, i guess) |
| 22:36 | <Hixie> | if it's something you think we can get traction on amongst implementors of js engines, i'm sure we can come up with an actual proposal that a js person could turn into a real spec |
| 22:37 | <TabAtkins> | Unrelated: all of a sudden, today all the IE people started sending mail in large blue text. |
| 22:37 | <TabAtkins> | Maybe they all got a corporate Outlook upgrade? |
| 22:38 | <Hixie> | rafaelw_: (oh, another change from e4x would be that the elements created using h4x actually be DOM nodes, not a parallel data structure like in e4x) |
| 22:38 | <smaug____> | I don't think that was the idea with e4x. Brendan just never implemented the DOM binding |
| 22:39 | <rafaelw_> | I guess my question is how would it avoid the context element problem? |
| 22:41 | <Hixie> | smaug____: e4x had a kind of implied casting, but there were definitely two different types of objects in play |
| 22:41 | <Hixie> | smaug____: even with that mapping that never got implemented |
| 22:41 | <tantek> | objects are overrated |
| 22:41 | <Hixie> | rafaelw_: just always require end tags and don't do any optional tags |
| 22:41 | <Hixie> | rafaelw_: so there's only one parse mode |
| 22:42 | <Hixie> | rafaelw_: (it doesn't have to match the HTML syntax, it just has to be at least as terse for most purposes) |
| 22:42 | <rafaelw_> | And it wouldn't do any fixup? |
| 22:42 | <Hixie> | right, any syntax errors would be JS syntax errors |
| 22:42 | <rafaelw_> | So "<option>Foo<option>Bar" throws an error? |
| 22:42 | <Hixie> | and wouldn't compile |
| 22:42 | <Hixie> | it doesn't throw, it just doesn't compile |
| 22:42 | <Hixie> | like "var = foo" |
| 22:43 | <Hixie> | rafaelw_: i think maybe i misrememberd the proposal name. try googling for e4h? |
| 22:43 | <rafaelw_> | The main problem I see with this is it means required page authors to learn another HTML which is different from the HTML they know. |
| 22:44 | <Hixie> | i don't think that's a huge problem, authors dealt fine with JSON e.g. |
| 22:44 | <Hixie> | which isn't quite the same as JS |
| 22:44 | <smaug____> | it wouldn't be that different, at least in most cases |
| 22:45 | <Hixie> | rafaelw_: http://lists.w3.org/Archives/Public/public-script-coord/2011OctDec/thread.html#msg65 |
| 22:45 | <Hixie> | E4H |
| 22:46 | <Hixie> | quasi-literals is the other thing people have proposed in this space |
| 22:46 | <Hixie> | which i think has a bit more traction over in JS land |
| 22:46 | <Hixie> | which isn't quite as cool imho but is more generic and, at least in some proposals, still gets you the syntax checking |
| 22:48 | <wodemay> | what's with these? why are y'all putting presentational elements back into html5? https://en.wikipedia.org/wiki/HTML_tag#Presentation What's the rationale? |
| 22:48 | <Hixie> | wodemay: ? |
| 22:49 | <Hixie> | wodemay: the premise of the question is incorrect, unless you mean <canvas>, i guess |
| 22:49 | <wodemay> | Hixie, <b>/<i>/<u> (i understand u, there's no semantic equivalent. but the other two...?) |
| 22:49 | <Hixie> | wodemay: please read the HTML spec, you'll find none of those are presentational |
| 22:49 | <TabAtkins> | The wikipedia page explains the semantic meaning of those elements. |
| 22:50 | <TabAtkins> | As does the HTML spec. |
| 22:50 | <wodemay> | TabAtkins, I have read both. But I find it a hard sell to believe that those are not presentational. |
| 22:51 | <Hixie> | what's your definition of "presentational"? |
| 22:51 | <TabAtkins> | Okay. Shrug, then. If the part where they say "these have meaning" doesn't mean "not presentational" to you, then I'm not sure what to say. |
| 22:51 | <wodemay> | as with <hr>, since it's explicitly horizontal. |
| 22:51 | <TabAtkins> | Huh? |
| 22:51 | wodemay | rereads the wiki and spec. |
| 22:52 | <TabAtkins> | <hr> will generate a vertical rule in vertical text. |
| 22:52 | <rafaelw_> | hixie: re: E4X & js quasi literals |
| 22:52 | <Hixie> | the definition of <hr> doesn't even mention the word "horizontal" |
| 22:52 | <rafaelw_> | Conceptually what E4X proposes are two complementary things: |
| 22:53 | <Hixie> | wodemay: make sure you're reading the latest spec, maybe you're looking at an out of date one. http://whatwg.org/html |
| 22:53 | <rafaelw_> | a) HTML literals in JS (so you get parse errors at load time) |
| 22:53 | <wodemay> | Hixie, okay, thanks. |
| 22:53 | <rafaelw_> | b) A new HTML parser |
| 22:53 | <rafaelw_> | Maybe it's worth separating these issues. |
| 22:53 | <Hixie> | rafaelw_: well it's not a new HTML parser, it's just a new set of literals in the JS parser |
| 22:54 | <rafaelw_> | So it wouldn't use any parser? |
| 22:54 | <Hixie> | it's JS |
| 22:54 | <Hixie> | it uses the same parser as parsing "function () { }" or "-35.23" |
| 22:54 | <Hixie> | same as E4X |
| 22:55 | <rafaelw_> | Would "<div><tr><td>Foo</td><tr></div>" be valid? |
| 22:55 | <rafaelw_> | Would "<div><tr><td>Foo</td></tr></div>" be valid? |
| 22:55 | <Hixie> | what do you mean by "valid" in this context? |
| 22:55 | <rafaelw_> | would it throw a parse error. |
| 22:56 | <rafaelw_> | is it "statically valid" |
| 22:56 | <Hixie> | the script var foo = <div><tr><td>Foo</td></tr></div>; would not throw a parse error, but would generate a DOM tree that is non-conforming to HTML. |
| 22:56 | <Hixie> | and assign it to the variable "foo" |
| 22:56 | <wodemay> | TabAtkins, sorry... I was a little confused and remembered somethiing different as the HTML5 subsections of those elements' sections on the wiki and was basing my memory of the official spec's explanations on that. But still, don't the tagnames derive their etymology from an earlier presentational incarnation? Shouldn't they get new names that are semantic to the core? |
| 22:56 | <Hixie> | or i should say, |foo| |
| 22:56 | <rafaelw_> | i see. |
| 22:56 | <rafaelw_> | what about |
| 22:56 | <rafaelw_> | var foo = <div>Foo</div><div>Bar</div> |
| 22:57 | <TabAtkins> | wodemay: Yes, they were presentational in old versions. But they were often used in a way that had a somewhat consistent meaning, which HTML5 now codifies. |
| 22:57 | <Hixie> | wodemay: the tag names are just opaque strings, where possible we reuse those that are already implemented because it means we get things for free (e.g. the default rendering of the "instance of term" element <i> is already italics in old browsers because those browsers think they mean "italics") |
| 22:58 | <Hixie> | rafaelw_: there's no concrete proposal, so it's hard to say. one could say that two HTML literals side by side result in an implied documentFragment, but personally I would prefer that we say that if you want a DF you have to wrap the elements in <>...</> |
| 22:58 | <rafaelw_> | i see. |
| 22:59 | <rafaelw_> | so it literally becomes a short-hand for equivalent calls to createElement, appendChild, setAttribute, etc... |
| 22:59 | <Hixie> | yeah |
| 22:59 | <TabAtkins> | Yeah, that's the easiest way to think of it. |
| 23:00 | <smaug____> | not so fun part would be that workers shouldn't allow that syntax |
| 23:00 | <wodemay> | Hixie, but isn't part of the html5 concept that webpages coded in the 90s will still work on browser versions released in 2020 anyway? Doesn't said concept cover your scenario? Can't HTML5-thespec name them something diff? |
| 23:00 | <TabAtkins> | wodemay: What's the value in naming them differently, then? |
| 23:00 | <zewt> | (<i> does mean italics, because that's how it renders and that's what everyone uses it for; you can wave your arms around fiercely trying to say it means something else, but that's what it means :) |
| 23:01 | <rafaelw_> | well. i can tell you that the ship has sailed on new features for ES6. |
| 23:01 | <rafaelw_> | JS quasi's are approved in proposal. |
| 23:01 | <rafaelw_> | presumably you could define that HTML quasis parse this way, but i don't think you'd get load-time parse errors like you want. |
| 23:02 | <rafaelw_> | in any case, you could look at what you're describing as an alternate proposal for the behavior of Document.parse(). |
| 23:02 | <rafaelw_> | no? |
| 23:02 | <wodemay> | TabAtkins, Let's say someone is born 2015 and begins learning to code HTML5 docs in the year 2030. There shouldn't be any remnants of the stone ages of mixing pres and content. They shouldn't ever *think* of tags as having presentational meaning. Naming them differently will prevent them from getting misused. |
| 23:03 | <rafaelw_> | who is parsing doesn't matter to authors. |
| 23:03 | <Hixie> | smaug____: yeah, we'd have to define some solution to that |
| 23:03 | <TabAtkins> | wodemay: That seems gratuitous. There's nothing wrong with the name, and in a lot of cases, the legacy uses of it are consistent with the new semantics. |
| 23:03 | <Hixie> | smaug____: long term we need some solution to the DOM in workers anyway, even if it's just some nerfed versions of the objects |
| 23:03 | <wodemay> | its like the debate about @hidden vs. @irrelevant. |
| 23:04 | <Hixie> | wodemay: well, <i> still works, right? :-) |
| 23:04 | <wodemay> | Hixie, your point? |
| 23:04 | <smaug____> | I do think DOM will just work in workers |
| 23:04 | <Hixie> | wodemay: nameing them differently doesn't prevent them from being misused... just look at people using <blockquote> for indentation :-) |
| 23:05 | <wodemay> | Hixie, but accurate naming does have value (again, i'll cite the @hidden vs. @irrelevant debate) |
| 23:07 | <TabAtkins> | Hixie: Did you say somewhere that <intent> is okay to be a self-closing tag in the head? |
| 23:07 | <Hixie> | wodemay: certainly, but that value must be balanced against other concerns, e.g. backwards compatibility |
| 23:07 | <Hixie> | TabAtkins: my latest thinking on web intents is in a recent e-mail to the whatwg list, i do not recall my precise statements therein |
| 23:07 | <Hixie> | TabAtkins: though i intend to look at that topic again soon |
| 23:07 | <TabAtkins> | Darn, that means I"ll have to look it up. |
| 23:08 | <Hixie> | heh sorry :-) |
| 23:09 | <wodemay> | Anyone know when ECMA6 is meant to become widely implemented? |
| 23:10 | <TabAtkins> | Like HTML, it's implemented in bits and pieces. |
| 23:10 | <ojan> | Hixie: i think at some level the rub is what you svg/mathml magic you do |
| 23:10 | <wodemay> | How about `multi |
| 23:10 | <wodemay> | line |
| 23:10 | <ojan> | Hixie: i think also that lots of people will want <p>, <li>, <td> without a close tag to work |
| 23:10 | <wodemay> | string-literals`? |
| 23:11 | <ojan> | Hixie: other than that, i'm ok with your proposal as an alternative to implied context parsing |
| 23:11 | <ojan> | Hixie: wait are you saying also that things like <img> will require a close tag? |
| 23:12 | <Hixie> | ojan: i would just have the syntax support <foo/> |
| 23:12 | <gsnedders> | wodemay: I'd guess sometime in the next year and a half. |
| 23:12 | <ojan> | Hixie: ok...so it's basically xml? |
| 23:12 | <Hixie> | ojan: we could hardcode some specific tag names if people think that's necessary |
| 23:12 | <Hixie> | ojan: yeah |
| 23:12 | <wodemay> | gsnedders, but it's already in chromium/v8... right? |
| 23:12 | <Hixie> | ojan: like i said, it's very close to e4x |
| 23:13 | <ojan> | Hixie: would you be opposed to <p>, <li>, etc without a close tag? |
| 23:13 | <Hixie> | ojan: not especially, if it helped sell the feature :-) |
| 23:13 | <gsnedders> | wodemay: Not really. Both SM and V8 implement relatively small parts of ES6 |
| 23:13 | <ojan> | lol, ok |
| 23:13 | <Hixie> | ojan: wouldn't be my first choice though :-) |
| 23:13 | <ojan> | Hixie: just trying to understand what you're proposing... |
| 23:13 | <gsnedders> | IE10 now supports at least Flash in Metro :( |
| 23:13 | <wodemay> | gsnedders, i was referring specifically to multiline string literal backtick syntax. |
| 23:15 | <gsnedders> | wodemay: Oh, that I don't know off-hand. |
| 23:15 | <Hixie> | ojan: making omitting an end tag work would be... interesting, because you end up having to hard-code into the JS parser the list of elements that imply the </p> |
| 23:15 | <gsnedders> | Please don't do that. |
| 23:15 | <roc_> | I'm a wee bit frustrated to post to the list saying "we're changing our behavior in Gecko and the spec needs to be updated" and get replies from other implementors saying "oh, we already changed that ages ago" |
| 23:15 | <Hixie> | roc_: agreed (and my apologies if the reason is that i'm not keeping the spec up to date fast enough) |
| 23:16 | <roc_> | I don't think so in this case :-) |
| 23:16 | <gsnedders> | Nor did jgraham when he mentioned it earlier :( |
| 23:17 | <wodemay> | rafaelw_, BTW, the "ship" isn't ever intended to "sail," so to speak, for new additions or features to HTML5, correct? |
| 23:18 | <Hixie> | wodemay: the ship sails when implementations ship |
| 23:18 | <Hixie> | boy that sentence could be clearer |
| 23:18 | <smaug____> | roc_: which case is this? |
| 23:18 | <wodemay> | Hixie, but that's a very regular sailing. It isn't a singular ship that sails and then never comes back. It's more like a ferry, right? |
| 23:19 | <Hixie> | wodemay: not sure a shipping metaphor is very apt to be honest :-) |
| 23:19 | <smaug____> | ah, some video thing |
| 23:19 | <Hixie> | wodemay: to put it in non-metaphorical terms, we can change the spec in any way that is compatible with the web |
| 23:19 | <wodemay> | hahah. but u follow me? Hixie |
| 23:19 | <Hixie> | wodemay: at any time |
| 23:19 | <wodemay> | Hixie, what does that mean? |
| 23:19 | <Hixie> | wodemay: e.g. we can't rename <p> to <b>, because that would cause zillions of pages to render differnetly than expected |
| 23:20 | <jamesr_> | they'd be upside down |
| 23:20 | <Hixie> | wodemay: but we can introduce a new element <askfjya78e6ads> because there is no page in the world that depends on it being implemented or not |
| 23:20 | <Hixie> | (i assume) |
| 23:20 | <Hixie> | (we'd have to check) |
| 23:20 | <wodemay> | so 20 years from now the current spec will still be some iteration of html5, but it might have some tags deprecated and some added, correct? and then the same will be true as compared to then 30 years from now? |
| 23:21 | <Hixie> | wodemay: well we don't call it "html5", we call it "html", but yes, essentially. until someone comes along with something that makes html obsolete once and for all. |
| 23:21 | <wodemay> | Hixie, hahah, talk about being thorough. ;) somehow i feel like there aren't! |
| 23:21 | <Hixie> | which i'm sure everyone here is hoping will happen as soon as possible |
| 23:21 | <wodemay> | Hixie, hahahahaha. me included! |
| 23:21 | <wodemay> | There should be something like JSON that makes it less redundant. or sthg that draws on HAML syntax. |
| 23:22 | <wodemay> | but why not call it "html5", Hixie ? |
| 23:22 | <roc_> | the thing is, people keep trying to kill HTML and we keep trying to stop them |
| 23:23 | <Hixie> | roc_: whose trying to stop them? |
| 23:23 | <roc_> | generally because the replacement is worse in some important dimension |
| 23:23 | <roc_> | Mozilla, other browser vendors, Web standards people |
| 23:23 | <Hixie> | roc_: people keep trying to kill html and they keep failing, i don't think we're stopping them |
| 23:24 | <roc_> | we're killing Flash |
| 23:24 | <Hixie> | adobe is killing flash |
| 23:24 | <kennyluck> | Who are trying to kill HTML? |
| 23:24 | <roc_> | Microsoft and Adobe tried |
| 23:24 | <Hixie> | wodemay: the question is not "why not", the question is "why" :-) |
| 23:25 | <smaug____> | W3C tried |
| 23:25 | <wodemay> | the answer in that case is "b/c it's more specific," Hixie |
| 23:25 | <Hixie> | wodemay: specific how? |
| 23:25 | <roc_> | hehe |
| 23:26 | <wodemay> | Hixie, it specifies the version number ..? |
| 23:27 | <Hixie> | roc_: i think the metaphor that applies here is something like "several people are building towers out of blocks. the people building the tower not labeled 'html' keep knocking down their towers by mistake or poor design. the tower labeled 'html' is a big heap and so doesn't fall." |
| 23:27 | <wodemay> | smaug____, what's the difference between WHATWG and W3C? |
| 23:27 | <Hixie> | roc_: it's not like the people building the html tower keep going over and knocking down the other towers |
| 23:27 | <roc_> | that is a good analogy |
| 23:27 | <gsnedders> | wodemay: But browsers never implement all of one version — they just implement bits and pieces. |
| 23:27 | <gsnedders> | wodemay: Version numbers only make sense if the spec gets implemented in full, but it never does. |
| 23:28 | <Hixie> | wodemay: there is no version. the spec changes daily, the browsers implement different slices of it at any one time and also change daily. |
| 23:28 | <wodemay> | is that why the html5 doctype dec is html and not html5? |
| 23:28 | <roc_> | that's not really what "kill" means in this context. No-one ever kills a competitor's product directly, only by out-competing it. And that's what we've done with HTML. |
| 23:30 | <ojan> | Hixie: what would you say the advantage of E4H is compared to implied context parsing? |
| 23:30 | <ojan> | Hixie: is it just that it's simpler for web developers? faster? |
| 23:31 | <gsnedders> | ojan: Harder to screw up. People notice syntax errors in JS. |
| 23:31 | <Hixie> | ojan: by "implied context parsing" you mean "runtime parsing of a string"? if so, the main advantage is compile-time syntax checking. |
| 23:32 | <Hixie> | roc_: i think there's a qualitative difference between out-competing by intentionally addressing a competitor's weaknesses and explicitly having as a goal the competitor's downfall, and out-competing by ignoring the competition and having them fall by the wayside |
| 23:33 | <Hixie> | roc_: and i would strongly suggest that HTML has done only the latter. |
| 23:33 | <Hixie> | ojan, rafaelw_: here's a strawman proposal: http://www.hixie.ch/specs/e4h/strawman |
| 23:33 | <ojan> | Hixie: oic...you wouldn't get syntax erros with the current quasis proposal either :( |
| 23:33 | <Hixie> | ojan, rafaelw_: (doesn't handle SVG yet) |
| 23:33 | <astearns> | <video> completely ignored everyone else, I'm sure :) |
| 23:33 | <Hixie> | ojan: oh, really? that's sad. i thought brendan said we would, based on the thread i cited earlier. |
| 23:34 | <ojan> | Hixie: i might be misreading http://wiki.ecmascript.org/doku.php?id=harmony:quasis |
| 23:34 | <Hixie> | astearns: <video> on HTML has basically failed, so i don't think it's a good example if you're trying to support roc's argument :-) |
| 23:35 | <Hixie> | astearns: (failed due to the codec gridlock; i don't think it's a permanent failure) |
| 23:35 | <astearns> | I hope it's not permanent |
| 23:35 | <TabAtkins> | It won't be. |
| 23:35 | <Hixie> | well worst case it'll resolve itself when the relevant patents expire |
| 23:36 | <astearns> | but whether something has succeeded or failed isn't relevant to whether it's a counterexample to "only the latter" |
| 23:36 | <roc_> | it'll resolve itself at the latest when improvements in video compression reach diminishing returns |
| 23:36 | <roc_> | but who knows? That could be 50 years away |
| 23:36 | <rafaelw_> | hixie: looking |
| 23:36 | <zewt> | roc: don't forget to add twenty years for patents to expire |
| 23:37 | <Hixie> | astearns: granted, but at least for me, adding <video> was just about filling in HTML's weaknesses, not trying to do something to hurt another platform |
| 23:38 | <Hixie> | astearns: e.g. if we wanted to hurt Flash we could have done things like make it click-to-play, or made it harder to sandbox, or made it not be able to see the DOM, or any number of things |
| 23:38 | <Hixie> | astearns: instead, alongside work on HTML there has been much work from browser vendors in actually making Flash work better |
| 23:38 | <Hixie> | hardly the sign of trying to damage a competing platform |
| 23:39 | <Hixie> | even Apple, who arguably did try to damage Flash on iOS, seem to be working to help Flash on MacOS with their sandboxing |
| 23:39 | <astearns> | I agree, but you're moving the goalposts from "ignoring" to "not intending to harm" |
| 23:39 | <wodemay> | Hixie, what does the term "HTML5" specify, then? |
| 23:39 | <roc_> | I think it's fair to say that a number of people have had a goal of enriching HTML to make Flash unnecessary, with the hope it will go away eventually |
| 23:40 | <Hixie> | astearns: "ignoring" was a poor choice of words; true. we do look at existing practices in other platforms. |
| 23:40 | <roc_> | on the grounds that we want authors to target multi-vendor royalty-free standards instead of single-vendor platforms. |
| 23:40 | <Hixie> | roc_: yeah, that's probably fair |
| 23:41 | <Hixie> | roc_: but i don't think that's the main reason flash has done poorly |
| 23:42 | <zewt> | bryan of the screaming caps name posting to a thread about mailing list practices is rather ironic |
| 23:43 | <Hixie> | ojan, rafaelw_: ok, added a strawman way of supporting svg and mathml too (requires that the element names be prefixed if they're in those namespaces) |
| 23:44 | <Hixie> | ojan:, rafaelw_: an alternative would be to only require that for the element that crosses to another namespace, and default the rest to the parent element's namespace |
| 23:45 | <Hixie> | ojan, rafaelw_: but that's a minor detail that could be figured out if this was to go anywhere |
| 23:48 | <ojan> | Hixie: i'm torn here. on the one hand, compile-time errors are nice. on the other, there's a cost in people needing to learn new things and there will perpetually be confusion about parsing that works in E4H, but not HTML or vice versa. |
| 23:48 | <ojan> | Hixie: at some level, how is this different from pushing for XHTML? |
| 23:49 | <ojan> | Hixie: also, I really like the API for quasis as a way of generating a DOM using javascript variables in an XSS-safe way |
| 23:50 | <ojan> | Hixie: see the safehtml function in the quasi's proposal to see what i mean |
| 23:50 | <ojan> | Hixie: and you don't get that with E4H, unless i'm missing something |
| 23:51 | <zewt> | ojan: compile-time errors aren't very nice; it makes code backwards-compat/polyfill/etc very hard |
| 23:52 | <zewt> | i don't want to have to serve entirely different scripts for different browser capabilities |
| 23:53 | <gsnedders> | zewt: That's true of any langauge extention, though |
| 23:53 | <gsnedders> | *language |
| 23:54 | <Hixie> | ojan: the substitution thing lets you sub in the value of expressions in e4h |
| 23:54 | <zewt> | gsnedders: sure, which is why language extensions shouldn't be used unless the justification is very strong |
| 23:54 | <Hixie> | ojan: but in general my argument isn't that we should do e4h, my argument is that hte use case of "make a dom tree" should be solved using a better solution than "parse a string at runtime" and a better solution than "use an excessively verbose api" |
| 23:55 | <ojan> | Hixie: well...the proposal with backing so far has been quasis + safehtml |
| 23:55 | <Hixie> | zewt: no, it's why the language should be designed to make syntax errors block-scopable, imho :-) |
| 23:55 | <ojan> | Hixie: i suppose you could make safehtml do roughly what e4h does |
| 23:55 | <ojan> | Hixie: while still using quasis |
| 23:56 | <Hixie> | ojan: i'm not very familiar with it, do you have a link? the only proposal i was aware of was "make the html parser even more complicated and add DocumentFragment.innerHTML" (or document.parse(), same idea) |
| 23:56 | <ojan> | Hixie: but you would still get a runtime erro instead of compile error |
| 23:56 | <ojan> | Hixie: i linked above |
| 23:56 | <Hixie> | got it |
| 23:58 | <Hixie> | ojan: so this just gets implemented as a JS lib? not in the browsers? |
| 23:58 | <Hixie> | ojan: the html-specific part, i mean |
| 23:58 | <ojan> | Hixie: it can be, but in the case of the html-specific part, the browser would also provide it builtin |
| 23:59 | <ojan> | Hixie: so, pages could polyfill w a JS function |
| 23:59 | <Hixie> | (btw, i don't really understand how the filtering is done, seems like it'd be a huge rathole of possible ways things should be escaped) |
| 23:59 | <Hixie> | so how does the HTML parsing happen here? |
| 23:59 | <ojan> | Hixie: for browsers that support quasies, but not the safehtml functio that is. |