00:50 | <rkirsling> | right |
00:50 | <rkirsling> | I feel like that status doesn't really warrant a separate term but yeah |
03:03 | <littledan> | I am seeing both stories represented in this chat (“stage 0 is not an actual thing that makes sense to think about criteria for” vs “stage 0 is when we have a real potential proposal, eg with a champion lined up”). There isn’t an agreed-on answer, even if your own interpretation seems obviously correct to you. I think we should make a shared decision on which interpretation we all take. A third option is to discourage the use of the term. |
03:06 | <littledan> | This is just a random one of several process points we have where there are multiple interpretations going around among long-time delegates. “Can IEs block” has long been another. I mean this in a neutral way: different understandings simply do exist; I am not advocating for one or the other position. |
03:11 | <ljharb> | that's true about "ship at stage 3", too. but the way things have mostly always been done in practice is usually the thing we should clear up misunderstandings about. |
03:17 | <littledan> | Right it was complicated and slow to build consensus around that, and the result is not 100% unambiguous even now. I think the currently reality is slightly more like, Stage 3 plus (in certain complicated cases) some intangible confidence is when things ship; I hope we can move more towards more consistently having that confidence when something becomes Stage 3, and the recent 2.7 addition helps towards that goal. |
03:22 | <ljharb> | indeed, "what thing actually mean" is often more complex than can be easily explained, or than is documented. but it's empirically deriveable, for all the things you've mentioned - there's only one current correct understanding. we can and should improve documentation when there's confusion, and we always can discuss changing what things mean if we think there's a better way. |
03:23 | <littledan> | I think these are exercises in consensus-building, not uncovering and documenting the real truth. |
03:23 | <ljharb> | both are part of it |
03:23 | <ljharb> | the meaning of a thing doesn't change just because someone comes up with a different understanding of it, unless that different understanding becomes what the committee empirically follows. |
03:26 | <littledan> | Often both precedent and historically intended meanings are ambiguous. We can work through this by gradually building consensus on what should be our way of working. |
03:27 | <ljharb> | i agree. but imo we can't build that consensus unless misunderstandings about how we have been working get cleared up. |
03:27 | <littledan> | Sure but making strong assertions on one side or the other doesn’t necessarily clarify things |
03:27 | <ljharb> | for example, IEs empirically have blocked, ∴ they can block. if someone thinks they shouldn't be able to block, let's build consensus around changing that |
03:29 | <littledan> | When blocks occur, it can sometimes be ambiguous what is going on, eg what the rationale is, who did the block, or whether the champion just voluntarily decided to withdraw the proposal from consideration for advancement. I am glad we are working more on clarifying note-taking in this area. |
03:30 | <littledan> | A lot of times the committee carefully works at the intersection of many people‘s interpretations of process |
03:30 | <ljharb> | indeed. and that becomes much more complex when new and different understandings materialize, which is why correcting those is beneficial. |
15:26 | <Chris de Almeida> | epistemology is hard |
15:33 | <Chris de Almeida> | a lot of good points have been made. I think it's important to proceed a bit cautiously, at the risk of overcorrecting with solutions to non-problems. in other words, I am a lot more interested in solving for things like "what should delegates/IEs do when creating a proposal repo" and not as much in more abstract things like "what is the meaning of stage 0" |
15:39 | <Chris de Almeida> | I should have worded the last bit better. it's important to have a shared understanding of what stage 0 means. further qualifying what is or is not stage 0 based on some criteria is only useful as far as it is practically relevant |
15:53 | <Chris de Almeida> | for example, if we added entrance criteria for stage 0, such as "there must be a champion", how is this valuable or materially different than the status quo? a champion is needed for the proposal to progress to stage 1 (and beyond) anyway. so adding this (or probably any entrance criteria) to stage 0 doesn't help anything, and it introduces a new problem: what to call non-stage 0 proposals. you effectively introduce a new stage, and to what end? |
17:52 | <keith_miller> | What do folks think about recommending web authors put the value /done properties on the iterator object directly and return this (aka the iterator itself) from next rather than return a fresh object each iteration loop? This, I think, should improve the performance of their iterators as they're not allocating fresh objects all the time. Is this a compatibility breaking change we should look into for built-in iterators too? |
17:54 | <keith_miller> | Given there's been a lot of debate about the performance of the iterator protocol on a bunch of recent proposals I'm trying to brainstorm solutions. |
17:57 | <shu> | are you saying as a new protocol? |
17:58 | <keith_miller> | No, as in you'd do
|
17:59 | <shu> | ooh |
17:59 | <shu> | that certainly has a higher chance of being compatible but i still don't know how we find out other than "ship and see" |
18:00 | <keith_miller> | Yeah, fair enough |
18:00 | <shu> | otherwise i mean, yeah, i like it for the obvious reasons |
18:01 | <keith_miller> | It also seems like we should recommend having done /value as the first two properties on your iterator so they don't blow out your ICs. But I don't know if engines all have the same behavior there so that's a bit more controversial |
18:02 | <bakkot> | I would make it a seperate object and re-use it |
18:03 | <keith_miller> | That's fine too although I guess slightly less efficient. But might be more likely compatible. |
18:03 | <keith_miller> | I suppose it also better avoids the done /value blowout problem |
18:04 | <bakkot> | In practice I don't think people are implementing iterators themselves much, rather than using generators |
18:05 | <keith_miller> | Yeah, probably. I suppose this same concept could be applied to generators. I have less of an idea on whether we can change that behavior... |
18:05 | <shu> | It also seems like we should recommend having |
18:06 | <shu> | (we have a canonical map that's the same as if you wrote an object literal {value, done} and check against that) |
18:06 | <keith_miller> | Gotcha, I think we treat them the same as any other IC |
18:07 | <shu> | oh in user code we treat them the same as any other IC |
18:07 | <shu> | but in our built-ins we have all these checks |
18:07 | <keith_miller> | Ah ok |
18:18 | <bakkot> | It would be pretty weird, conceptually, for generators and built-in iterators to re-use their result object for each yielded value.... but I would be kind of surprised if it actually breaks anything? Holding onto the { done, value } pair is a very strange thing to do |
18:28 | <keith_miller> | That's kinda why I was thinking that the iterator would return itself and have own done /value because it feels conceptually less weird but I'll take either solution. |
18:40 | <littledan> | a lot of good points have been made. I think it's important to proceed a bit cautiously, at the risk of overcorrecting with solutions to non-problems. in other words, I am a lot more interested in solving for things like "what should delegates/IEs do when creating a proposal repo" and not as much in more abstract things like "what is the meaning of stage 0" |
18:41 | <littledan> | for example, if we added entrance criteria for stage 0, such as "there must be a champion", how is this valuable or materially different than the status quo? a champion is needed for the proposal to progress to stage 1 (and beyond) anyway. so adding this (or probably any entrance criteria) to stage 0 doesn't help anything, and it introduces a new problem: what to call non-stage 0 proposals. you effectively introduce a new stage, and to what end? |
18:42 | <littledan> | I agree completely; that's the question from Tab that started all of this! I think I focused on less important things above, got off on a tangent. |
18:50 | <Chris de Almeida> | you're absolutely right; we should set those expectations |
18:51 | <Chris de Almeida> | sometimes we've set them already and short-term memories get the best of us.. like I'm realizing and thinking to myself "why are we talking about champions at stage 0" when a champion is a clear entrance criterion for stage 1 and is well-documented |
18:52 | <littledan> | multiple people said above they believed it was self-evident that there is that requirement. While this issue isn't very important, it might be a nice easy one to start with as we untangle differing beliefs about what our process is. |
18:54 | <Chris de Almeida> | certainly. in matters where we have a Source of Truth™️, we can reference that when people have conflicting views. that should resolve. if people want to change what the process/guidance is, that's ok too, but that should at least clear up what the current state is |
20:26 | <shu> | man, this language |
20:27 | <shu> | %TypedArray%.from(array) on JS arrays caches the entire input array ahead of time because it treats it as an iterable %TypedArray%.set(array) on JS arrays does not cache the input array ahead of time because it treats it as an array-like |
20:43 | <TabAtkins> | for example, if we added entrance criteria for stage 0, such as "there must be a champion", how is this valuable or materially different than the status quo? a champion is needed for the proposal to progress to stage 1 (and beyond) anyway. so adding this (or probably any entrance criteria) to stage 0 doesn't help anything, and it introduces a new problem: what to call non-stage 0 proposals. you effectively introduce a new stage, and to what end? tc39 repo" question, which was unclear and is a little inconsistent currently. |
20:44 | <TabAtkins> | I think a rule of "it's definitely moved when the proposal is stage 1; it can be moved, at the champion's discretion, when a stage 0 proposal is intended for presentation at a meeting" sounds reasoanble and appears to match consensus? |
20:44 | <TabAtkins> | Tho also the criteria listed in https://github.com/tc39/proposals/blob/main/stage-0-proposals.md are stricter than "any idea you write down". |
20:45 | <Chris de Almeida> | Tho also the criteria listed in https://github.com/tc39/proposals/blob/main/stage-0-proposals.md are stricter than "any idea you write down". |
20:47 | <TabAtkins> | Ah, that sounds reasonable, I can PR some wording |
21:14 | <littledan> | I think a rule of "it's definitely moved when the proposal is stage 1; it can be moved, at the champion's discretion, when a stage 0 proposal is intended for presentation at a meeting" sounds reasoanble and appears to match consensus? |
21:15 | <TabAtkins> | This would also be fine with me (but we do have some Stage 0s in the org currently, so they'd have to eitehr be ejected or grandfathered) |
21:15 | <littledan> | This would also be fine with me (but we do have some Stage 0s in the org currently, so they'd have to eitehr be ejected or grandfathered) |
21:15 | <ljharb> | i'm pretty sure disallowing stage 0's in the org would not be inline with ecma's archival desires |
21:15 | <ljharb> | if anything i'd think they'd want all stage 0's to be in the org |
21:16 | <TabAtkins> | Well, not all, random people propose "stage 0" things as well. |
21:16 | <TabAtkins> | Before ever getting a champion. |
21:16 | <littledan> | i'm pretty sure disallowing stage 0's in the org would not be inline with ecma's archival desires |
21:17 | <littledan> | Well, not all, random people propose "stage 0" things as well. |
21:20 | <Chris de Almeida> | Could you elaborate on this? Aki is working on improving our archival stuff so collecting all requirements will be useful. |
21:20 | <Chris de Almeida> | having it in the org isn't a panacea, but it goes a long way |
21:22 | <littledan> | Interesting, I don’t think we have been consistent about transferring all presented proposals, have we been? |
21:22 | <TabAtkins> | No, I don't think so - the list of Stage 0 proposals, at least, only has one presented Stage 0 in the org; the rest are still in personal repos. |
21:25 | <littledan> | What if we add all presented repos to a list to be archived? |
21:25 | <littledan> | Which sort of tampering are we concerned about? |
21:26 | <ljharb> | someone can delete their github account, for example |
21:26 | <ljharb> | or a repo |
21:26 | <littledan> | Right, this is the point of archiving |
21:27 | <littledan> | I don’t know if we have a functional archival system at the moment, but if we did, what would we want it to do? |
21:27 | <ljharb> | we certainly haven't transferred everything that's been presented and not gotten stage 1, but that'd be a good thing to do. |
21:28 | <ljharb> | clone all the repos, back up all the issue and PR and wiki content, i suppose? like a "web archive" of it all |
21:28 | <littledan> | Are there reasons in addition to archival why we should do this transfer? |
21:28 | <ljharb> | it's better for history and research and whatnot. |
21:28 | <ljharb> | but that's why it's been ad hoc, because it's depended on the circumstances. |
21:28 | <ljharb> | (which has been fine so far) |
21:28 | <littledan> | clone all the repos, back up all the issue and PR and wiki content, i suppose? like a "web archive" of it all |
21:29 | <ljharb> | either way, "one person asked a question that generated discussion" isn't necessarily sufficient reason to do a bunch of work documenting something :-) (but it's fine if we want to do that) |
21:31 | <littledan> | it's better for history and research and whatnot. |
21:32 | <ljharb> | oh sure, fair |
21:32 | <ljharb> | then yeah that's the main reason i guess |
21:34 | <littledan> | Are there reasons in addition to archival why we should do this transfer? |
21:43 | <Chris de Almeida> | Any other reasons? Anybody? |
22:05 | <littledan> | Yes |
23:48 | <ljharb> | what are the reasons why they shouldn't be? |
23:51 | <Michael Ficarra> | if they haven't been presented to TC39, they're effectively unrelated to our work |
23:52 | <Michael Ficarra> | they shouldn't be given an air of legitimacy |
23:52 | <Michael Ficarra> | can any old rando online make a repo, write "TC39 sux" in the README, and ask us to move it into our org? |
23:52 | <Michael Ficarra> | I would hope not |
23:53 | <bakkot> | prior to being approved by the committee for stage 1, it's one person's proposal, not TC39's proposal |
23:53 | <Michael Ficarra> | also Ecma doesn't care about archival of stuff that basically only happened in someone's head |
23:54 | <Michael Ficarra> | they care about archival of materials related to our work |