-
Notifications
You must be signed in to change notification settings - Fork 134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Vote on integration of Yarn. #1012
Comments
These options look good. I'm +1 on moving to vote |
Moving to a vote and the set of options look good to me, though "land ABC" imo should be replaced with "target landing ABC", so that e.g. voting for 1-4 shouldn't imply an approval of the current state of those PRs without comments or be treated as a code review. |
Also, perhaps an explicit abstain option could be useful. |
+1 on moving to vote |
Would this issue be suitable for a Condorcet? That would allow TSC members to express more precision what they want for Node.js, and it's probably more "fair" than having to chose only one option. For a Condorcet vote, I think the options could be (in alphabetical order):
|
Is “remove npm” even on the table? |
remove npm was not on the table during the last TSC meeting. |
Maybe I'm not wording it correctly, I mean My point was to suggest using Condorcet for this vote, not removing npm. |
+1 on condorcet. |
This comment has been minimized.
This comment has been minimized.
Condorcet is not a single method but a group of similar methods. More specifically: given N options, start with ranking each option on a relative preference scale (1-N, allowing duplicates). While there are methods that e.g. disallow duplicate rankings (simple ranking) in the voting process, there seems to be little benefits of that and that just complicates the decision process. |
This comment has been minimized.
This comment has been minimized.
I'm wondering if Condorcet is going to let TSE members better express their opinion? It's going to take more work to set up/etc. so want to be sure pushing out the vote to do that is beneficial. In particular I'm not sure how it handles the "but only if X" does not win. |
@ChALkeR did you come across the use of Condorcet for non-elections ? I see most articles reference electing people versus making a decision? |
I've seen used to pick a name. It's just a voting system, I don't think there is any difference if it's used for electing people vs choosing ideas.
From what I've read, it has some significant advantages including allow voter to express their opinion (instead of going all in for only 1 proposition, you rank them all, so you can better express where you stand on the issue), and you can add "but only if X" propositions to the list without splitting the votes. I reckon it does take more work to set it up, let me know if I can help, I think it would be useful to have some tooling to assist with that if we haven't a Condorcet voting system already (even if we end up not using it for this particular vote). |
In our last vote (Promise unhandled rejections) we used San Francisco RCV via OpaVote. Not saying we must use it again but it's a method we successfully used in the past that allows TSC members to express the full range of their choices instead of picking only one. |
I liked that |
@mmarchini, I like re-using the same approach. We should probably document a standard way to setup the vote and what tool to use so that we don't have to think about it each time. |
@mhdawson I have been always in favor of ranking each option instead of just selecting a single option (when we get to vote, which I prefer we don't). That collects more data about preferences on a single run, and can be used to run better choices than just a simple majority. Simply picking the most "popular" option from a "pick a single option" vote can sometimes fail badly, and the Condorcet wiki page has examples of that. Condorcet has it's pitfails too, so in case if the vote is done in a small group and in good faith and voters are able to use at least somewhat similar scales (which is hard), it might be better to simply maximize the preference score. E.g., for the utility estimation table:
Given that the scale is (approximately) the same for each voter, option C is the least bad one in the example above. Now, the hard part of the utility maximizer approach is that everyone should use the same scale, otherwise summing "utility" does not have any good meaning attached to it. This is close to how the TSC time picker works, btw (but it has some further logic as the total participation is not the only factor). I'm fine with Condorcet, but I would prefer us to collect the data in a form where each option is individually ranked on some scale (which should be at least 1-N for the purpose of Condorcet, but 0-20 might be better). |
@ChALkeR any thoughts or objections on the method we used for unhandled rejections vote (San Francisco RCV)? |
Hi folks, I'm not on TSC or too deeply involved with Node, so feel free to ignore... but I'm a bit of a voting systems nerd. I'd be 👍 for either RCV or Condorcet. (I also like Approval voting, which is "Vote 'yes' on however many options you approve of" -- "pick n" instead of "pick 1".) But ultimately I support anything better than "pick 1". Based on some voting systems nerd stuff I've been following (
There is also a consensus that "Anything better than pick-one/FPTP" is an important improvement. Debates about which method is best seem to go on forever, though, and picking something is important. So I'd be 👍 for either RCV or Condorcet as were mentioned earlier in the thread, or shout out to my personal favorite, Approval voting. (I also support "getting on with it," and I don't mean at all to derail, so I'm 👎 on accidentally derailing the thread, if possible.) |
@mmarchini re: SF RCV — basically the same problem as with Condorcet. If variant X is significantly worse than Y for a low subset of voters and variant X is slightly better than Y for a large subset of voters, X will still win. E.g.:
X has the majority with 3/5 and beats Y (even in RCV or Condorcet), but it has total utility of 325 vs Y which has 430. I would prefer if we collected the data in a form of "rate each option from 0 to 20" (or from 0 to 100), which can be later analyzed in various ways, as it directly provides enough data to get build e.g. the preference order. The tricky part is how to define a scale, and it should be defined to mean something. E.g. in order to run e.g. RCV, we need to specify which cutoff counts as "mostly in favor". |
I think there are diminishing returns to introducing more nuanced ranked voting than RCV. I'm happy to go along with whatever method is chosen, but the more complex the method, the harder it will be to get people to participate. What I really want to avoid, though, is us taking weeks to discuss and select a voting method. There seems to be decent support for RCV and I think we should go for it. Anything involving scales is going to require a lot of thinking about getting it similar/identical for everyone. That seems both difficult and with a high risk of getting it wrong. For that reason, I'm +1 on RCV. It's not that the Condorcet and rate options ideas are wrong. It's just that there's a cost/downside to going down that path at this time, and my judgment is that it's not worth it. That said, what might be worth it is trying to figure out a voting system that will work for us generally and document it. If we don't do that, it will probably be RCV by default. If a better process is part of our documentation, then we don't have to discuss it every time a vote comes up (which fortunately is not that frequently). |
I propose we just use RCV for this vote and try to schedule it for next week. +1 on documenting what we'd like to do longer term but I agree with @Trott that we should avoid delaying the current vote. Objections? The other question is whether we should include options with respect to npm in the vote? If we did that I think questions could just be:
I know there are other combinations, but I don't think we've discussed them as options. If you think we need other options please comment to that effect. If we don't include the question on npm it could be:
|
Also I volunteer to create the voting on OpaVote again, unless someone else wants to do it. |
@mhdawson again, is removing npm supposed to even be on the table? #1012 (comment) suggests it is explicitly not. |
We should go with the simple three options rather than the five. If we add corepack, a decision can be made at a later date to install npm from a shim rather than bundling npm, but there's no need to make that decision either way at this time (although I'm sure many have strong opinions already, which is fine). Adding corepack could be a semver minor, but moving npm from bundled to installed-with-corepack would absolutely be a major, so treating the questions separately seems reasonable to me. This also allows us (if we go the corepack route) to see how well corepack works for a large number of users before deciding if it's appropriate to try to use it for npm. More information before making a decision is good. |
I can't imagine anyone on the TSC is for removing npm. Moving npm from bundled to distributed via corepack? Eh, maybe (although maybe corepack already depends on npm in which case we should keep bundling npm). But flat out removal of npm? Putting that as an option sends the signal that it's a realistic outcome of this vote when it is not. Let's not give people an excuse to freak out. |
I don't want to get too off topic here, but how do you see this working in absence of something like corepack? People would have to install a package manager separately if they needed it? Sort of the way they install nvm if they need it (with a shell script)? |
Not a conversation I'm going to have here and not relevant to the vote. Catch me offline sometime ;-) |
@mmarchini thanks for volunteering to put together the vote, greatly appreciate that! |
@ljharb my preference is that we don't include it, but did not want to ignore the question posted earlier so asked the question to the TSC members. Based on @jasnell's input I suggest we go with: add corepack for the questions. This keeps us to the point of original question about landing yarn, and as @Trott says keeps it to an outcome that is SemVer minor and easier to implement. |
due to my employment with github and work I do on npm I'll be abstaining from this vote. I do request if there is to be any votes that include removing npm, or distributing it via core pack, that the npm team be consulted on the decision and be given the opportunity to review the options and propose solutions before a vote. It doesn't seem like voting on removal of npm is on the table, but if we want to continue to explore this option I think there is quite a bit of work to be done before we decide we need to vote on it. |
Fwiw, with the corepack option, it would need to be the npm team that implements the ability for corepack to install it, so that would never happen without direct involvement from npm. |
Quick question: are the newly nominated folks already onboarded or are we waiting on anything? Will they participate in the vote? If they are not, should we wait until they are onboarded before voting? |
Vote link sent to @nodejs/tsc members via email listed on https://github.com/nodejs/node#tsc-technical-steering-committee. If you didn't receive an email, please let me know and I'll send you a code to vote. Being a free vote session on OpaVote means we have 7 days to finish the vote, so please vote ASAP. If you are going to abstain, please vote without selecting any options so we know you're aware of the vote. I'll try to send daily emails to members who didn't vote yet to make sure everyone has a chance to vote. |
Daily update: 14 voted so far, 8 remaining. |
Daily update: 17 voted, 5 remaining. |
This is hopefully obvious and may already be covered above somewhere that I'm not seeing in a quick skim, but I want to make sure we all agree that a vote for including corepack or bundling yarn is not a vote for any particular implementation. For example, hypothetically, I may be in favor of shipping corepack, but only if we can do it in a way that does not change anything for existing npm users--in other words, it can't introduce any additional friction/burden for existing users and CI automation and whatever else. So I might be in favor of corepack but opposed to a specific PR that adds it. |
Daily update: 20 voted, 2 remaining. |
Daily update: 21 voted, 1 remaining. |
@Trott to confirm from the minutes of the last TSC meeting:
|
Still 1 remaining. I sent a final reminder to them and will close the vote in 24 hours. Unfortunately I don't know if their email is up to date on our mailing list (see #1022) and I don't want to ping them directly here without their consent (but I also can't reach them anywhere else). So I'm going to cc @nodejs/tsc once more just in case |
Vote is closed. Winner is "add corepack" with 63.2% of votes as first choice. Ballouts have been shared with TSC members in private.
This means we're not moving forward with #37277. We can revisit nodejs/node#35398 to see if there are any technical concerns left before landing. |
@mmarchini thanks for running the vote and reporting the results. |
Commented on nodejs/node#37277 and closed it. Closing this issue as the vote is complete. |
In the TSC meeting today, those present agreed that we should call for a vote. This issue is to discuss with the full TSC since not all members were in attendance.
The issue driving the discussion is: deps: add Yarn 1.22.5 #37277 and the related issue is: nodejs/node#35398
You can catch up on the discussion in the minutes: #1011
My first cut at the options for the vote based on the discussion in meeting are:
The last 2 will both be counted together but would provide insight if a no vote is due to an objection or a lack of information (since it has been raise that more info may be necessary to make a good decision).
@nodejs/tsc please review and indicate if there are any objections to move to a vote, and suggestions for improvements/changes to the options suggested for the vote.
The text was updated successfully, but these errors were encountered: