Skip to content
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

Redefine quorum to allow all to vote #820

Merged
merged 4 commits into from
Dec 15, 2021
Merged

Redefine quorum to allow all to vote #820

merged 4 commits into from
Dec 15, 2021

Conversation

leebyron
Copy link
Collaborator

@leebyron leebyron commented Dec 10, 2021

This is an alternative proposal to #818 which, while more complicated, is a better fit for the goals and principles, namely:

  • All TSC members should have the capacity to vote, regardless of what we're voting on.
  • TSC votes should remain efficient and resilient to any member not participating.

To do this, I'm proposing changing the way we vote by replacing the concept of a "voting member" with a "quorum":

  • A "quorum" is the total number of votes needed for a vote to be considered valid, and this proposes defining that in a similar way we used to define voting members, but simplifies this to "one of three" instead of "two of five".

  • Removes the concept of a "voting member" - this means all members are always eligible to vote, even if they do not count towards quorum.

@@ -153,7 +153,13 @@ To provide consistency TSC elections will begin in 2021 for the 2022 term. Prior
| 2023 - 2024 | Nov 1, 2022 | Dec 1, 2022 | Jan 1, 2023 | Dec 31, 2024 |
| 2024 - 2025 | Nov 1, 2023 | Dec 1, 2023 | Jan 1, 2024 | Dec 31, 2025 |

### Voting process
#### Resignation or removal of TSC members
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is just a move to keep this section together and focused

@leebyron leebyron force-pushed the tsc-voting-alt branch 7 times, most recently from a5bd055 to e7271e2 Compare December 10, 2021 02:19
@leebyron leebyron requested review from brianwarner and a team December 10, 2021 02:59
Copy link

@nyteshade nyteshade left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don’t have any issues with these changes. Looks good to me.

mjmahone
mjmahone previously approved these changes Dec 10, 2021
GraphQL-TSC.md Outdated Show resolved Hide resolved
GraphQL-TSC.md Outdated Show resolved Hide resolved
@leebyron
Copy link
Collaborator Author

Ok @graphql/tsc - good feedback, I've simplified this by counting a majority relative to votes rather than the harder to explain union of attending/voting. This has a minor downside of potentially allowing a vote by a non-representative majority, but has the benefits of being way easier to explain and aligns well with the goal of keeping elections efficient and avoiding deadlocks.

@leebyron leebyron force-pushed the tsc-voting-alt branch 3 times, most recently from c664678 to f71d961 Compare December 10, 2021 20:51
@leebyron
Copy link
Collaborator Author

@graphql/tsc please take another look since this is materially different (and hopefully simpler/better)

This is an alternative proposal to #818 which is a better fit for the goals and principles, namely:

* All TSC members should have the capacity to vote, regardless of what we're voting on.
* TSC votes should remain efficient and resilient to any member not participating.

To do this, I'm proposing changing the way we vote by replacing the concept of a "voting member" with a "quorum":

* A "quorum" is the total number of votes needed for a vote to be considered valid, and this proposes defining that in a similar way we used to define voting members, but *simplifies this to "one of three" instead of "two of five"*.

* Removes the concept of a "voting member" - this means all members are always eligable to vote, even if they do not count towards quorum.
Copy link
Contributor

@mjmahone mjmahone left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is really well worded now, and is good documentation for new TSC members on what exactly is available for them: what their obligations are and what actions have which consequences. Thank you!

Copy link
Contributor

@brianwarner brianwarner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a novel way to approach this, but that's not a bad thing. I can appreciate that it allows groups to get decisions made quickly at small scale, but ensures TSC members can weigh in if needed.

Thinking about this from the shoes of someone who would be administering a vote, here's how I understand the process:

  1. How many TSC members count as "attending" members?
  2. What is the threshold of "attending" member ballots required to render this vote valid? (e.g., majority or supermajority)
  3. Have enough "attending" members voted to reach that threshold?
    1. If not, which "attending" members do we need to remind?
  4. Once the threshold of "attending" members has been met, could any additional votes change the outcome?
    1. If no, conclude the election.
    2. If yes, follow the procedures and deadlines outlined here.

LGTM.

@leebyron
Copy link
Collaborator Author

Exactly. In fact, I'll add these admin steps!

@leebyron leebyron force-pushed the tsc-voting-alt branch 5 times, most recently from e380ca1 to 82cfea2 Compare December 13, 2021 23:16
@brianwarner brianwarner self-requested a review December 14, 2021 23:04
Copy link
Contributor

@brianwarner brianwarner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding an explicit followup to the recent changes, these LGTM as well.

@brianwarner brianwarner requested a review from a team December 14, 2021 23:13
@schrockn
Copy link
Contributor

👍🏻

@dschafer
Copy link
Contributor

Looks good to me.

@leebyron
Copy link
Collaborator Author

Thanks for the careful read and great feedback everyone. If anyone spots any additional grammar/spelling/clarity improvements I'm happy to address those in a follow up

@leebyron leebyron merged commit ea2f3e8 into main Dec 15, 2021
@leebyron leebyron deleted the tsc-voting-alt branch December 15, 2021 18:09
Copy link
Member

@IvanGoncharov IvanGoncharov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGMT 👍

@schrockn schrockn self-requested a review December 15, 2021 20:10
Copy link
Contributor

@schrockn schrockn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved!

Copy link
Member

@benjie benjie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks solid in general, with the one caveat that it's not explicit what would happen if quorum were not reached during a TSC member election vote. I'm assuming the TSC seats would remain empty until a "valid" vote (a vote reaching quorum) takes place. This doesn't seem ideal, but I also don't think it's particularly likely, so I'm okay with it.

Approved.

@leebyron
Copy link
Collaborator Author

Yeah the two scenarios where a vote is not valid are:

Either: not enough people respond, in which case what you described is right, we pester people to vote to try not to create a off schedule problem, but not the end of the world if that happens.

or, you get enough intentional abstains that you cant actually reach quorum. In this case the vote dies on the vine. But there's a distinction between "we voted on this in the past and decided not to do this" vs "we tried to vote on this in the past, but didn't reach a conclusion at that time"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants