Date: Sat, 27 Sep 2003 18:57:28 -0400
Mime-Version: 1.0 (Produced by PhpWiki 1.3.2-jeffs-hacks)
Content-Type: application/x-phpwiki;
  pagename=VirianVotingExtentions;
  flags="";
  author=VectorHermit;
  version=3;
  lastmodified=1064703448;
  author_id=VectorHermit;
  hits=13479;
  charset=iso-8859-1
Content-Transfer-Encoding: binary

[VirianVoting]:[VirianVotingExtentions]

!!!Virian Voting Extentions

[WorkInProgress] This document is fundamental will require a [vote|WikiVote] to be accepted.
----
DavidLucifer: I suggest we leave everything after this comment to an amendment. Voting on the voting rules is urgent. Figuring out how vote history should or should not affect reputation can be left for another day.

[VectorHermit]: Affirmed. New page established to deal with this issue.

Some types of votes may be informational (i.e. not require participation) and do not count towards "voting weight".

Some types of votes may be "compulsory" and failing to vote in "compulsory votes" [may|WikiMay] result in possible penalties (Refer "New Suggestion 3" below).

__New Suggestion 3__: Virians shall receive 100% of their voting equity on casting their first vote. From then on, should a Virian not vote in a "compulsory" election, they will lose 25% of their voting equity for each election missed during the last 4 elections closed. Each vote placed (including the current vote) will earn back 25% of their voting equity up to 100% of their voting equity.

As an example, consider the following (assume all existing voters have 100% at start, votes which are not closed have unknown voter equity)

|Vote Count|Vote Status|Voter 1|Voter 2|Voter 3|Voter 4|Voter 5
|Vote 1    |Open|Voted ?|No Vote ?| | |No Vote ?
|Vote 2    |Closed|Voted 100% |No Vote 75%| |(Joins - 100%)|No Vote 75%
|Vote 3    |Closed|Voted 100% |No Vote 50%|(Joins - 100%)|No Vote 75%|Vote 100%
|Vote 4    |Closed|Voted 100% |No Vote 25% |Voted 100% |No Vote 50%|No Vote 75%
|Vote 5    |Open|Voted ? |No Vote ?|Voted ?|No Vote ?|No Vote ?
|Vote 6    |Closed|Voted 100% |No Vote 0%|Voted 100% |No Vote 25%|No Vote 50%

Vote 7 is now called.

Voter 1 will have 100% of equity available.
Voter 2 has no equity available, but voting in vote 7 will give them 25% of equity. They could also vote in 1, 5 and 7 and restore 75% of equity.
Voter 3 has 100% of equity available.
Voter 4 has 25% of equity available, and voting in 7 will give them 50% of equity. Voting in 1, 5 and 7 will restore 100% of equity.
Voter 5 has 50% of equity available, and voting in 7 will give them 75% of equity. Voting in 1, 5 and 7 will restore 100% of equity.

!!In pseudo code:
----
__!OnEvent: New Member__

   Voter.!VoteEquity = 100%
----
__!OnEvent: Close Vote__

 For each eligible Voter

   If not (Voter.!VoteHistory.!ThisVote.!VotedForMotion AND Voter.!VoteHistory.!ThisVote.!VotedAgainstMotion AND Voter.!VoteHistory.!ThisVote.!VoterAbstained)

     Voter.Equity = Ceiling(0%,Voter.Equity - 25%)

   !EndIf

   Voter.!VoteHistory.!ThisVote.!VoteEquity = Voter.Equity
   Voter.!VoteHistory.!ThisVote.Voted = 0 && (Voter.!VoteHistory.!ThisVote.!VotedForMotion AND Voter.!VoteHistory.!ThisVote.!VotedAgainstMotion AND Voter.!VoteHistory.!ThisVote.!VoterAbstained)

   Voter.!VoteHistory.!ThisVote.Voted = (-1 * Voter.!VoteHistory.!ThisVote.!VotedAgainstMotion) + (1 * Voter.!VoteHistory.!ThisVote.!VotedForMotion)

 Next
----
__!OnEvent: Vote (NB Not Revote)__

 Voter.Equity = Floor(100%,Voter.Equity + 25%)
----
__!OnEvent: Calculate Vote__

 !EquityPossible = 0 ; !VotesForMotion = 0 ; !VotesAgainstMotion = 0 ; !VotesAbstain = 0

 For each eligible Voter

   !EquityPossible = !EquityPossible + Voter.Equity

   !VotesForMotion = !VotesForMotion + (Voter.!VotedForMotion * Voter.Equity)

   !VotesAgainstMotion = !VotesAgainstMotion + (Voter.!VotedAgainstMotion * Voter.Equity)

   !VotesAbstain = !VotesAbstain + (Voter.!VoterAbstained * Voter.Equity)

 Next
----
__NB:__

 Floor returns the lowest valued parameter

 Ceiling returns the highest valued parameter

 && is a bitwise AND
