This document discusses the components of the Vote feature. This document does not attempt to describe in detail the various ways a vote can be configured. It primarily serves to document and explain concepts and definitions involved with the Vote feature.
This document will be updated over time to include additional details, updated information, or for clarification.
Table of contents
Polls vs. Referenda
In simple terms, a Vote is a vote. We call this feature Voat Votes and refer to it simply as Votes (which is entirely different from upvoats and downvoats… with an upvote here, and a downvote there, here a voat, there a vote, everywhere a Voat Vote.)
A Vote is made up of a series of Options. A Vote can have two or more Options. An Option is synonymous with a choice.
Outcomes are actions that can be attached to an Option. An Option can have zero or more Outcomes attached to it.
Examples of various Outcomes:
- Add Domain Ban
- Add Subverse Moderator
- Add Subverse Rule
- Add Subverse User Ban
- Remove Domain Ban
- Remove Subverse Moderator
- Remove Subverse User Ban
- Update Subverse Rule
Polls vs. Referenda
If a Vote has zero Outcomes (meaning no Option has an Outcome associated with it) it is considered a Poll. If any Option has an Outcome, the Vote is referred to as a Referendum. Polls and Referenda are the two types of Votes.
Restrictions form the backbone of Votes. Restrictions are a framework that validates a user’s vote. All votes are classified as either Certified or Uncertified. All users can vote on a Vote and their vote will be either Certified or Uncertified. Vote statistics will be broken down into three categories: Certified, Uncertified, and All (sum of Certified and Uncertified).
A vote is Certified if all Restrictions pass or all Restrictions in a Restriction group pass. Only Certified votes are considered when a winning Option is chosen in a Referendum.
A vote is Uncertified if any one Restriction doesn't pass or no Restriction group passes.
Examples of various Restrictions:
- Contribution Count (Restriction that counts comments/submissions to a given subverse over time)
- Contribution Point (Restriction that summarizes points earned on comments/submissions to a given subverse over time)
- Contribution Vote (Restriction that counts votes given on comments/submissions to a given subverse over time)
- Member Age (Restriction based on account age)
- Subscriber (Restriction based on if/when a user subscribed to a given subverse)
Using advanced configuration, Restrictions can be grouped into two or more groups. Grouping Restrictions allows for conditional evaluation in that only one group has to be satisfied in order for the user's vote to be Certified. If a Vote has no Restriction groups, every Restriction must pass in order for the vote to be Certified.
A threshold is a limiting factor that affects how winning Options are selected. Thresholds provide both a margin and threshold setting and can be applied to either the percentage of the vote or the sum of votes. A Vote that has no Thresholds will default to a majority winner (which ever Option has the highest percentage).
For example, with Thresholds a Vote can specify that a winning Option must have:
- 60% of the vote (minimum percentage threshold)
- a margin of 10% over the next highest percentage Option (minimum percentage margin)
- must have at least 200 votes (minimum count threshold)
Thresholds allow Votes to specify distinct quorum levels.
Calling Votes (referred to as creating and then publishing votes) are limited in many ways. Limitations are applied to Polls and Referenda individually. Limitations on who (how many Votes a user can call), where (what subverses can have Votes called), what (what type of Vote is supported (Polls, Referenda, or both) and what types of Outcomes and Restrictions are allowed), and when (how many Votes can be active in a subverse or for a user at a given time or over a period of time) are imposed via the limitation logic.
Limitation logic can be configured to apply to subverses, the type of subverse, or at a moderator level. This allows for the granular configuration of how Votes are used.
Calling a Vote is a two-step process. You first create and configure the Vote. You may edit a Vote after it is created as it is not publicly visible. At this stage this is considered an Unpublished Vote.
Publishing a Vote does the following:
- Creates an associated submission to the subverse which displays the Vote
- Locks the Vote from further editing or cancellation.
A published Vote has a “delay” time and a “duration” time. The delay time period is the length of time after the Vote is published in which voting is not yet allowed, whereas the duration is the time period the Vote is open and voting is allowed.
After the Vote closes, it is then processed. When a Vote is processed, votes are counted and a winning Option is selected that satisfies specified Thresholds. If the winning Option has any Outcomes, the Outcomes are executed.
The Vote feature also introduces a new classification for subverses. This classification system, or subverse type, will affect what Votes can be called in a particular subverse. Voat has defined the following subverse types:
- Default: Uncategorized Subverse (Legacy - all existing subverses are categorized as Default.)
System Monarchy: System Subverse (Entity. Voat controlled.)
Public Democracy: Community Subverse (Publicly controlled via Votes. Moderator subverse permissions limited.)
Private Dictatorship: Private Subverse (Moderator controlled. Identical to Default as of this draft.),
Community Republic: Community Subverse (Republic structure. Rules and Moderators can only be changed via Votes)
Voat will soon have more Votes, up votes, down votes, and Voat Votes.