00:09 | <gsnedders> | AryehGregor: Really, seems to be exactly that. |
00:12 | <gsnedders> | AryehGregor: (like, it is exactly that it's running before first-draw) |
00:13 | <Hixie> | so right now the cue start time is defined as the time at which a cue becomes relevant |
00:13 | <Hixie> | this works ok (though not great) for subtitle cues |
00:13 | <Hixie> | but for chapter cues it's a bit weirder, since chapter titles aren't only "relevant" when you're watching the chapter |
00:14 | <Hixie> | anyone got a better definition? other than the redundant "the cue start time is the time at which the cue starts" |
00:14 | <Hixie> | (the latter seems a little too tautological) |
00:30 | <TabAtkins> | That seems fine to me,a ctually. |
00:31 | <mkanat> | Is the timeline position at which the cue starts? |
00:46 | <Hixie> | foolip: yt? |
01:10 | <AryehGregor> | Hixie, you can just say "every cue has a start time" or something and treat its definition as self-evident. I mean, that's really equivalent to saying "the cue start time is the time at which the cue start", but it doesn't sound silly. |
01:10 | <Hixie> | i went with something similar to that |
01:32 | <jarek> | Hi |
01:32 | <annevk> | roc, hey, I wondered how likely it is Full Screen will drastically change |
01:32 | <jarek> | is there any point in using SVGZ instead of SVG? |
01:32 | <jarek> | it looks like even Chrome does not support it (at least not when used from CSS) |
01:32 | <annevk> | roc, e.g. the suggested change of not having a pseudo-class but instead just rendering the specified element and descendants |
01:33 | <annevk> | jarek, what is SVGZ? |
01:33 | <jarek> | annevk: it's a file format |
01:34 | <jarek> | annevk: a gzipped SVG file |
01:34 | <jarek> | at least this is how Inkscape calls it |
01:34 | <annevk> | it seems browsers should be able to handle compression of SVG just as well as they should handle compression of HTML |
01:35 | <annevk> | if you configure the headers right and such |
01:37 | <jarek> | when I send SVG files with proper mime type I'm getting a lot of errors like this one: |
01:38 | <jarek> | "Resource interpreted as Document but transferred with MIME type image/svg+xml" |
01:38 | <jarek> | though they render perfectly fine (unlike SVGZ files) |
01:41 | <annevk> | no idea what that means |
01:43 | <jarek> | it's actually a warning, not error (it shows up in yellow in console) |
01:43 | <jarek> | I tried googling it but there are few results |
01:44 | <jarek> | seems like SVG is not that popular on the web yet |
01:45 | <shepazu> | jarek: from what I understand, depending on your server settings, you don't need to use .svgz |
01:45 | <shepazu> | typically (IIUIC) the server will compress it for transmission anyway |
01:46 | <jarek> | shepazu: so if I send SVG files and my server is configured to use gzip compression then there would be no benefits in using SVGZ? |
01:46 | <shepazu> | jarek: that is my understanding, yes |
01:47 | <shepazu> | in fact, I've heard that it can even increase the number of transferred bytes |
01:47 | <shepazu> | but I won't swear to that |
01:47 | <shepazu> | it does save file size on the server itself, of course, if that's an issue |
01:47 | <roc> | annevk: I don't think that's likely, since we've implemented that proposal |
01:47 | <roc> | more or less as it is in the wiki |
01:47 | <jarek> | is it a good idea to use SVG file as a sprite? |
01:47 | <zewt> | well, runtime compression is more expensive, but most production webservers can cache compressed files, i think |
01:47 | <TabAtkins> | As good an idea as any other image format. |
01:48 | <TabAtkins> | Relying on your server to do runtime gzip is completely fine and standard and simple. |
01:48 | <jarek> | I mean if I had embedded 100 PNG images inside single SVG then it would load much faster, right? |
01:48 | <zewt> | and you want it doing that anyway; it makes a huge difference for HTML |
01:49 | <TabAtkins> | jarek: You mean like, 100 <image>s? |
01:49 | <annevk> | roc, okay, it did seem like a nice idea to me |
01:49 | <TabAtkins> | No, that would be even slower (by a single request) than just using the 100 PNGs directly. |
01:49 | <roc> | which idea? |
01:49 | <jarek> | TabAtkins: yeah, I mean embedding, not linking |
01:49 | <TabAtkins> | jarek: How are you embedding a PNG inside an SVG? |
01:50 | <jarek> | TabAtkins: uhm... I click "Embed all images" in Inkscape... |
01:50 | <jarek> | TabAtkins: I have to investigate this more |
01:50 | <shepazu> | base64 encoding, I think |
01:50 | <zewt> | ew |
01:50 | <TabAtkins> | Ew indeed. ^_^ |
01:50 | <zewt> | i wonder how efficient deflate is at compressing base64 |
01:50 | <jarek> | yeah, I suspect it inserts the binary data directly into SVG file |
01:51 | <TabAtkins> | Well, using a single SVG with 100 base64-encoded images will almost certainly be faster than 100 individual images. |
01:51 | <shepazu> | useful if you want a single file |
01:51 | <jarek> | I remember reading somewhere that you can use base64 even inside CSS |
01:51 | <TabAtkins> | jarek: Yup, data: urls are just fine in pure CSS too. |
01:51 | <zewt> | heh it's pretty good |
01:51 | <zewt> | 1048576 /dev/urandom -> 1416501 base64 -> 1076454 base64.gz |
01:51 | <shepazu> | TabAtkins: I'm going to be in the valley tomorrow night through saturday, if you have time to hang out |
01:52 | <jarek> | TabAtkins: but there won't be any image rendered on the screen until the whole file with 100 images is downloaded, right? |
01:52 | <jarek> | or would the images show progressively? |
01:52 | <TabAtkins> | jarek: All-at-once. But a single slightly-larger download is usually *significantly* faster than 100 individual downloads. |
01:55 | <annevk> | roc, of just laying out the element and its descendants and not worrying about ancestors |
01:55 | <annevk> | roc, it would make any animations easier I imagine |
01:56 | <annevk> | roc, I had another question, why does the parent browsing context Document need to be full screen if one of its child browsing context Documents is full screen? |
01:56 | <roc> | that's a fairly violent change to CSS |
01:56 | <roc> | and the layout engine |
01:56 | <roc> | and creates various issues for the CSSOM etc |
01:57 | <annevk> | okay |
01:58 | <roc> | annevk: if the parent Document is not fullscreen, I'm not sure how the child could be fullscreen |
01:58 | <roc> | unless you have magic to rip the child document out and display it apart from the parent document |
01:59 | <roc> | that has similar problems to "just laying out the element and its descendants and not worrying about ancestors" |
01:59 | <roc> | such magic is not necessary |
02:02 | <annevk> | so if you invoke fullscreen on some iframe descendant element |
02:02 | <annevk> | does that also set styles for the iframe element itself when you go full screen? |
02:02 | <roc> | yes |
02:02 | <roc> | the iframe element is the fullscreen element in its document |
02:03 | <annevk> | including all its ancestor iframes? |
02:03 | <roc> | right, all the way up |
02:03 | <annevk> | ah okay, that works |
02:14 | <dbaron> | annevk, should I reserve constants for SUPPORTS_RULE and DOCUMENT_RULE in http://wiki.csswg.org/spec/cssom-constants or should I wait? |
02:14 | <annevk> | dbaron, please go ahead |
02:14 | <annevk> | dbaron, and thanks for the update! |
02:14 | <dbaron> | (and see http://lists.w3.org/Archives/Public/www-style/2011Oct/0388.html for a bit of a mess we'll need to fix) |
02:15 | <dbaron> | annevk, WebKit uses different constants for KEYFRAMES and KEYFRAME than what they wrote in the spec |
02:15 | <dbaron> | I just followed the spec |
02:15 | <erlehmann> | jarek, i use data uris in css. |
02:15 | <dbaron> | annevk, your wiki actually followed webkit rather than the spec, but I just changed it to follow the spec |
02:15 | <annevk> | dbaron, I noticed, wfm |
02:16 | <jarek> | erlehmann: but isn't this an overkill? |
02:16 | <annevk> | dbaron, if WebKit wants to change that around they better speak up I guess |
02:16 | <jarek> | erlehmann: how can you find anything in CSS file if there huge chunks of binary data? |
02:16 | <TabAtkins> | jarek: Tell your editor not to wrap lines in CSS files. |
02:16 | <erlehmann> | jarek, i am in the process of optimizing a page that had about 100 http requests for small decorative stuff. no, it is not. |
02:17 | <erlehmann> | TabAtkins, jarek, last one i used was data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAABCAYAAAAxWXB3AAAAAXNSR0IArs4c6QAAADdJREFUOMvt00ENACAMBMGtATThjJzAmil/Dg08SfoYCRO2D+DW2ieqYIynt0my2Z7MI8FaGCkupysHEkVP6dUAAAAASUVORK5CYII= |
02:17 | <erlehmann> | that is not much. |
02:17 | <erlehmann> | (background gradient png) |
02:17 | <TabAtkins> | Oh man, you really do mean "small". |
02:18 | <dbaron> | hmmm, should I give jdaggett 13 for css3-fonts? :-) |
02:18 | <erlehmann> | indeed. and the requests held up the page. |
02:18 | <erlehmann> | dbaron, what does “13” mean here? |
02:18 | <dbaron> | just a number |
02:18 | <TabAtkins> | erlehmann: Constants for CSSRule. |
02:20 | <dbaron> | oh, wait, he already put 11 in the spec |
02:20 | <dbaron> | I can fix this |
02:23 | <dbaron> | wait, two different specs took 11 |
02:24 | <annevk> | anarchy |
02:25 | <TabAtkins> | I blame tyou, annevk. |
02:27 | <erlehmann> | wat |
02:28 | <TabAtkins> | dbaron: Oh, my usage is completely unimportant. |
02:28 | <TabAtkins> | IGNORE ME. |
02:28 | annevk | wonders if TabAtkins has seen the series "Ideal" |
02:29 | <TabAtkins> | annevk: Never heard of it. |
02:29 | <annevk> | there's a charater there that uses that phrase |
02:29 | <TabAtkins> | I usually think of the Observer from Venture Brothers when I say it. |
02:29 | <erlehmann> | dbaron, how can two different specs have the same number? |
02:29 | <erlehmann> | do constants work that way? |
02:30 | <dbaron> | erlehmann, by mistake |
02:30 | <erlehmann> | yeah, but how does it … err, work? |
02:30 | <dbaron> | TabAtkins, could you reply to the email I just sent, then? |
02:30 | <erlehmann> | or did you notice it right away? |
02:30 | <dbaron> | erlehmann, neither has been implemented yet |
02:30 | <erlehmann> | oh, okay |
02:30 | <erlehmann> | that i understand |
02:30 | <TabAtkins> | dbaron: Already did! Woo! |
02:31 | <dbaron> | TabAtkins, I think jdaggett might have beaten you |
02:31 | <dbaron> | TabAtkins, don't end up both using 14 now! |
02:31 | <TabAtkins> | We shall continue politely vacating each integer until infinity. |
02:32 | <TabAtkins> | At which point I will use infinity and he will use infinity+1. |
02:33 | <erlehmann> | then “hark! a vagrant” will make a story out of it |
02:33 | <erlehmann> | or wait, let me shoop something together |
02:33 | <erlehmann> | before going to sleep |
03:00 | <annevk> | kind of odd how the HTML WG references WHATWG revision numbers |
03:00 | <annevk> | no trust in CVS?! |
03:28 | <erlehmann> | TabAtkins, history will remember you fondly http://daten.dieweltistgarnichtso.net/pics/zeichnungen/cssconstants.png |
03:29 | <annevk> | haha |
03:29 | <annevk> | more comics please! |
03:31 | <MikeSmith> | heh |
03:32 | <MikeSmith> | great depiction of Tab |
03:32 | <annevk> | so I booked in that Avatar hotel and tried getting W3C rate |
03:32 | <MikeSmith> | looks exactly like him |
03:32 | <heycam> | haha, awesome |
03:32 | <annevk> | initially I was just "Anne van Kesteren" and had to pay $1,007.43, now it's "ms. Anne van Kesteren" and $985.52 |
03:33 | <annevk> | is the W3C discount really 20 bucks? |
03:33 | <annevk> | because that's a pretty sad negotiated discount, if any |
03:33 | <erlehmann> | annevk „ms“ ? |
03:34 | <annevk> | erlehmann, rest of the world has a hard time understanding the Netherlands |
03:34 | <erlehmann> | i do not know a language in which that is shorthand for discount |
03:35 | <annevk> | oh no, it's just that when they made an update to my reservation they set my gender as well |
03:35 | <erlehmann> | but anne is a male name. and a female name. |
03:35 | <erlehmann> | i see. |
03:36 | <erlehmann> | though i wonder why they store gender at all. |
03:36 | <annevk> | oh I see what happened |
03:36 | <annevk> | initially I had a night for 80 bucks |
03:36 | <annevk> | now they made that 150 bucks |
03:36 | <annevk> | and lowered some other nights with a few bucks |
03:37 | <erlehmann> | wat |
03:37 | <annevk> | awesome |
03:38 | <erlehmann> | i do not understand a thing |
03:39 | <erlehmann> | annevk, have fun stories about gender confusion? or do people just accept their error when they get the different pronounciation? |
03:40 | <erlehmann> | i knew an anne who wrote it änne, with diacritical marks. to make sure everyone knew how to pronounce it. |
03:45 | <erlehmann> | night |
03:47 | <dbaron> | is it really pronunced änne? |
03:47 | <Hixie> | annevk: don't encourage them to use cvs, i'll never be able to work out what's going on then :-P |
04:22 | <jacobolus> | thanks all for the talk slides at http://fronteers.nl/blog/2011/10/fronteers-2011-awesome |
04:22 | <jacobolus> | bruce wins for best title |
04:23 | <paul_irish> | hahaha |
04:31 | <jacobolus> | also, I like http://infrequently.org/11/fronteers/fronteers.html#6 :p |
04:45 | <paul_irish> | superfluous quotes |
04:49 | <annevk> | dbaron, depends on how you pronounce "än" I guess :) |
04:49 | <dbaron> | annevk, like Händel or länder in German? |
04:50 | <annevk> | ah, no |
04:51 | <annevk> | it's more like the "a" in "ah" |
04:51 | <annevk> | an-ne |
04:51 | <dbaron> | that's what I thought |
04:55 | <jacobolus> | TabAtkins: http://www.xanthir.com/talks/2011-10-06/ is not rendering very well here |
04:56 | <jacobolus> | either in chrome or safari |
05:57 | <annevk> | Hixie, so if we want bindings declarative and we don't want XML syntax anymore, do we want changes to the HTML parser? |
06:40 | <Hixie> | annevk: maybe |
06:41 | <annevk> | seems like if you have a separate document for your bindings you don't really want <body> and <head> there and such |
06:44 | <annevk> | http://blog.whatwg.org/weekly-binding-components |
09:10 | <foolip> | Hixie, I'm here, but I assume you are not. |
09:12 | <annevk> | TabAtkins, could have a per-property default type for attr() |
09:12 | <annevk> | TabAtkins, but then I'm not sure having attr() is really that useful |
09:12 | <annevk> | mixing markup & style = bad |
09:40 | <hsivonen> | annevk: major apps have moved on from mixing markup and style to generating both with script so that they mix all three |
09:42 | <annevk> | point being? |
09:44 | <hsivonen> | annevk: that "mixing markup & style = bad" focuses on mixing that has been superceded by even more mixing |
09:47 | <annevk> | not universally |
09:47 | <hsivonen> | true |
09:48 | <hsivonen> | speaking of markup and style, epub readers are an interesting time warp |
09:49 | <hsivonen> | epub readers are like from the time when Lynx and Mosaic roamed on earth |
09:49 | <hsivonen> | as far as markup and style go |
11:47 | <hsivonen> | gsnedders: it turns out that it's audio that sucks in Firefox on Android--not VP8 perf: https://bugzilla.mozilla.org/show_bug.cgi?id=693905 |
15:32 | <bga_> | http://colinm.org/language_checklist.html |
15:45 | <jgraham> | Fun fact: Opera has it's own special dark matter from Unite applications |
15:46 | <Ms2ger> | Ah, finally :) |
15:48 | <Ms2ger> | Anyone have opinions on isElementContentWhitespace, btw? Kill it? Keep it? Meh? |
15:52 | <jgraham> | My opinion is somewhere on the "meh" part of the spectrum |
16:50 | <dglazkov> | good morning, Whatwg! |
16:51 | <timeless> | hsivonen: cute |
16:51 | <timeless> | grr |
16:51 | <timeless> | NoScript shows an Opera icon for hsivonen 's WebM video |
16:52 | <timeless> | which clearly means that Opera conquered the webm type on this computer.. |
16:57 | <zewt> | opera took a bunch of media extension associations when i installed it recently |
16:57 | <zewt> | bizarre and quicktime-esque |
17:09 | <timeless> | yeah, i think i saw you complaining |
17:28 | <zcorpan> | 's' and 'd' are next to each other on a qwerty keyboard. that would theoretically make it pretty easy to typo 'id' as 'is' and vice versa. however, i didn't find a lot of instances of is= with google code search. |
17:32 | <zewt> | random musings? :) |
17:42 | <Ms2ger> | Assumed related to the xbl thread |
18:11 | <smaug____> | so, does anyone here actually like Dart? |
18:11 | <smaug____> | and if so, why? |
18:12 | <Ms2ger> | Of course! |
18:12 | <Ms2ger> | Google knows what's good for you, even if you don't! |
18:14 | <smaug____> | huh, DOM bindings for Dart are silly |
18:15 | smaug____ | decides not to care about Dart and moves on |
18:59 | <jgraham> | smaug____: Oh, I thought their plan was to replace DOM with Some Other API |
19:00 | <bga_> | smaug____ aeveryone have rights to make your own wrapper |
19:01 | <smaug____> | so? |
19:01 | <jgraham> | bga_: It sucks to be Not Google if they make a wrapper that they don't test in other browsers and implement natively in Chrome |
19:01 | <jgraham> | That hasn't happened yet ofc |
19:02 | <bga_> | oh |
19:02 | <bga_> | but Google want remove js too, replace to Dart + NaCl |
19:02 | <bga_> | new standards! |
19:03 | <Ms2ger> | bga_, interesting definition of "standard" |
19:04 | <bga_> | jgraham may be they wants to make Chrome as browser for intranet |
19:04 | <timeless> | Ms2ger: the wonderful thing about standards... |
19:04 | <bga_> | and will go away from internet |
19:04 | <timeless> | > . The wonderful thing about standards is that there are so many of them to choose from. |
19:08 | <bga_> | Ms2ger btw my view of ideal dom api is var div = doc.Div(){id: 'foo', style: doc.Style(){position: eStylePos.ABSOLUTE, left: 10, top: 10} } |
19:08 | <bga_> | no new |
19:08 | <Ms2ger> | Not mine, obviously |
19:09 | <bga_> | Ms2ger and el.beforeClick._add(_fn) el.beforeClick._del(_fn) |
19:17 | <Hixie> | foolip: i cced you on the relevant bug |
19:26 | <TabAtkins> | jacobolus: You have to give it like 10 seconds, because I wait for onload before hooking up the JS, and some of the iframes take a little while. |
19:28 | <TabAtkins> | annevk5: Yeah, I mentioned that possibility in the telcon this morning. Seems like a lot of overhead for little benefit. |
19:28 | <jacobolus> | TabAtkins: okay, in safari I waited minutes, and now it's at this state: http://imgur.com/JJ6E8 |
19:29 | <TabAtkins> | That should not take minutes. It should take maybe 10 seconds. |
19:29 | <TabAtkins> | That is the correct "loading" appearance, though. |
19:30 | <jacobolus> | TabAtkins: in chrome, it loads and turns blue, but then as I arrow through, each slide disappears halfway through trying to appear, so I get to read a nice blank blue screen |
19:30 | <jacobolus> | there's clearly stuff moving around, etc., but I can't really read it |
19:30 | <TabAtkins> | Um, blue? |
19:33 | <jacobolus> | oh, hmm |
19:33 | <jacobolus> | https://raw.github.com/LeaVerou/Incrementable/master/incrementable.js 405s |
19:35 | <TabAtkins> | Yeah, something's wrong with your connection. That loads <1s for me. |
19:36 | <jacobolus> | it loads fine in a separate page |
19:37 | <jacobolus> | I guess it loaded in chrome too. not sure what's wrong there |
19:37 | <jacobolus> | I've got a "Unsafe JavaScript attempt to access frame with URL http://www.xanthir.com/talks/2011-10-06/ from frame with URL http://hacks.mozilla.org/2010/08/mozelement/. Domains, protocols and ports must match." |
19:37 | <TabAtkins> | That should be irrelevant. |
19:38 | <jacobolus> | http://i.imgur.com/AJX1P.png |
19:39 | <TabAtkins> | That's all kinds of crazy. I don't have that color anywhere in my document. |
19:39 | <jacobolus> | in firefox the first page loads, and then the rest are just blank gray |
19:43 | <TabAtkins> | Oh, hm, you're right. Somehow the scroll position isn't being set correctly. |
19:45 | <jacobolus> | TabAtkins: in firefox, trying to load that incrementable.js file, I get an error that <!DOCTYPE html> isn't valid javascript after the server returns 301 and sends https://github.com/LeaVerou/Incrementable instead |
19:47 | <bga_> | oh. github has becomed much faster |
19:47 | <bga_> | nice |
19:49 | <jacobolus> | hm, actually maybe that's not what it sends, dunno. in any event, all the javascript ends up broken somewhere along the line, and then the slides stop working :) |
19:56 | <Hixie> | Ms2ger: why http://www.w3.org/Bugs/Public/show_bug.cgi?id=13877 ? |
19:57 | <Ms2ger> | Why not? :) |
19:57 | <Hixie> | well because we're not the text/plain spec |
19:58 | <Hixie> | so really if a UA wants to, i dunno, embed notepad to handle text files, who are we to disagree? |
19:58 | <Ms2ger> | Is that the one part of the web you aren't speccing? ;) |
19:58 | <Ms2ger> | I don't think embedding notepad without creating a document as described would be web-compatible |
19:59 | <Hixie> | yeah, that's probably true |
19:59 | <Hixie> | i guess this stuff only applies to html uas anyway |
19:59 | <Hixie> | but then again, there's not any real difference to saying "must" or "should" |
19:59 | <Hixie> | since a UA could just pretend it's not an HTML UA when it comes across a text/plain file |
20:00 | <Hixie> | then again, it couldn't do that _and_ handle it in iframes... |
20:00 | <Hixie> | so i guess it makes sense to have must |
20:00 | <Hixie> | ok |
20:02 | <Ms2ger> | And then I don't have to argue about the tests |
20:26 | <Ms2ger> | An extra word, a missing word... Same thing, really :) |
20:26 | <Hixie> | :-) |
20:47 | <TabAtkins> | annevk5: You around? What "other specifications" could make the extension requirements? |
20:53 | <Ms2ger> | TabAtkins, the ones that define the @-rule |
20:54 | <Ms2ger> | partial interface CSSWhatever { const MY_AT_RULE = 11; } |
20:54 | <TabAtkins> | I don't understand how they can define the wiki as being the required extensibility mechanism. |
20:54 | <Ms2ger> | The wiki is just a list of pointers to specs that define extensions |
20:57 | <TabAtkins> | Shrug. Seems easier to just define the wiki as normative. |
20:58 | <Ms2ger> | But then you've got a normative wiki page |
20:58 | <TabAtkins> | Yes? |
20:58 | <TabAtkins> | HTML has several already. |
20:59 | <Ms2ger> | If that's the fight you want to fight, sure :) |
21:00 | <Ms2ger> | Also, how high on your todo list is the scary messages on obsolete specs? :) |
21:00 | <TabAtkins> | I need to do that sometime soon. |
21:03 | <TabAtkins> | Ms2ger: Why do you ask? |
21:03 | <Ms2ger> | Just that I want it to happen :) |
21:03 | <TabAtkins> | Ah. Well, the WG resolved to do it, so it's completely up to me at this point. |
21:11 | <annevk> | TabAtkins, a normative wiki page doesn't really have the same effect as the partial interface construct afaict |
21:12 | <annevk> | though I guess it's "clear enough" |
21:13 | <bga_> | hm. plz ppl say me why UA dont add unknown properties to cssom and many ppl are forced to make own css parser |
21:13 | <bga_> | some CSSUnknownRule will be nice |
21:14 | <bga_> | w/ string contains not parsed rule |
21:14 | <TabAtkins> | bga_: There was discussion about this not long ago on www-style. |
21:14 | <Ms2ger> | bga_, use glazou's |
21:15 | <bga_> | TabAtkins and result? |
21:15 | <TabAtkins> | It's not a good idea. |
21:15 | <bga_> | :( |
21:16 | <annevk> | still might be nice to have something akin data-* for CSS properties |
21:16 | <TabAtkins> | Yes. |
21:16 | <TabAtkins> | I think we should use exactly that name: data-* |
21:16 | <annevk> | but given how the CSS parser is defined it seems rather tricky to get the details correct |
21:17 | <TabAtkins> | Hmm? I wouldn't think so. You'd still have to obey the generic grammar, but that's really loose. |
21:18 | <TabAtkins> | Basically you can take anything that's a space, comma, or slash separated list of numbers, dimensions, keywords, strings, or functions. |
21:19 | <erlehmann> | what exactly would you want? |
21:19 | <TabAtkins> | erlehmann: ? |
21:20 | <erlehmann> | i do not understand how „data-“ and CSS would come together. |
21:20 | <annevk> | e.g. data-t: x tralolol /**/ whatev ; |
21:20 | <annevk> | what is its string value? |
21:20 | <erlehmann> | so how would that be used? |
21:20 | <annevk> | and how does that follow from the CSS parser? |
21:20 | <TabAtkins> | The idea is that selectors + the cascade is a pretty useful model for assigning data to elements, so we could define an author-extensible set of properties that can take anything and mean nothing. |
21:21 | <erlehmann> | like with fonts, only more general? |
21:21 | <erlehmann> | like assigning the name of a font is? |
21:21 | <TabAtkins> | annevk: cssText is defined generically (as much as it's defined at all). |
21:21 | <bga_> | annevk just get all string between : and ; |
21:21 | <bga_> | or : and } |
21:21 | <annevk> | TabAtkins, well yeah, that's a bug |
21:21 | <TabAtkins> | annevk: Really? Why? |
21:21 | <annevk> | TabAtkins, defining cssText however is easy for properties with normal values |
21:21 | <annevk> | because you just serialize those values |
21:22 | <TabAtkins> | I mean, your example is just three keywords and a comment. |
21:22 | <annevk> | but if you don't know the value, you cannot serialize it |
21:22 | <bga_> | annevk serialize as-ai |
21:22 | <annevk> | bga_, CSS doesn't work that way |
21:22 | <bga_> | *is |
21:22 | <TabAtkins> | If you restrict it to specifically the five data types I mentioned, it's easy and still extremely useful. |
21:22 | <bga_> | ++ |
21:23 | <annevk> | TabAtkins, yeah that might work |
21:23 | <bga_> | TabAtkins and custom bnf grammar |
21:23 | <TabAtkins> | Hmm. I wonder if it would be possible to do calc() under that regime. |
21:23 | <annevk> | TabAtkins, though we don't have functions currently |
21:24 | <bga_> | for your own rules |
21:24 | <bga_> | it will be like edsl :) |
21:24 | <bga_> | in css |
21:24 | <TabAtkins> | annevk: Hm? FUNCTION is a token in the core grammar. |
21:25 | <TabAtkins> | {ident}(<any>), plus whitespace, once you combine the token and the grammar. |
21:25 | <bga_> | hm |
21:26 | <bga_> | TabAtkins => we can make interface CSSUnknownRule { CSSAst cssAst } |
21:26 | <bga_> | not cssText |
21:27 | <TabAtkins> | It's not bad just for technical reasons. It's also bad for practical reasons. |
21:27 | <dbaron> | hmmm, if an edit Hixie just made for a w3.org bug is wrong, should I reopen the bug or reply on the whatwg mailing list...? |
21:27 | <TabAtkins> | It's a good thing for it to be painful to invent your own syntax. |
21:27 | <TabAtkins> | dbaron: Either works. |
21:32 | <dbaron> | ok, reopened http://www.w3.org/Bugs/Public/show_bug.cgi?id=13915 |
21:32 | <annevk> | yeah, data-* would be kind of last resort |
21:33 | <TabAtkins> | I don't think data-* is bad. Inventing your own properties, though, interferes with our ability to mint new properties in the future. |
21:33 | <TabAtkins> | Similarly, inventing your own values for existing properties. |
21:33 | <annevk> | I never really considered that a viable option |
21:34 | <bga_> | TabAtkins its will gives right for authors to extents css standards, make css flexible and extendsible |
21:34 | <TabAtkins> | bga_: That is *very explicitly* something we do *not* want to give to authors. |
21:35 | <TabAtkins> | annevk: That's the end result of directly exposing "invalid" properties, which is why I mention it. |
21:35 | <bga_> | ok. not standards |
21:36 | <TabAtkins> | bga_: We do not want to make CSS author-extensible in a way that makes it hard for the WG to extend it in the future. |
21:36 | <TabAtkins> | If there are safe ways to make it extensible, like data-* properties, that's fine. |
21:36 | <TabAtkins> | This is similar to how HTML defines the data-* attributes rather than allowing authors to mint whatever new attributes they want. |
21:36 | <bga_> | TabAtkins ok. force authors to use data- prefix |
21:37 | <TabAtkins> | And how the component model is proposing that components must start with x-, rather than being some arbitrary element name. |
21:37 | <bga_> | but i must have right to inject own subparser in css parser and own rule in cssom |
21:38 | <TabAtkins> | I don't see how that follows. |
21:38 | <TabAtkins> | That would be a nightmare, actually. |
21:38 | <bga_> | TabAtkins it will true extensible browser |
21:38 | <bga_> | TabAtkins i can patch dom prototypes |
21:39 | <bga_> | i can register new protocols |
21:39 | <bga_> | can create new html elements |
21:39 | <bga_> | next - new css rules |
21:39 | <RobbertAtWork> | haha, the CSSRule.register() suggestion was inevitable |
21:39 | <bga_> | :) |
21:40 | <TabAtkins> | Minting your own data-* properties is fine. You can then read them from script and do what you want. There's no need for anything further (and I don't think it even makes sense to go further). |
21:48 | <annevk> | https://raw.github.com/gist/933cc4f7df97d553ed89/24386c6a79bb4b31fb818b70b34c5eab7f12e1ff/gistfile1.txt is quite a fun read |
21:50 | <Peter-> | https://plus.google.com/112678702228711889851/posts/eVeouesvaVX |
21:50 | <Peter-> | same message, got some comments as well |
21:51 | <jgraham> | The way CSS people always talk about "The WG" makes it sound very sinister |
21:51 | <TabAtkins> | At least we're not a cabal. |
21:52 | <jgraham> | You're way more of an actual cabal than whatwg every has been |
21:52 | <jgraham> | *ever |
21:52 | <TabAtkins> | But we're not *called* a cabal. |
21:54 | <jgraham> | Well it is apparently legitimate to be one if you brand it with the W3C logo, so no one complains |
21:55 | <TabAtkins> | Now you've got it. |
22:33 | <annevk> | "What we really need is Strict Mode for the DOM: The possibility to completely re-invent all of the DOM from scratch." |
22:33 | <annevk> | I wonder when we stopped thinking that quirks mode was a bad idea |
22:33 | <annevk> | Also, from http://www.dartlang.org/articles/improving-the-dom/ it does not seem like Dart is re-inventing the DOM |
22:34 | <annevk> | It just introduces some different names for the same concepts |
22:35 | <TabAtkins> | annevk: Quirks mode is bad for different reasons than "let's rename the DOM!" is. |
22:35 | <TabAtkins> | It involves parsing differences, CSS layout differences, etc. |
22:35 | <annevk> | It's bad because mode switching like that is bad |
22:36 | <annevk> | With the epitome being the IE versioning model |
22:36 | <TabAtkins> | No. Mode switching is expensive. Quirks mode is bad for more reasons than just mode switching. |
22:36 | <TabAtkins> | Javascript strict mode is a mode switch that we're okay with. |
22:37 | <annevk> | You might be, I think it's quite silly |
22:37 | <TabAtkins> | A mode switch is, eventually, the only answer to "shit sucks forever". |
22:37 | <bga_> | annevk ++ |
22:38 | <TabAtkins> | Either you mode switch, or you have duplicate functionality that can be used at the same time, or you just stick with the sucky stuff forever. |
22:38 | <TabAtkins> | I think those are the only three choices. |
22:39 | <annevk> | Mode switch is duplicate functionality too |
22:39 | <TabAtkins> | Yes, but the old functionality is hidden and in the unicorn future can be eventually removed. |
22:39 | <annevk> | that sounds like crock |
22:40 | <annevk> | I'm not sure why we would start believing that now |
22:40 | <TabAtkins> | Even if we cant' remove it ever, having everyone opt-in to the new stuff makes newer code easier to understand, at least. |
22:40 | <annevk> | what Google seems to be advocating is pretty much XHTML2 |
22:40 | <TabAtkins> | Where eventually the definition of "newer" is "everything that anyone cares about". |
22:40 | <annevk> | minor improvement with major cost |
22:40 | <TabAtkins> | I haven't mentioned Dart at all, and am not talking about it. |
22:40 | <TabAtkins> | It's irrelevant. |
22:41 | <annevk> | I was not talking about that either |
22:41 | <TabAtkins> | My mistake, then. Anytime someone mentions Google at the moment, they're talking about Dart. |
22:42 | <jgraham> | TabAtkins: "Dart ... it's irrelevant" - is that the official position ;) |
22:42 | <TabAtkins> | Google has no official position. Ever. |
22:42 | <jgraham> | Uh huh |
22:43 | <paul_irish> | haha |
22:43 | <Philip`> | Is the official position that it has no official position? |
22:43 | <annevk> | paul_irish, the jQuery thing was a joke right? I wasn't sure |
22:43 | <TabAtkins> | We don't have an official position on that. |
22:43 | <TabAtkins> | annevk: Yes, it was. |
22:43 | <jgraham> | annevk: That looks quite like reinventing the DOM to me |
22:43 | <jgraham> | I mean sure it has the same concepts |
22:43 | <paul_irish> | annevk: yea |
22:44 | <jgraham> | But a totally different API |
22:44 | <annevk> | if you rename a few things, but you keep the event, node, range, exception model around you are not reinventing anything |
22:44 | <annevk> | you are just making things more confusing for authors |
22:45 | <annevk> | oh, right, in Dart I use .elements, not .children |
22:45 | <annevk> | such a win! |
22:45 | <TabAtkins> | annevk: You're completely ignoring the fact that even just the *naming* of the DOM is horribad and confusing for authors. |
22:45 | <bga_> | longer :( |
22:45 | <jgraham> | Well it also makes things worse for implementors that they don't bother to test with |
22:45 | <smaug____> | and Dart+DOM seems to manage to make naming even worse |
22:46 | <TabAtkins> | Having unique names for DOM collections different from the rest of the platform is bad. Making them all collections is good. |
22:46 | <TabAtkins> | Having nearly a dozen DOM searching methods is bad. Having one, which we know from experience people love to use, is good. |
22:46 | <TabAtkins> | Etc. |
22:46 | Philip` | thought Strict Mode wasn't about adding any features or syntax or renaming anything or reinventing anything, it was just about enforcing that you don't use certain dodgy features |
22:47 | <TabAtkins> | Philip`: Yeah, but it helps pave the way for new features less painfully. |
22:47 | <jgraham> | Just dealing with the language as JS is likely to be bearable because JS engines are relatively small and not that buggy. Having it also layer new stuff on top of DOM practically means that there will have to be lots of spcial casing for different browsers in the generated JS which means lots of breakage |
22:48 | <annevk> | TabAtkins, sure, simplicity is good, but it's not groundbreaking enough to do away with the old |
22:48 | <TabAtkins> | annevk: I disagree. The pain of millions of authors struggling with the old mistakes is significant. |
22:49 | <annevk> | most authors hardly deal with the DOM so that seems somewhat overstated |
22:49 | <TabAtkins> | Yeah, because it's so sucky that everyone uses libraries. |
22:49 | <TabAtkins> | Are you using that as an argument that we don't need to fix the DOM? |
22:50 | <annevk> | I'm saying that what you are saying is not true |
22:50 | <TabAtkins> | How, precisely, is it not true? |
22:50 | <annevk> | I do think we should simplify certain constructs as should be evident from my www-dom emails |
22:51 | <bga_> | looks like wine that implemets bugs oа win32 too |
22:51 | <TabAtkins> | Authors *do* use the DOM *all the time*. They just don't use the W3C DOM, because it blows. |
22:51 | <jgraham> | I don't understand why you think tying this to a new language is a sensible idea |
22:51 | <TabAtkins> | jgraham: I didn't say anything about that. See my above comments about how I'm not talking about Dart. |
22:52 | <jgraham> | TabAtkins: In what way? The discussion is precisely about the DOM replacement in Dart |
22:52 | <jgraham> | If you're not talking about it, you are the only one |
22:52 | <TabAtkins> | jgraham: Not at all. Dart happens to be provoking the discussion, but I don't give a crap about Dart. I care about better DOM. |
22:52 | <TabAtkins> | jgraham: Um, Anne's not talking about Dart either. By his own direct admission. |
22:53 | <smaug____> | TabAtkins: isn't the DOM4 work exactly about fixing the problems of old DOM API |
22:53 | <jgraham> | TabAtkins: So propose the better DOM APIs |
22:53 | <TabAtkins> | smaug____: In general, yes. I think annevk is too conservative, though. ^_^ |
22:53 | <jgraham> | I haven't really seen people do that |
22:53 | <jgraham> | Apart from all the hand-wringing about what new HTMLFooElement should do |
22:53 | <TabAtkins> | jgraham: The Dart APIs are, roughly, what several of us Google engineers working on JS would like to see in DOM. |
22:53 | <bga_> | TabAtkins sometimes any even very good software is needed to be completely rewritten |
22:54 | <smaug____> | TabAtkins: propose better DOM APIS ;) |
22:54 | <TabAtkins> | Me, Alex Russell, Erik Arvidsson, etc. |
22:54 | <jgraham> | TabAtkins: So propose them then... |
22:54 | <smaug____> | APIs |
22:54 | <krijn> | Don't fight kids! |
22:54 | <annevk> | TabAtkins, conservative how? I just think mode switching is bad idea |
22:54 | <TabAtkins> | annevk: You underestimate the aggregate pain that the sucky DOM causes to authors, and assert that nobody uses the DOM, so it's all right. |
22:55 | <jgraham> | krijn: In England we fight kids: http://www.guardian.co.uk/uk/2011/sep/21/eight-year-old-children-cage-fight-preston |
22:55 | <annevk> | I didn't say the DOM is all right |
22:55 | <krijn> | o_O |
22:56 | <jgraham> | TabAtkins: But there's no one trying to fix it. So far we have the Element.create suggestion (which I like) and the new HTMLElement suggestion (which doesn't work at all) |
22:56 | <jgraham> | That's it |
22:56 | <jgraham> | krijn: Indeed |
22:56 | <bga_> | TabAtkins how many times you deprecate oк remove some ability during dom0-dom4? |
22:57 | <annevk> | TabAtkins, anyway, what I think does not really matter, what matters so far is that there is a lot of noise, but not so much signal, about a better DOM |
22:57 | <TabAtkins> | jgraham: No one trying to fix it? Alex and Arv have been pushing forever on making NodeList be an array, for example. |
22:57 | <bga_> | i never heard that some feature was removes |
22:57 | smaug____ | is having hard time to find good things in the (dart) DOM API |
22:57 | <TabAtkins> | smaug____: I... I don't understand how that is possible. |
22:57 | <jgraham> | TabAtkins: iirc that doesn't work either |
22:57 | <annevk> | I guess tied to Dart there is some signal now, but I am personally hoping for it to be on www-dom |
22:58 | <jgraham> | It is easy to come up with unworkable ideas of course |
22:58 | <TabAtkins> | smaug____: Or pehraps you're not looking at the negative space, the fact that the Element interface is, like, a dozen methods/attributes now. |
22:58 | <krijn> | I want Element.nyanCatify() |
22:59 | <TabAtkins> | annevk: Dart is useful as a "hey look at this!", since individual feature suggestions are often shot down with "the DOM isn't really that painful" by you and others. ^_^ |
22:59 | <krijn> | annevk: btw, did we meet on Wednesday? |
23:00 | <annevk> | krijn, last week, briefly? |
23:00 | <krijn> | Hm |
23:00 | <krijn> | Don't know what was in the beer on that boat, but I'm missing some parts |
23:01 | <smaug____> | "(For mysterious reasons, these are named allinlowercase unlike the rest of the DOM.)" ? |
23:01 | <TabAtkins> | elem.onclick="..." |
23:01 | <smaug____> | what is mysterious about onfoo handlers |
23:01 | <TabAtkins> | As opposed to elem.onClick="..." |
23:02 | <smaug____> | they are all lowercase because the content attributes in HTML are lowercase |
23:02 | <TabAtkins> | We usually camelcase in JS. |
23:02 | <smaug____> | nothing mysterious there |
23:02 | <TabAtkins> | smaug____: That's not a general pattern. |
23:02 | <bga_> | TabAtkins dom isnt painful because we can completely change it api via dom prototypes. s/length/size/ for example |
23:02 | <TabAtkins> | We camelcase some things that are uncased in the content attributes. |
23:03 | <TabAtkins> | bga_: That's not a valid argument. Libraries *can* fix anything. They shouldn't be required, though. |
23:03 | <smaug____> | the new event registration mechanism looks also broken |
23:03 | <smaug____> | what if I want to add listener for event "foo" |
23:04 | <smaug____> | would it be then elem.on.foo.add (...) |
23:04 | <smaug____> | and that foo property would magically appear in the 'on' object |
23:04 | <bga_> | smaug____ el.onFoo.add is better |
23:05 | <smaug____> | ah, it says "we also put a subscript operator on NodeEvents." |
23:05 | <TabAtkins> | smaug____: Yes, though I think you have to use the subscript operator. |
23:05 | <TabAtkins> | elem.on['foo'].add() |
23:06 | <smaug____> | anyway, don't understand why to change onclick = value to on.click.add(value); |
23:06 | <bga_> | because its not add |
23:06 | <bga_> | its assign |
23:07 | <annevk> | smaug____, the latter allows for multiple |
23:08 | <smaug____> | I wonder where <element onclick="adlfkm"> handler appears |
23:08 | <smaug____> | ah, it does allow multiple |
23:08 | <smaug____> | but it breaks onfoo idl vs content attribute mapping |
23:08 | <smaug____> | ah, well |
23:08 | <smaug____> | I just don't care this |
23:08 | <smaug____> | won't implement any of this stuff anyway |
23:08 | <bga_> | smaug____ my friend made small monkey patch which replace on* properties to setters which calls addEventLisneters |
23:09 | <smaug____> | bga_: how does that work? |
23:09 | <smaug____> | er |
23:10 | <smaug____> | ah, yes, defineProperty or some such |
23:10 | <bga_> | yes |
23:10 | <smaug____> | replacing Element.property.onclick by assigning a new value wouldn't ofc work |
23:10 | <bga_> | smaug____ but its points vector |
23:10 | <arv> | One of the goals with the on property was to unify the onfoo and the addEventListener("foo") mess |
23:11 | <smaug____> | what is the mess with onfoo and addEventListener? |
23:12 | <TabAtkins> | onfoo is annoying because it can only accept a single listener. However, it's short, while addEventListener is super-verbose and painful. |
23:12 | <arv> | I assume you think it is good to have 2 different ways? I know there are minor differences but who cares? |
23:12 | <TabAtkins> | You want short and easy for such a common thing. You also want a single way to do it if possible. |
23:12 | <smaug____> | how is addEventListener painful? |
23:13 | <smaug____> | ok, it is a bit long method name, but that is all |
23:13 | <arv> | and having strings as type sucks because it does not catch typos |
23:13 | <TabAtkins> | "That is all"? That's the whole problem. The DOM is stuffed full of painfully long names for no reason. |
23:13 | <TabAtkins> | That just makes your code huge and hard to both type and read. |
23:13 | <smaug____> | you elem.on['foo'] doesn't catch typos either |
23:13 | <smaug____> | yuor |
23:13 | <smaug____> | your |
23:14 | <smaug____> | :) |
23:14 | <dominicc|home> | and boolean parameters make understanding call sites harder |
23:14 | <TabAtkins> | It's impossible to catch typos in arbitrary user-creted events, obviously. |
23:14 | <arv> | That is all? Seriously. You don't think it is flawed in any other way than the length? |
23:14 | <TabAtkins> | Oh god, I completely forgot abotu the boolean parameter in aEL. >_< |
23:14 | <smaug____> | dominicc|home: you don't need to use boolean parameters with add/removeEventListener |
23:14 | <bga_> | 1st what you can do is make Element.prototype.on = Element.prototype.addEventListener |
23:14 | <TabAtkins> | ...yes you do. |
23:14 | <TabAtkins> | If you don't use it, it's a violation, and makes FF angry. |
23:14 | <smaug____> | there is no need to use boolean parameter |
23:14 | <smaug____> | no |
23:15 | <arv> | ff was fixed so, it is a step in the right direction |
23:15 | <arv> | but |
23:15 | <arv> | still |
23:15 | <TabAtkins> | Ah, wasn't aware it was fixed. |
23:15 | <arv> | reading a true or false at the end is still painful for the cases where it does matter |
23:15 | <annevk> | wait are we looking at DOM4 or Firefox? |
23:15 | <smaug____> | spec was fixed (and then gecko started to follow the spec) |
23:15 | <dominicc|home> | They’re optional I think. But still there… MDN says Mozilla has a second optional bool now. |
23:15 | <TabAtkins> | Still, seeing "someMethod(foo, bar, true)" kills me. |
23:15 | <annevk> | because that's been optional since forever |
23:16 | <TabAtkins> | dominicc|home: Oh jeezus. |
23:16 | <smaug____> | they were may optional actually because it was a bug in webkit that it allowed to leave out the last parameter :) |
23:16 | <smaug____> | s/may// |
23:17 | <dominicc|home> | So addEventListener has many infelicities. |
23:17 | <arv> | WebKit just followed common js practice. Makes me smile every time when that happens |
23:17 | <arv> | (but it does not happen often enough) |
23:17 | <smaug____> | and not following the spec? |
23:17 | <smaug____> | and not even filing spec bug |
23:17 | <arv> | The specs should follow reality, not the other way around |
23:18 | <annevk> | it's nice to tell the spec list if you think reality has shifted though |
23:18 | <smaug____> | is webkit the reality ? |
23:18 | <annevk> | also |
23:18 | <annevk> | webkit is changing their practice |
23:18 | <annevk> | and making arguments required |
23:19 | <annevk> | so it's not as simple as you say |
23:19 | <arv> | nothing is as simple as I say |
23:19 | <annevk> | that fourth addEventListener argument is something Mozilla did not propose anywhere btw smaug____ |
23:19 | <TabAtkins> | Not even the DOM. |
23:21 | <smaug____> | annevk: very true. But if I do something wrong doesn't make it ok for others to do wrong ;) |
23:21 | <smaug____> | and unfortunately 4th parameter was added long ago |
23:21 | <arv> | annevk: I'm well aware that it is hard work to spec these things and I appreciate all the good work you (and others) are doing |
23:22 | <arv> | One of the reasons why we chose to experiment with this in the Dart DOM was because we could do this without the risk of not breaking anything since there is no Dart code out there |
23:23 | <dominicc|home> | arv: And since Dart is "developer preview" you expect to be able to make breaking changes for a while, right? |
23:24 | <arv> | and we were tired of doing another blind webidl to dart conversion which would fit dart as badly as webidl fits js today |
23:24 | <arv> | do |
23:24 | <arv> | m |
23:24 | <arv> | |
23:24 | <arv> | dominicc|home: yes |
23:24 | <smaug____> | what is wrong with webidl <-> js? |
23:25 | <TabAtkins> | smaug____: WebIDL still encourages horrifyingly bad impedance mismatch with what good JS APIs should be. |
23:26 | <smaug____> | really? |
23:26 | <annevk> | I don't really mind Dart that much. What I mind is all the screaming that the DOM is broken and then either not proposing anything or coming up with proposals that are unworkable when you look at the details. |
23:26 | <annevk> | And of course there are some more constructive proposals too, e.g. from Ojan, so it's not all bad. |
23:26 | <arv> | annevk: I totally agree with that point. There are too many haters out there |
23:27 | <arv> | Also Ojan is awesome =D |
23:27 | <annevk> | TabAtkins, yeah, I hear that all the time, "omgwtfbbq Web IDL is terrible" |
23:28 | <annevk> | please do propose a workable alternative or just appreciate the fact it's so much vastly better than what we had before |
23:28 | <TabAtkins> | annevk: I know it's vastly better than what we had before. |
23:28 | <TabAtkins> | It's not perfect, though, dammit! |
23:31 | <smaug____> | TabAtkins: but really, what is bad in WebIDL? |
23:31 | <TabAtkins> | arv would be able to answer better than I, but in general it's still relatively hard to design properly idiomatic APIs in WebIDL. |
23:31 | <smaug____> | (I apparently just don't know why people are complaining about WebIDL) |
23:33 | <arv> | One of the problem with WebIDL is that it is language neutral which leads to impedance mismatch. For example, webidl attributes almost always have side effects and as such needs to be done as getters and setters to follow JS semantics. Some of these things are hidden in prose in webidl |
23:34 | <arv> | other things include interceptors which cannot be done in JS without ES6 proxies |
23:35 | <dominicc|home> | arv: And your contention is that, because the attribute setters have side effects, it would be more idiomatic in JS if they were functions? |
23:35 | <arv> | dominicc|home: JS has setters and getters (unlike java which uses getFoo and setFoo) |
23:36 | <dominicc|home> | arv: Right. So… what is the problem with mapping attributes to getters and setters? |
23:36 | <rniwa> | Hixie: ping |
23:36 | <Hixie> | pong |
23:36 | <arv> | yes, and this is being taken care of in the latest webidl spec |
23:37 | <rniwa> | Hixie: i'm confused about your comment on https://bugs.webkit.org/show_bug.cgi?id=68610 |
23:37 | <rniwa> | Hixie: are you saying that itemtype is a space-separated list of types? |
23:37 | <rniwa> | Hixie: or are you saying it is not |
23:37 | <Hixie> | it is now a space-separated list of types |
23:37 | <Hixie> | as of about 24 hours ago |
23:37 | <rniwa> | :( |
23:39 | <annevk> | arv, do you mean in Web IDL the specification or in the language it defines? |
23:39 | <rniwa> | Hixie: ok, but I'm more inclined to prefix all attributes now |
23:39 | <Hixie> | heh |
23:39 | <rniwa> | I thought the spec was relatively stable but apparently not |
23:40 | <Hixie> | it should be a backwards-compatible change for any existing content |
23:40 | <arv> | annevk: I'm not fully sure. Can you clarify that question? |
23:40 | <rniwa> | that seems to indicate that there's a chance we'll have incompatible changes in the future |
23:40 | <rniwa> | or that we might end up wanting to make incompat. changes but can't due to backward compat. |
23:40 | <Hixie> | rniwa: we make changes to things that have been "stable" for 15 years sometimes |
23:40 | <Hixie> | rniwa: doesn't mean it won't change |
23:40 | <rniwa> | Hixie: does any other vendor besides WebKit implement this? |
23:40 | <Hixie> | rniwa: what i try to ensure is that changes don't break shipped code |
23:41 | <Hixie> | rniwa: opera may, not sure (foolip?) |
23:41 | <annevk> | arv, is it a problem that specifications need to use "attribute DOMString x;" for what is essentially a getter/setter? Or is it a problem with how Web IDL defines "attribute"? |
23:42 | <arv> | annevk: I would have been happier if the specification was done in ES5 code |
23:42 | <arv> | annevk: I think the part that explains how to map Web IDL to ES5 already says that they should be implemented as getters and setters on the prototype. |
23:42 | <smaug____> | rniwa: microdata? |
23:43 | <smaug____> | rniwa: there is a patch for gecko, but it needs to be updated ... |
23:43 | <rniwa> | smaug____: ok. are you prefixing attributes? |
23:43 | <rniwa> | smaug____: or new methods on Document/Element? |
23:43 | <annevk> | how would you enforce any kind of consistency if specifications need to define all the ES details themselves? |
23:43 | smaug____ | is looking at the patch |
23:44 | <Hixie> | rniwa: prefixing attributes doesn't solve this, btw |
23:44 | <Hixie> | rniwa: it just adds even more trouble, with authors having to use multiple apis |
23:44 | <annevk> | Opera is unprefixed fwiw |
23:44 | <rniwa> | Hixie: yeah but it'll at least discourage ppl from widely deploying it until we remove prefixing |
23:44 | <smaug____> | optional_argc] nsIDOMNodeList getItems([optional] in DOMString types); |
23:44 | <Hixie> | rniwa: we don't _want_ to discourage people |
23:45 | <Hixie> | smaug____: it's itemType that's changed, not getItems() |
23:45 | <rniwa> | Hixie: well, I'd like to discourage until API is stable |
23:45 | <Hixie> | rniwa: the API won't be stable for decades |
23:45 | <rniwa> | smaug____: no prefixes then? |
23:45 | <Hixie> | rniwa: and then it'll be obsolete |
23:45 | <rniwa> | Hixie: I disagree. |
23:45 | <Hixie> | rniwa: what do you mean by "Stable"? |
23:45 | <rniwa> | Hixie: by stable, I mean that it won't have radial changes like WebSocket did |
23:45 | <smaug____> | rniwa: in the patch I don't see prefixes |
23:46 | <rniwa> | smaug____: ok, I guess we can follow the same suite then |
23:46 | <rniwa> | smaug____: btw, would you mind giving me the bugzilla url |
23:46 | <TabAtkins> | rniwa: "radical" meaning what? The sensible definition is "not backwards-compatible". |
23:46 | <smaug____> | rniwa: https://bugzilla.mozilla.org/show_bug.cgi?id=591467 |
23:46 | <Hixie> | rniwa: i will never make radical changes like websocket. that was a travesty. |
23:46 | <rniwa> | smaug____: so that I can post it on WebKit's bugzilla |
23:46 | <Hixie> | rniwa: and the ietf can be entirely blamed for that |
23:46 | <TabAtkins> | By that definition, this change is not radical. |
23:46 | <rniwa> | TabAtkins: this was not |
23:46 | <Hixie> | we should never have moved websocket to ietf |
23:47 | <Hixie> | it literally delayed us by a year |
23:47 | <rniwa> | smaug____: wow! you're implementing all of it in one patch? |
23:47 | <Hixie> | we'd have compression and multiplexing by now if we'd stayed at whatwg |
23:47 | <Hixie> | but anyway |
23:47 | <smaug____> | rniwa: I don't know much about it |
23:47 | <Hixie> | water under the bridge |
23:47 | <smaug____> | hsivonen would know |
23:47 | <smaug____> | but I guess it is late for him |
23:48 | <smaug____> | (for some reason it is not that late for me although I live in the same city as hsivonen ) |
23:49 | <Hixie> | heh |
23:57 | <annevk> | arv, basically, IDL handles a whole bunch of details that specifications do not need to take care of now and because of IDL they are taken care of consistently; is your idea that we should replace all that by just having "raw" ECMAScript definitions for each method in specifications? |
23:57 | <annevk> | arv, because to me such an idea sounds like it will lead to a hell of a lot more prose and less consistency across specifications |
23:59 | <arv> | annevk: I can see that. Since Web IDL has type annotations and JS does not. |