22:39
<littledan>
interesting feedback on observables from the W3C TAG: https://github.com/w3ctag/design-reviews/issues/902#issuecomment-1942576159
22:39
<littledan>
Is anyone interested in discussing Observables in TC39, as Lea recommends?
22:59
<bakkot>
ljharb was definitely interested in seeing it go through TC39 IIRC
22:59
<littledan>
(I'm neutral on venue in theory, but it'd be good to have a venue where discussions can take place.)
22:59
<shu>
i'd like to first be convinced that a discussion would be productive
23:00
<shu>
it is a thing we have already discussed in the past
23:00
<littledan>
literally no one has brought it to committee since 2016
23:01
<shu>
wasn't abortcontroller the sticking point back then too?
23:01
<littledan>
It was very much not shot down at that time
23:01
<shu>
i see
23:01
<littledan>
a version was created which was based on the concurrent TC39 cancellation version
23:01
<littledan>
which was also not shot down, just withdrawn by the champion
23:02
<shu>
i am not opposed to discussion provided that we first agree on goals, since the champion in this case already chose to not bring this to tc39
23:02
<littledan>
I think we have had significant cultural problems that led to this demotivation, and we're not perfect, but I'd say it was definitely worse in 2016
23:03
<shu>
given that we cannot force it to be under tc39 purview, what is the goal of the discussion? is it design feedback? is it like a resolution to try to convince the champion to bring it to tc39?
23:04
<littledan>
well, the purpose of me raising it in this current discussion was, "hey, we care about the TAG thinks, they had a recommendation for us, what should we do"
23:05
<littledan>
we'd kinda need a stronger goal set for a TC39 discussion, I agree
23:06
<littledan>
as far as convincing people, in my conversations with Ben Lesh over the years, he was always happy in principle with this going to TC39, just skeptical that we could get our act together and deliver on anything (so I was unable to convince him to do the work to make it happen in TC39). This does point to a serious problem of ours.
23:07
<shu>
agreed
23:08
<shu>
on the merits alone i think i actually disagree with lea's feedback
23:08
<littledan>
interesting, how so?
23:08
<shu>
my sense has been that there will be no concrete users of the API in ecma262, so we'll be designing an interface that's constrained by the web APIs that need this
23:09
<shu>
so doing it in 262 adds more friction given the amount of tight coupling that needs to happen during the design anyway
23:09
<shu>
also more layering juggling
23:09
<littledan>
we regularly take web API design constraints into account in TC39. Conversely, that proposal repo doesn't show much activity from a variety of web folks as you'd hope for.
23:10
<littledan>
so the purpose of standards venues is often to bring people into discussions. TC39 might be a good or bad tool for that, depending on the details.
23:10
<shu>
sure
23:11
<shu>
still that's why i don't think tc39 is a good fit. i'd rather not design a pure interface that already has real world constraints, where those real world constraints are somewhat far away from us
23:12
<littledan>
honestly for this particular API, the stuff I'm more worried about design-wise is all the weird combinators people end up wanting in RxJS, and is it a problem that this lacks those and goes for something cleaner. This doesn't really have to do with anything that the web platform or TC39 have thought very much about.
23:13
<shu>
i'm not really aware of that concern and that may change my thinking
23:13
<littledan>
the constraints here with the web platform are really really simple, just like "it has to be sync enough that I can do preventDefault", not much more
23:13
<shu>
abortcontroller...? domerror?
23:13
<littledan>
also like "there has to be a concept of unsubscribing, and also dropping events if they come too fast"
23:15
<littledan>
so, yeah, if we say that all unsubscribing is owned by the web platform because of AbortController, I guess. But we can just as much make a new "subscription" object that has a [Symbol.dispose] method (this would be more similar to how RxJS works today, I think, so it's more proven out that it works)
23:15
<littledan>
sorry what is the DOMError part? that seems more like an effect of venue choice than motivation
23:17
<littledan>
honestly for this particular API, the stuff I'm more worried about design-wise is all the weird combinators people end up wanting in RxJS, and is it a problem that this lacks those and goes for something cleaner. This doesn't really have to do with anything that the web platform or TC39 have thought very much about.
Fascinating data which could inform this: https://github.com/WICG/observable/issues/106
23:47
<TabAtkins>
my sense has been that there will be no concrete users of the API in ecma262, so we'll be designing an interface that's constrained by the web APIs that need this
I'm not sure why you would think this. Promises are widely useful in Node, and Observables are, to a first approximation, just a bunch of Promises. UI-driven event streams are the obvious primary use-case for them, and that's mostly a browser thing as a result, but not entirely, and there are plenty of other uses (literally anything that currently relies on a callback that's invoked multiple times asynchronously).