| 00:47 | <littledan__> | Bterlson made the same point at the meeting about grapheme breaks being locale-independent |
| 03:09 | <duper> | wind 10 |
| 07:15 | <annevk> | jyasskin: guess you're asleep? |
| 07:19 | <annevk> | jyasskin: actually, I thought I had a comment on your proposal, but I don't think I do anymore |
| 07:34 | <tobie> | annevk: re OpenEndedDictionary, what's the requirement around keys being unique? |
| 07:34 | <annevk> | tobie: how would you create one where they are not? |
| 07:37 | <tobie> | annevk: yeah. Let me rephrase that: given you're targeting URL params and HTTP headers, which both allow for multiple values per key, why is a dictionary the right construct? |
| 07:39 | <tobie> | annevk: or are you planning something like: dictionary<DOMString or sequence<DOMString>>? |
| 07:40 | <annevk> | tobie: the common case is key-value |
| 07:41 | <annevk> | tobie: for the uncommon case there's sequence<sequence<ByteString>> |
| 07:42 | <annevk> | tobie: I guess we could maybe do (x or sequence<x>), hmm, or for Headers we could allow "," in the value, which we probably need to allow anyway |
| 07:42 | <annevk> | tobie: so many options |
| 07:42 | <tobie> | annevk: so {"foo": "bar"} or [["foo", "bar"], ["foo", "baz"]] but not {"foo" : ["bar", "baz"]}? |
| 07:43 | <annevk> | tobie: that's the status quo |
| 07:43 | <annevk> | tobie: although I'm not sure how many implemented sequence<sequence<x>> here |
| 07:43 | <Ms2ger> | I think Gecko does |
| 07:47 | <tobie> | annevk: It's interesting to see what common JS libraries tend to do here. |
| 07:47 | <tobie> | annevk: unsurprisingly, they're super lenient in what they accept. |
| 07:48 | <tobie> | annevk: So they'll even accept things like: [{foo: "bar"}, {foo: "baz"}] |
| 07:50 | <tobie> | annevk: what's your take on how Web APIs should handle options like that? Does leniency belong in the Web APIs themselves or in JS libraries built on top? |
| 07:50 | <tobie> | annevk: I would argue for the former, but— |
| 08:08 | <annevk> | tobie: it depends a bit on the tradeoffs involved I suppose |
| 08:10 | <annevk> | tobie: in general I'm not opposed, but perf, complexity, extensibility, etc. are also things we need to take into account |
| 08:17 | <tobie> | annevk: sure. |
| 10:14 | <annevk> | astearns: I looked, and it's filed btw: https://github.com/w3c/uievents/issues/23 |
| 10:14 | <annevk> | astearns: just ignored for 2+ years |
| 10:40 | <MikeSmith> | is Gary not actually working on the UI Events spec any more? |
| 10:43 | <Ms2ger> | Has anyone ever really worked on the UI events spec? |
| 10:47 | <MikeSmith> | I thought Gary K was working on it at one time actually |
| 10:48 | <MikeSmith> | and he was at TPAC so it’s not like he isn’t around |
| 10:50 | <annevk> | We discussed UI events at TPAC |
| 10:50 | <annevk> | This exact issue even |
| 10:50 | <annevk> | It still seemed as new to those involved as it was two years ago |
| 10:50 | <annevk> | I'm not really getting my hopes up |
| 12:55 | <gsnedders> | I so totally don't understand SVG paths. |
| 13:10 | <ondras> | aren't they rather similar to canvas paths? |
| 13:11 | <gsnedders> | I don't know. I'm pretty sure I've never used canvas paths :) |
| 13:13 | <annevk> | gsnedders: study the WHATWG logos |
| 13:13 | <annevk> | gsnedders: it's relatively straightforward once you play around with it a bit |
| 13:14 | ondras | agrees |
| 13:16 | <gsnedders> | I think I'm just not understanding how arcs are computed, more than anything else |
| 13:16 | <ondras> | arcs are indeed the most complex part of it |
| 13:16 | <gsnedders> | and are, sadly, what I need :( |
| 13:17 | <ondras> | gsnedders: seen https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Arcto ? |
| 13:18 | <gsnedders> | ondras: yeah |
| 13:18 | <ondras> | gsnedders: generally speaking, you define the ellipse whose arc is to be drawn. |
| 13:19 | <ondras> | gsnedders: so you have an ellipse, an implied starting point and an end point. an arc is drawn from the starting point to the end point. |
| 13:19 | <gsnedders> | and then it's closed by the implied straight line from the starting point to the end point? |
| 13:20 | <ondras> | no, no closing |
| 13:20 | <ondras> | the "A" command just draws an arc segment |
| 13:21 | <gsnedders> | sorry, the fill area is bounded by that line |
| 13:21 | gsnedders | has no idea what the proper terminology is here :) |
| 13:22 | <ondras> | well if you fill that shape, than yeah, but I suppose no straight stroke line is drawn? |
| 13:22 | <gsnedders> | yeah |
| 13:25 | <gsnedders> | what decides the intrinsic width and height of an inline SVG element? |
| 13:26 | <annevk> | gsnedders: when inside HTML? CSS |
| 13:27 | <gsnedders> | annevk: I guess I mean what does width/height: auto compute to when there's no width/height attributes on the SVG element |
| 13:28 | <annevk> | gsnedders: I think it tries to go for widest these days? max-content or so. But best to try |
| 13:28 | <annevk> | Used to follow the 300x150 rule |
| 13:29 | <gsnedders> | where does the 300x150 rule come from tho? |
| 13:29 | <gsnedders> | Some UAs seem to still do this |
| 13:32 | <annevk> | gsnedders: replaced elements |
| 13:32 | <annevk> | gsnedders: maybe that's still what you have to do if there's no aspect ratio either |
| 13:32 | <annevk> | gsnedders: (aspect ratio is derived from viewBox) |
| 13:32 | <annevk> | gsnedders: that's very plausible; as you can tell, it's been a while since I played with this |
| 13:34 | <gsnedders> | :) |
| 13:34 | <gsnedders> | You still have more idea than I! |
| 14:56 | <annevk> | jyasskin: https://github.com/whatwg/html/pull/1831#issuecomment-250490825 |
| 14:56 | <annevk> | tobie: that comment might also be interesting to you, although we should probably not make that part of IDL for now |
| 14:57 | <annevk> | jyasskin: I remember you were thinking about this problem |
| 14:57 | <annevk> | jyasskin: I was wondering if you had any further thoughts |
| 14:57 | <annevk> | jyasskin: it might be time to start an issue for it in whatwg/html or somewhere else and maybe sketch a few things |
| 14:59 | <jyasskin> | annevk: Yes. I'd been thinking in terms of named parallel threads, but named parallel event loops make equal sense. The wrinkle I found was that I wanted certain steps to complete totally asynchronously (generally because they're calls out to the OS or another device), while other steps should run on the event loop, so we'll need a way to say that. |
| 14:59 | <jyasskin> | HTML seems to have our threading model, so there seems fine for the issue. I'll try to file it today. |
| 15:02 | <annevk> | jyasskin: it might actually be beneficial to introduce new terminology for this such as "thread" and "job" (hey JavaScript!) |
| 15:02 | <annevk> | jyasskin: that way nobody will get it confused with stuff observable from JavaScript (tasks / microtasks) |
| 15:03 | <jyasskin> | Worklets also live in a similar construct, so maybe they have some terminology we can use. |
| 15:03 | <annevk> | jyasskin: so yeah, not "job" 😊 |
| 15:03 | <annevk> | jyasskin: worklets don't really have a concept of a queue I think |
| 15:04 | <jyasskin> | annevk: https://drafts.css-houdini.org/worklets/#the-event-loop |
| 15:05 | <annevk> | jyasskin: that looks a little weird |
| 15:06 | <annevk> | jyasskin: also, microtask is only mentioned once in the document, right there |
| 15:08 | <jyasskin> | One of the worklet specs actually has postMessage, but I don't remember which. But yeah, the worklet specs aren't necessarily the right inspiration, just another place to look. |
| 15:10 | <jyasskin> | https://github.com/WebAudio/web-audio-api/wiki/AudioWorklet-IDL-Proposal maybe. |
| 15:12 | <annevk> | Yeah, Paul mentioned that they wanted postMessage |
| 15:12 | <annevk> | But he could never explain how that would work |
| 15:12 | <annevk> | Maybe they figured it out by now |
| 15:14 | <annevk> | Although that looks like the typical approach of IDL-first-model-later-maybe-never |
| 15:15 | <annevk> | jyasskin: anyway, agreed that we should look there too |
| 15:15 | <tobie> | annevk: yeah, I might have introduced raciness in the sensor spec because of "in parallel." Here again, some non-normative help section would be useful. |
| 15:15 | <annevk> | jyasskin: and maybe tell them to fix a few things |
| 15:17 | <annevk> | tobie: makes sense, once there is something to write something non-normative about 😊 |
| 15:17 | <tobie> | annevk: heh |
| 15:20 | <annevk> | jyasskin: but yeah, named threads with a message queue, message passing between those and the event loop world, system calls that return promises? |
| 15:20 | <annevk> | jyasskin: and message passing between named threads of course |
| 15:21 | <annevk> | jyasskin: can we assume threads last for the lifetime of the system from a spec perspective or do we need to define that too? |
| 15:22 | <jyasskin> | Yep, that sounds about right. I might have the system calls be "Asynchronously" blocks, which the main thread waits for, but I'll have to think more about it. |
| 15:23 | <annevk> | jyasskin: the system calls could even be sync as long as they're called from a named thread (and you could use a new named thread to make them async from your perspective...) |
| 15:23 | <jyasskin> | We might need a way to identify a collection of algorithms, and wait for that collection to complete. I think we don't want folks creating new threads in their algorithms. |
| 15:24 | <annevk> | I'm not sure I quite follow that yet, but the names for the threads need to be reserved somehow |
| 15:26 | <annevk> | jyasskin: the main way I view this concept of "threads" is a mechanism for us to state invariants |
| 15:26 | <annevk> | as a* |
| 15:27 | <annevk> | jyasskin: so using many of them is okay, if many if your things can run in parallel |
| 15:27 | <annevk> | jyasskin: a UA doesn't have to use as many threads (or threads at all) to implement your algorithm |
| 15:29 | <jyasskin> | annevk: We could have my "asynchronously" blocks be "Start a thread to run the following steps, resolving |promise|." |
| 15:30 | <annevk> | jyasskin: yeah, having shorthands sounds good |
| 15:31 | <annevk> | jyasskin: I'm excited now, this might not even be that hard to define |
| 15:31 | <jyasskin> | annevk: Yeah, it's sounding coherent. |
| 16:00 | <jyasskin> | https://html.spec.whatwg.org/multipage/infrastructure.html#dom-event-istrusted seems to have lost its data-noexport="", even though that appears in `source`. Did something change in the generation script? |
| 16:01 | <annevk> | jyasskin: Domenic dropped noexport from some things recently |
| 16:01 | <annevk> | jyasskin: maybe you need to run git pull? |
| 16:02 | <jyasskin> | This isn't one of them; the <dfn> in HTML just says that DOM defines it. |
| 16:02 | <annevk> | jyasskin: rationale was that noexport was the default |
| 16:03 | <annevk> | jyasskin: I think it might have been, but cannot check at the moment |
| 16:03 | <jyasskin> | NM, it is one of them. Somehow that's causing Shepherd to think it's exported. TabAtkins |
| 16:08 | <Domenic> | I'm surprised {{Event/isTrusted}} could get confused, |
| 16:08 | <Domenic> | HTML does not have the appropriate dfn type or for |
| 16:09 | <annevk> | Domenic: maybe logic based on ID? |
| 16:14 | <annevk> | TabAtkins: ^^ |
| 16:20 | <annevk> | TabAtkins: jyasskin: https://heycam.github.io/webidl/#Exposed has an explanation |
| 16:20 | <annevk> | Still a bit confused |
| 16:24 | <jyasskin> | annevk: I intentionally didn't mention the exact issue in my first tweet because it wasn't about that issue in particular: we should just always make sure it's clear how to fix any error message. Tab wasn't sure from the bugzilla discussion what fix to link to, so he pushed back. "https://heycam.github.io/webidl/#example-eafd180b" is probably sufficient |
| 16:24 | <jyasskin> | (with a better id) because it explains to a spec-writer how to decide what to put in the attribute. |
| 16:26 | <annevk> | I don't disagree, just unclear why #whatwg was even mentioned or why it was unclear what to suggest |
| 17:10 | <Domenic> | I thought of it as flattering. When you have a spec question, this is the place to go ^_^ |
| 17:24 | <caitp> | even when it's an ecma262 question? |
| 17:26 | <gsnedders> | there's normally someone who has a clue here |
| 17:28 | <caitp> | usually my questions are actually implementation related, and there isn't anywhere good to ask :( |
| 17:29 | gsnedders | is mostly too far out of the ES game nowadays to be be much use :\ |
| 17:33 | <annevk> | Domenic: heh |
| 18:31 | <Wes666> | evening gents. is there any difference in behavior between Node.textContent and CharacterData.data ? |
| 18:33 | <Wes666> | called on a CharacterData object, of course |
| 18:39 | <jyasskin> | Wes666: https://dom.spec.whatwg.org/#dom-node-textcontent says no. |
| 18:39 | <jyasskin> | Wes666: Also, note that not everyone here is a "gent". |
| 18:40 | <jyasskin> | I recommend "folks" instead. :) |
| 18:40 | <Wes666> | ah right, it's 2016 |
| 18:40 | <Wes666> | forgive me :P |
| 18:41 | <Wes666> | thank you very much for the help |
| 18:43 | <TabAtkins> | annevk: Yeah, it's flattering. ^_^ My problem is that, if an error message says "interfaces need to have an [Exposed=...] extended attribute", spec authors not intimately clued into this subject won't know what to put in there. |
| 18:44 | <TabAtkins> | Even that example in WebIDL isn't great - it explains how to interpret different values, but not *why* a given interface is exposed in Window vs Worker. How should a spec author decide what to put there? |
| 18:44 | <TabAtkins> | Right now the answer is "go ask in #whatwg, they'll help you figure it out". |
| 18:45 | <jyasskin> | TabAtkins: This probably belongs in a spec design guideline, rather than WebIDL. |
| 18:45 | <TabAtkins> | So a paragraph or two of guidance for what kinds of APIs should be exposed in Window vs Worker vs Worklets would be useful. |
| 18:45 | <TabAtkins> | jyasskin: Yes, that's exactly what it is. I don't care if it lives in WebIDL or elsewhere, I just want it somewhere public that I can point to, before I start dropping fatal errors on innocent spec authors. |
| 18:47 | <jyasskin> | https://w3ctag.github.io/design-principles/ |
| 18:47 | <jyasskin> | (Doesn't have it yet, but it's probably the right place.) |
| 18:48 | <TabAtkins> | Yeah, that seems appropriate. |
| 19:47 | <jyasskin> | TabAtkins: Did something change in Bikeshed that might be causing <h3 dfn-type=interface> to lose the dfn-type when it's generated? |
| 19:48 | <jyasskin> | TabAtkins: https://github.com/WebBluetoothCG/web-bluetooth/blob/master/index.bs#L2176 has it, but https://api.csswg.org/bikeshed/?url=https://raw.githubusercontent.com/WebBluetoothCG/web-bluetooth/master/index.bs#bluetoothdevice doesn't. |
| 19:55 | <annevk> | TabAtkins: jyasskin: ❤️ |
| 21:21 | <TabAtkins> | jyasskin: Yes, accidental change where I was assuming a list of selectors was a list of tagnames. Should be fixed now. |
| 21:21 | <jyasskin> | Thx |
| 21:22 | <TabAtkins> | Turns out W3C HTML is an amazing stress-test for Bikeshed, and I'm trying to cut down on the biggest slow points for them. Did a big refactor of the cleanupHTML function from being 20 or so different applications of "run a selector, loop over results" to just being a single tree-walk that tests each element to see if the cleanup applies. |
| 21:25 | <jyasskin> | TabAtkins: If Bikeshed renders W3C HTML in less time than my browser renders html.spec.whatwg.org, you've won. ;) |
| 21:27 | <gsnedders> | :) |