Polls and Decisions Proposal

Todd's proposal (after discussion with Noam)

New Item types:

Poll (subtype of Collection, with members that are expected to be Propositions or Polls) adds the following fields:

  • question - the issue that gives rise to one or more Propositions (free text)
  • response_format - set of possible values each participant can assign to the Proposition(s) in a Poll (enumerated); options include:
    • choose n exactly [where n <= #Poll]
    • approve n or fewer [where n <= #Poll]
    • test for consensus [possible values: support, support with reservations, object, stand aside, block]
    • rank order from 1 up to #Poll
    • continuous score from IntMin.0 to IntMax.0
    • discrete score from IntMin to IntMax
    • assign continuous budget points out of Total.0 (where Total>0)
    • assign discrete budget points out of Total (where Total>1)
  • begins - starting date and time for poll responses (datetime)
  • deadline - ending time for poll responses (datetime)
  • allow_write_ins - flag to indicate if Poll allows write-in propositions (boolean)
  • eligibles - those who can respond (pointer to a Group)
  • visibility - response secrecy setting, used to set Permissions (enumerated); possible values:
    • responses visible -how each eligible has responded is visible
    • who responded visible - who has responded is visible, but not how they responded
    • closed - neither who has responded nor how they have responded is visible

Proposition (subtype of HTMLDocument) adds the following fields:

PropositionResponse (subtype of Django Object) adds the following fields:

  • poll (pointer to a Poll)
  • participant (pointer to an Agent)
  • proposition (pointer to a Proposition)
  • value - chosen from those possible under the poll's response_format (conditionally enumerated)

Decision (subtype of Item  thanks to Noam for this 4 replies) adds the following fields:

  • quorum - percentage q of eligibles required to respond in order to adopt a Proposition
  • poll poll it points to
  • decision_rule - method for aggregating PropositionResponses into a decision (conditionally enumerated); the following are options for each indicated response_format:
    • choose n exactly [where n <= #Poll]
      • plurality [most approvals among all propositions in poll]
      • threshold p% of participants [proposition getting highest approvals from among those getting >=p% of participants]
      • threshold e% of eligibles [proposition getting highest approvals from among those getting >= e% of eligibles]
      • unanimous minus m [where m <= #Poll]
    • approve n or fewer [where n <= #Poll]
      • plurality 
      • threshold p% of participants
      • threshold e% of eligibles
    • test for consensus [possible values: support, support with reservations, object, stand aside, block]
      • consensus (with m allowed blocks if supported either strictly or with reservations by p% or more of participants) [adopts any proposition that passes this test]
      • consensus (with m allowed blocks if supported either strictly or with reservations by e% or more of eligibles) [adopts any proposition that passes this test]
    • rank order from 1 up to #Poll
      • plurality
      • threshold p% of eligibles
      • threshold e% of participants
      • borda count
      • condorcet rule
      • full runoff rule
      • two-stage runoff rule
    • continuous score from IntMin.0 to IntMax.0
      • highest average score
      • highest median score
      • highest modal score
      • threshold s average score [proposition with highest average score >= s]
      • threshold s median score [proposition with highest median score >=s]
      • threshold p% of participants scoring s or higher [proposition scoring highest among those scored >=s by >= p% of participants]
      • threshold e% of eligibles scoring s or higher [proposition scoring highest among those scored >=s by >= e% of eligibles]
    • discrete score from IntMin to IntMax
      • highest average score
      • highest median score
      • highest modal score
      • threshold s average score [proposition with highest average score >= s]
      • threshold s median score [proposition with highest median score >=s]
      • threshold p% of participants scoring s or higher [proposition scoring highest among those scored >=s by >= p% of participants]
      • threshold e% of eligibles scoring s or higher [proposition scoring highest among those scored >=s by >= e% of eligibles]
    • assign continuous budget points out of Total.0 (where Total>0.0)
      • average budget allocation [allocate percent of budget to each proposition according to average percentages in responses]
      • average budget allocation above threshold p [allocate percent of budget to each proposition averaging higher than p% of the Total]
    • assign discrete budget points out of Total (where Total>1)
      • average budget allocation [allocate percent of budget to each proposition according to average percentages in responses]
      • average budget allocation above threshold p [allocate percent of budget to each proposition averaging higher than p% of the Total]

NOTE: Of course, many more decision rules could be added. This is just a start. People can add their own module if they want to define methods and rules outside of these.

 


 

Deme Poll Proposal (Noam's original)

Main Architecture:
The main architecture of the poll Item will contain 3 main Items.
This will make a poll which only purpose is to collect information and display the results, with no deciding  actions or methods of determining "winner" its only purpose is to collect information and display it.

Item: Poll: Will extend collections
The poll will be a collection of Poll propositions.
New Fields:
Question: the poll question
Old Field to display:
Title

Item: Poll_Proposition: Will extend an html document, will act as the options for poll takers to choose
new field:
proposition_text: text field for proposition
old fields:
implementation_plan: the html document body clever!to be used as the implementation plan (so that people may deliberate on it with a future document viewer)

Item: response: will extend django model
this will connect an agent taking the poll to the poll and the poll proposal and will be counted to display results on a poll
new fields:
poll_participant: a foreign key to the person taking the poll
answer: How does answer allow for range voting? 1 repliesa foreign key to the proposition that the agent has selected
poll: a foreign key to the poll that the agent is participating in (necessary to ensure that we have the ability to limit the agent to only responding once if we want)

with these three item types we have a generic poll structure, where we can extend the poll Item to not only display the information but also apply different polling methods such as "Approve/Disapprove", or voting for one proposition, or weighing different decisions, or allocating different points to different choices ect. Given that the original poll item only displays responses  and propositions and holds them, we can easily extend the polls to specific polling methods in new items. Thus we have a generic start to the project. The tradeoff here is that we are hard coding poling decisions, and extending a basic poll type instead of making one poll very customizable. Given that there are only a variety of polling options, but they could be extremely different from each other I think that this will be the best solution.

Future additions:

Item: Survey: extends collection
A survey is just a collection of poll items, so that a survey may be administered

Item: Consequence: extends item
When we want to implement the decisions to carry out consequences we can add a foreign key to the basic poll type to a consequence Item.
This would require a lot of planning, but the basic idea is that on something like an approve or disapprove poll, if approved, the consequence pointed to by the poll will be executed, and it is an item that can be created on its own so that it is user defined. This will most likely be a major project but would be a nifty addition.

For Internet Explorer users: Click on the Tools menu, located at the top of your browser window. When the drop-down menu appears, select the option labeled Full Screen.

For Chrome users:Click on the Chrome "wrench" icon, located in the upper right hand corner of your browser window. When the drop-down menu appears, select the choice labeled Full Screen.

For Firefox user:Click on the View menu, located at the top of your browser window. When the drop-down menu appears, select the option labeled Full Screen.

For Safari users: Safari currently does not support the ability to go fullscreen.