Commit d44a85b2 authored by Michael Snoyman's avatar Michael Snoyman
Browse files

Merge branch 'wow-voting' into 'main'

Add rules around voting

See merge request hf/meta!18
parents 671ac2ac 1b6ea13e
......@@ -486,3 +486,212 @@ Committee itself.
*Charter template.* There is a [template](charter-template.md) we can use to
create Committee charters.
# 9. Voting
This section of our ways of working lays out the details of how our voting processes work.
## 9.1. Preamble
### 9.1.1. Principles
The Haskell Foundation Board seeks to lead the Haskell community forward
through active debate and discussion, where all (both Board members and
members of the Haskell community more broadly) feel included and have a voice.
We expect that these discussions will usually lead to decisions that can be
taken by consensus, and barely need a vote.
It is important, however, to know what decisions are on the table for debate;
to know who is responsible for taking those decisions; and to ensure that
decisions are (after suitable debate) actually taken in a timely way. This
chapter therefore lays out the way in which the Board takes decisions. Its
formality is for the purposes of clarity and precision. We expect that in most
cases the decision will emerge naturally from debate.
1. The Board makes all of its binding decisions through voting. The votes are recorded and, subject to our
transparency policy, published by the Secretary.
1. Our approach to voting must allow for quick decision making
while allowing for the necessary scrutiny if required.
1. We encourage debate of all issues subject to voting. This is to make sure that
all votes represent fully informed opinions and that all members of the board are engaged and feel
ownership for all decisions of the board.
1. The Board may delegate powers/decisions to a sub-committee, which itself takes formal decisions through voting.
1. Over time, the audit log of past votes will serve as a system of "case law" that will guide us to select
the proper attributes (see section 9.2.3) of a vote at hand. We bootstrap this with section 9.6.
### 9.1.2. Approach
1. This chapter of our ways of working lays out the definition of a *vote*, with many
attributes (see section 9.2.3)
that describe how the vote should play out. However, it does *not* describe
how these attributes might be amended after a vote is introduced. This is intentional:
while amending a vote's attributes (including, for example, changing its deadline) can
be impactful on how the Board makes decisions, finely detailing these rules would lead
us to many dark corners. (Do we need a vote to conclude debate? Would we need a quorum
in order to extend a deadline when not enough people have shown up in a meeting?) We
have decided that it is better to leave these details unspecified and to rely on common
sense and a spirit of shared enterprise (that is, a non-adversarial Board) to work
these out as necessary.
1. In practice, details of a vote can be amended by the Chair of the Board/a Committee. These
amendments should be communicated clearly and in a timely fashion and should follow
the general will of the Board (or Committee). A Chair who abuses this power should have
their leadership called into question.
1. In keeping with the Principles outlined above, we expect that voters will sometimes
need to request more time and/or wish to make sure members absent at a particular
meeting are included. It is expected that the Chair be sympathetic to such requests,
while balancing the needs for quick decision-making where time is of the essence.
## 9.2. Definitions
### 9.2.1. Groups
1. A *group* $`G`$ is a set of people, typically the Board or a subset of the Board. An individual may be a
*member* of a group, and a group has a natural-number *size*, written $`|G|`$.
1. A *simple majority* of a group $`G`$ is a subset $`S`$ of $`G`$ such that $`|S| > |G| / 2`$. Note that a
simple majority is a strict greater-than: a group of size 10 has a simple majority of size 6 or greater.
1. A *two-thirds majority* of a group $`G`$ is a subset $`S`$ of $`G`$ such that
$`|S| \geq |G| * \frac{2}{3}`$. Note that a two-thirds majority is defined using greater-than-or-equals:
a group of size 9 has a two-thirds majority of size 6 or greater.
### 9.2.2. Sub-groups
This subsection lays out the various subset groups that are relevant for a given vote.
1. The *voting group* of a vote is the group of people who can participate in a vote. A voting group is
often the entire Board or some Committee of the Board.
1. The *eligible group* of a vote is a subset of the *voting group* that is eligible to vote on a particular
topic. A member of the voting group might be ineligible because of a conflict of interest or other reason
for recusal. Eligibility is not an attribute of the vote (that is, a vote does not define its eligible
group), but instead should be considered a property of the individual members of the voting group. We
expect members to proactively recuse themselves from a vote if appropriate.
Absent other information, we assume that all members of a voting group are eligible, and thus that the
eligible group is the same as the voting group.
1. The *participating group* of a vote is a subset of the *eligible group* of that vote that submits a vote.
A member of the *participating group* may submit the special vote **abstain**, which allows that member
to be in the *participating group* without casting a vote.
1. The *decision group* of a vote is a subset of the *participating group* that does not submit the special
vote **abstain**.
### 9.2.3 Vote Attributes
A *vote* is a recorded, archived act of communication in an official channel. A vote has several
*attributes*, defined below: *voting group*, *quorum level*, *choices*, *method*, *transparency
level*, *deadline*, and *tabulator*.
1. The *voting group*, as defined in section 9.2.2.
1. The *quorum level* of a vote is the proportion of the *eligible group* for a vote that must be in the
*participating group* in order for the vote to be legitimate. A typical quorum level is *simple majority*.
1. The *choices* of a vote are a set of options that are to be considered by voters. Examples
include {"yes", "no"} and the set of people nominated for a committee.
1. The *method* of a vote is how the vote communication takes place.
This attribute is subject to change in case of escalations.
1. The *transparency level* of a vote describes who may access what information about individuals' selections
during a vote. Typical transparency levels include public (all individuals' votes are known to the wider
public), private (individuals' votes are known within the *eligible group* but not beyond it), and anonymous
(one person receives the votes and tabulates a result, but does not share individuals' selections).
1. The *deadline* of a vote is an event which marks the end of the voting process.
This attribute is subject to change in case of escalations.
1. The *tabulator* of a vote is a member of the vote's *eligible group* who is responsible for tallying up
the votes and determining the result of a vote. Tabulation is formulaic and does not involve
decision-making; the motivation for including a *tabulator* in the attributes of a vote is merely to
clarify who is responsible for completing this work.
## 9.3. Voting
1. All individuals in a voting group must be given advanced notice of an upcoming vote at least one week
before the deadline of the vote. This notice happens in an official communication channel, typically
email or email notification (though a minuted mention in meeting is acceptable).
1. All members of the *eligible group* are invited to submit their vote by the method of the vote.
The special vote **abstain** is possible.
1. The form of the submission depends on the *choices* of the vote
1. For votes whose choices are "yes"/"no", the *submission* is one of the two choices.
1. For votes whose choices are other than "yes"/"no", the *submission* is a ranked ordering of the
*choices*. The submission may denote some options as equivalent. Any choice not included in a ranked
ordering is considered less desirable than all included choices. For example, if the choices are A, B,
C, and D, then valid votes include:
* A > B > C > D
* B > A > D > C
* A > C = D > B (C and D are equally attractive here)
* A > B (this is equivalent to A > B > C = D)
* D (this is equivalent to D > A = B = C)
* A = B = C = D (this is equivalent to **abstain**)
1. Members may submit multiple votes; only the last submission counts. This allows for members to change their
mind.
1. After the vote's *deadline* has passed, no more submissions will be accepted.
## 9.4. Vote Results
All votes lead to a *result*, which is a binding decision of the *voting group*.
1. For a vote *result* to be tabulated and recorded, the *participating group* must be at least at the
*quorum level* of the *eligible group*.
1. After a vote's *deadline* has passed, the *tabulator* is responsible for determining the result:
1. The tabulator gathers the last vote each member of the *participating group* has submitted.
1. All **abstain** votes are discarded. (The **abstain** votes are used only distinguish members of the
*participating group* from the non-participating members of the *eligible group*. This may be
important for reaching the *quorum level* of the vote.)
1. The determination of the *result* depends on the choices of the vote
1. For votes whose choices are "yes"/"no", the vote has a *threshold*. The *threshold* of a vote is
the *quorum level* of the *decision group*. If the number of "yes" votes meets or exceeds the
*threshold*, the result of the vote is "yes". If the number of "yes" votes does not meet the
*threshold* then the result is "no".
1. For votes whose choices are other than "yes"/"no", the *result* is a ranked ordering of the *choices*
of the vote. The tabulator runs the [Shulze method](https://en.wikipedia.org/wiki/Schulze_method), for
example by this [online implementation](https://www.condorcet.vote/), on the votes. The output of the
Shulze method is the *result* of the vote.
1. The tabulator announces the result to the *voting group* via an official communication, such as email or a
minuted announcement in a meeting. This result is then the official decision of the *voting group*.
## 9.5 Examples
### 9.5.1. Example "yes"/"no" vote
1. Let's say there is a "yes"/"no" vote (choices)
1. The vote requires a simple majority (quorum level).
1. The board consists of 14 members (voting group).
1. One of them has a conflict of interest (size of eligible group is 13).
1. Out of those, 2 don't show up to the board meeting where the vote is scheduled to take place
(size of participating group is 11, which is above the quorum level of the eligible group).
1. 3 members abstain from voting (size of decision group is 8, the threshold is the simple majority of 8
which is 5).
1. 6 members vote for "yes", two vote for "no" (vote result is "yes").
## 9.6. Vote Descriptions
This section describes typical attributes for votes.
1. Operational vote, used to accept the formation of a committee
1. The *voting group* is the entire Board.
1. The *quorum level* is *simple majority*.
1. The *choices* are "yes"/"no".
1. The *method* is indicated in the vote announcement.
1. The *transparency level* is public.
1. The *deadline* is one week.
1. The *tabulator* is the Secretary of the Board, unless the Secretary is not in the *eligible group*.
In that case, the Vice Secretary is the *tabulator*. If neither the Secretary nor the Vice Secretary
is eligible, then the vote organizer must name another *tabulator*.
1. Two-thirds vote, used for more contentious/long-lasting decisions, such as functional amendments to the
bylaws/ways of working or the ejection of a board member.
1. The *voting group* is the entire Board.
1. The *quorum level* is *two-thirds majority*.
1. The *choices* are "yes"/"no".
1. The *method* is indicated in the vote announcement.
1. The *transparency level* is public.
1. The *deadline* is two weeks.
1. The *tabulator* is chosen as done for the operational vote.
1. *Board selection vote*, used to select new members to join the Board, in accordance with our
[chapter on the lifecycle of the Board](https://gitlab.haskell.org/hf/meta/-/blob/main/board.md#7-board-membership-lifecycle).
1. The *voting group* is the non-expiring members of the Board.
1. The *quorum level* is *simple majority*.
1. The *choices* are the set of applicants plus the special choice **"That's it"**.
1. The *method* is by off-list email.
1. The *transparency* level is private.
1. The *deadline* is April 1st of every year.
1. The *tabulator* is the individual responsible for running the Board selection process.
These rules are meant to agree with the rules in the section on the Board's lifecycle; they are
included here to show how our general scheme of classifying votes scales to this use-case.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment