loopbackio / loopbackio/loopback-governance

Settle on a voting solution

Open
#33 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
No language data
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Currently, there's no documented consensus on _how_ a vote among the LoopBack TSC members should occur (i.e. how to cast a vote). In the past, we have used GitHub Teams Discussions and GitHub Issues Reactions. However, non of these meet the following requirements:

- **Authenticity:** The authorisation to vote is only restricted by GitHub authentication. Requiring a PGP-signed Git Commit may be more resilient against account takeovers.
- **Secrecy during voting process:** The votes are visible to other TSC members, which may sway their own votes.
- **Immutability:** The votes can be modified after the voting itself has concluded. This is in part because the TSC members are delegated the GitHub Organisation Admin role, which means that locking a GitHub Issue does not prevent votes changes.
- **Vote tabulation UX:** For GitHub Issue-based voting, there's nothing preventing non-TSC members from "casting a vote". This mean that tabulation would require filtering through the noise (e.g. through the use of the GitHub API).

This issue is to aid in discussing and deciding on a more robust solution.

## Prior art

- [Caritat](https://github.com/stduhpf/caritat)
- Used by the Node.js TSC for recent votes (e.g. https://github.com/nodejs/TSC/pull/1206) Ongoing discussion: https://github.com/nodejs/TSC/issues/1165
- Git-based workflow
- Does not require new infrastructure
- [CIVC](http://civs.cs.cornell.edu/) ([alt. website](https://civs1.civs.us/))
- Web-based workflow
- Third-party hosted websites available (see links above); Self-hosted also an option.
- Used for Cloud Foundry TOC elections
- Prev. used for Kubernetes elections (prior 2021).
- [Elekto](https://elekto.dev/)
- Web-based workflow
- Requires self-hosting
- Intended to be a replacement for CIVC
- Currently being tabled by Cloud Foundry for their upcoming TOC election: https://github.com/cloudfoundry/community/pull/282
- Used in Kubernetes 2021 elections: https://github.com/kubernetes/community/blob/9cc5dc80174d04a7d05f4c4fb387f9efea167c5b/events/elections/2021/README.md
K8's problem statement: https://github.com/kubernetes/community/issues/5096
- Google Forms (or equivalent)
- Web-based workflow
- Used in OpenJS Foundation Board Seat Election (e.g. https://github.com/openjs-foundation/cross-project-council/issues/859)
- [Codeberg voting system](https://codeberg.org/Codeberg-e.V./codeberg_voting_system)
- Sends voting PIN via email
- Used by Codeberg e.V.: https://codeberg.org/Codeberg/Contributing/issues/58

All of the listed solutions utilise the Condorcet election method.

Except Caritat, all of the solutions do not provide any method to validate the authenticity of the results.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the requirements in issue #33 and comparing the listed prior-art systems: Caritat, CIVC, Elekto, Google Forms, and the Codeberg voting system. The work is done when the TSC reaches and documents a decision on a voting solution that addresses authenticity, secrecy, immutability, and vote-tabulation UX.

Written by the indexing model from the issue text.

Assessment

Domain
documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.