-
Notifications
You must be signed in to change notification settings - Fork 6
feat(voting): add async voting process #160
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
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Michael Kantor <6068672+kantorcodes@users.noreply.github.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, thank you Michael!
proposals/tsc-voting-procedures.md
Outdated
To implement this proposal effectively, the following charter modification is recommended: | ||
|
||
### Meeting Attendance Requirement | ||
Modify section 3(ix)(d)(d) to reduce reinstatement requirement from two meetings to one: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this a concrete suggestion to change the charter?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, this was a suggestion from @popowycz: #159 (comment)
If we feel it doesn't belong in this document, we can remove it
Signed-off-by: Michael Kantor <6068672+kantorcodes@users.noreply.github.com>
Signed-off-by: Michael Kantor <6068672+kantorcodes@users.noreply.github.com>
### Step 4: Resolution | ||
|
||
- **Passing Threshold**: | ||
- Standard decisions: >50% of eligible voting members |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should sync with LF / LFDT and check if there are best practice documents for async voting. If yes we maybe can depend on those definitons. I will check that (maybe with @jwagantall )
Signed-off-by: Michael Kantor <6068672+kantorcodes@users.noreply.github.com>
Signed-off-by: Michael Kantor <6068672+kantorcodes@users.noreply.github.com>
|
||
## Voting Methods | ||
|
||
### 1. In-Meeting Votes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be good for in-meeting votes to also have a proposal that is merged into the repo. Whether it is in-person, or asynchronous, there would be a proposal. Often we've had a vote but in retrospect we have a different recollection of what we voted for. Having it written down plain, that we can go back to and reference, would be an improvement over our current way of working. It also means we have a very clear and publicly accessible record of what we voted for.
- When [quorum](https://github.com/hiero-ledger/hiero/blob/main/technical-charter.md?plain=1#L206) cannot be achieved in meetings | ||
- When voting must be completed before next TSC meeting | ||
- When a TSC member requests async voting due to inability to attend meeting | ||
- For charter-mandated votes requiring 2/3 majority [per Charter section 4. iii](https://github.com/hiero-ledger/hiero/blob/main/technical-charter.md?plain=1#L209) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we can have a 2/3 in-person vote as well (and maybe would prefer that over async for important votes, if possible).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
agree - we should be consistent so that one voting method is potentially not gamed
### Step 2: Proposal Creation | ||
|
||
1. Create a new file in `proposals/` directory following the template | ||
2. File naming convention: `YYYY-MM-DD-brief-description.md` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure the date is going to be useful here. What if we had a proposal number, similar to HIP numbers, where the number is the PR number. Then we get some kind of sequence?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That makes sense - let's leverage what can be implemented natively to reduce confusion with potentially arbitrary numbers, etc.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure the date is going to be useful here. What if we had a proposal number, similar to HIP numbers, where the number is the PR number. Then we get some kind of sequence?
My thinking on the date is that it would provide providence on when the proposal was issued in relation to the cadence of meetings without needing to look at the commit date. If we'd like to remove it, I'm indifferent. The only issue I would flag for using PR numbers is it is often a two-step process if you calculate the name of the proposal incorrectly through the PR.
Feel free to edit the PR with any combination of approaches here, as I'll be out of office next week and don't want to be a blocker here.
1. Create a new file in `proposals/` directory following the template | ||
2. File naming convention: `YYYY-MM-DD-brief-description.md` | ||
3. Open a Pull Request with the finalized proposal | ||
4. **Proposal is immutable once PR is opened** - no changes allowed |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we simply clear all approvals if the file is changed, would this also work?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we simply clear all approvals if the file is changed, would this also work?
I was looking at it from a strictly immutable lens, but of course the Github configuration settings could get in the way here. If discussion is required, it could happen outside of the PR per step 1. If changes are required that were not accurately reflected in the discussion it should require closing the PR and reopening a new one with a clear history / new proposal, similar to how decentralized governance works today commonly. Once you attribute your tokens to a YES or NO answer, you cannot change that vote.
Again, open to amendment / commits here, the initial flow is just a recommendation
- Charter-specified decisions: As defined in charter (e.g., 2/3 for license exceptions) | ||
- **Early Resolution**: Vote concludes immediately when: | ||
- More than 50% of eligible members vote "Yes" (proposal passes) | ||
- More than 50% of eligible members vote "No" (proposal fails) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we vote "no" by leaving a comment on the PR?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we vote "no" by leaving a comment on the PR?
I like that approach, and good nudge to have that documented.
### Active Voting Members | ||
|
||
- All TSC members listed in README.md | ||
- Have not missed the required number of consecutive TSC meetings defined in the [charter](https://github.com/hiero-ledger/hiero/blob/main/technical-charter.md?plain=1#L171) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will not be needed if we modify the charter to eliminate this requirement
|
||
### Meeting Attendance Requirement | ||
|
||
Modify section 3(ix)(d)(d) to reduce reinstatement requirement from two meetings to one: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What if we simply removed the "attend the meeting" requirement for voting eligibility. Then we wouldn't have to track attendance for voting purposes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think @popowycz mentioned that it was added to help create incentives on participation, I'm personally indifferent either way
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
He's right, that was the original intent. The concern expressed at the time was that people would not participate in the meetings, but then still vote, and having participation is healthy for an open source project.
On the downside, it is a lot of overhead to maintain the list of who can vote when, and can cause us to take incorrect votes if we get it wrong.
There is a different control though -- if a TSC member becomes inactive, we can vote them out. We don't want MIA members, but maybe penalizing through voting is too cumbersome a mechanism. Maybe if we're having a problem with participation, we ask them to either participate or step aside so new people who are eager to participate can join, and if they refuse and still don't step up, then we can vote them out for failure to fulfill their responsibilities.
Or maybe there is a different incentive mechanism that doesn't make the voting process so cumbersome. I'm not sure.
Signed-off-by: Michael Kantor <6068672+kantorcodes@users.noreply.github.com>
Signed-off-by: Michael Kantor <6068672+kantorcodes@users.noreply.github.com>
I’d like to add a few comments. While I support the addition of asynchronous voting, since it significantly speeds up processes that require TSC approval, I do have concerns about the proposed charter changes. I haven’t yet had a chance to connect with Hart or Daniela, but I’d like to get their perspectives as well, especially since some of these changes could have legal implications. It’s important we’re on solid ground here. If we loosen our governance requirements and something goes wrong, it could reflect poorly on LFDT. Another point I’d like to raise is regarding TSC member inactivity. Diane and I are currently working on a way to better track attendance and ensure accountability. I understand this might come across as a bit strict, but I believe it’s necessary. Encouraging participation is important, but we also need to be able to show that members are actively engaged. While our TSC is still small, establishing this accountability now will be valuable as the project grows and brings in more members. Finally, I want to +1 @rbair23 suggestion about recording voted items as commits in the repo. This would make it much easier to locate decisions without having to sift through meeting recordings. Thanks again for putting this together! |
FYI on the charter changes. |
In today's TSC there was a discussion regarding tracking attendance. The idea is to help making attendance tracking and eligibility simpler and easier. We are going to continue discussing this further in the community call. I will comment back on anything that comes out from that conversation. |
Summary
This PR establishes standardized asynchronous voting procedures for the Hiero TSC to address quorum challenges and improve decision-making efficiency.
Related Issue
Closes #159
Changes
proposals/tsc-voting-procedures.md
tsc-voting-eligibility.md
Key Features
🗳️ Voting Methods
⏱️ Process Flow
📊 Transparency
Charter Considerations
The proposal includes recommended charter modifications to:
Next Steps
If approved, this proposal will:
proposals/
directory structure