Difference between revisions of "InstaGov"

from HTYP, the free directory anyone can edit if they can prove to me that they're not a spambot
Jump to navigation Jump to search
m (catg: +software/incomplete)
(→‎Notes: Links: "why I hate LiquidThreads")
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
==Overview==
+
<hide>
[[category:software/incomplete]][[InstaGov]] is software to aid very large groups in the process of decisionmaking and evaluating a large number of items which are entered into the system collaboratively. The philosophy behind its primary purpose (collaborative governance) is discussed in great detail on {{issuepedia}}, but there will probably be other uses for it as well.
+
[[page type::project]]
 +
[[thing type::software]]
 +
[[category:software/incomplete]]
 +
</hide>
 +
==About==
 +
[[InstaGov]] is software to enable groups of people, of any size, to handle relatively large numbers of collaboratively-entered decisions in a rational and accurate way.
 +
 
 +
InstaGov will probably first be written as a plug-in for [[MediaWiki]]; it may later be available in other formats. It is entirely [[open source]], so others are free to adapt it to their own uses or add their own features.
 +
===Purpose===
 +
The philosophy behind its primary purpose (collaborative governance) is discussed in great detail on {{issuepedia}}, but there will probably be other uses for it as well.
  
 
InstaGov has two primary functions:
 
InstaGov has two primary functions:
Line 7: Line 16:
 
** aggregating individual rankings to determine which issues should be propagated to more people and which should be allowed to die out
 
** aggregating individual rankings to determine which issues should be propagated to more people and which should be allowed to die out
 
** organizing issues into a hierarchical topic system to allow users to filter in or out areas in which they have no interest
 
** organizing issues into a hierarchical topic system to allow users to filter in or out areas in which they have no interest
 +
** enabling rational discussion of complex issues within a large group of people
 +
===Modules===
 +
* '''[[/Liquid Agenda]]''' manages issues, solutions, and votes; records individual votes and aggregates them into final decisions
 +
* '''[[/Liquid Proxying]]''' allows users to select other trusted voters to help make decisions without surrendering any significant control
 +
* '''[[/Debate Mapper]]''' organizes and documents debate on complex issues
  
InstaGov will probably first be written as a plug-in for [[MediaWiki]]; it may later be available in other formats. It is entirely [[open source]], so others are free to adapt it to their own uses or add their own features.
+
===Documentation===
==Preliminary Table Design==
+
* [[/schema]]: database design
===problem===
+
* [[/concepts]]
<section begin=sql /><mysql>CREATE TABLE `problem` (
+
* [[/syntax]]: how to use it within a document
  `ID` INT  NOT NULL AUTO_INCREMENT,
+
* '''archival''':
  `Page` varchar(127) COMMENT "wiki page describing problem",
+
** [[/SMW]]: alternative implementation using [[Semantic MediaWiki]], possibly for future use
  `WhenCreated` DATETIME NOT NULL COMMENT "when this problem was entered",
+
** [[/obsolete]] stuff
  `WhenExpires` DATETIME DEFAULT NULL COMMENT "when this problem expires (NULL = never)",
+
==Development Phases==
  `Pos_Text` VARCHAR(63) DEFAULT NULL COMMENT "optional: text to show at the 'yes' end of the scale",
+
Phases in which functionality can be added:
  `Neg_Text` VARCHAR(63) DEFAULT NULL COMMENT "optional: text to show at the 'no' end of the scale",
+
===Phase I===
  PRIMARY KEY(`ID`)
+
* create {{instagov|concepts|question}}
)
+
* create {{instagov|concepts|answer}}(s)
ENGINE = MYISAM;</mysql>
+
** support for redirect to rephrased question
<section end=sql />
+
*** somehow prevent redirection loops?
Not sure if we'll actually need Pos/Neg_Text; it may be just a frill.
+
* {{instagov|concepts|rating|rate}} answer(s)
===solution===
+
* view results for specific question
Any problem may have zero or more solutions. Solutions can be proposed as long as the problem is active (not expired).
+
===Phase II===
<section begin=sql /><mysql>CREATE TABLE `solution` (
+
* list all questions (may arise naturally in Phase I)
  `ID` INT  NOT NULL AUTO_INCREMENT,
+
* show your status for each (created, voted)
  `ID_Problem` INT NO NULL COMMENT "problem.ID of problem for which this is a solution",
+
* show general stats for each (current favored answer, summed rating)
  `Page` varchar(127) COMMENT "wiki page describing solution",
+
* show issues needing your vote
  `WhenCreated` DATETIME NOT NULL COMMENT "when this solution was entered",
+
===Phase III: Proxies===
  `WhenExpires` DATETIME DEFAULT NULL COMMENT "when this solution expires (NULL = never)",
+
* create {{instagov|concepts|proxy}}
  PRIMARY KEY(`ID`)
+
* assign proxy to specific question
)
+
* view your own proxy status (who is using you, and by what weights?)
ENGINE = MYISAM;</mysql>
+
* ongoing question - should there be options for:
<section end=sql />
+
** private (anonymous) proxy - nobody can see who they are using
===approval===
+
** secret proxy - existence of your proxy weighting is totally concealed
Records each user's current level of approval of each proposed solution.
+
===Phase IV: Categories===
<section begin=sql /><mysql>CREATE TABLE `approval` (
+
* create category (general or personal)
  `ID` INT  NOT NULL AUTO_INCREMENT,
+
* vote question into general category
  `ID_User` INT COMMENT "user.ID of user who gave this rating",
+
* rate question within personal category
  `ID_Solution` INT NOT NULL COMMENT "solution.ID of solution for which this is a rating",
+
* assign proxy results to category
  `ID_Proxy` INT DEFAULT NULL COMMENT "if this approval was proxied, records who the proxy was",
+
===Frills===
  `Value` INT NOT NULL COMMENT "rating value",
+
These can be added whenever needed:
  `WhenDone` DATETIME NOT NULL COMMENT "when this rating was posted",
+
* don't allow posting of question identical to existing one
  `Remark` VARCHAR(255) COMMENT "comments on this rating (can include link)",
+
** detect similarity, though, and confirm that new question is desired
  PRIMARY KEY(`ID`)
+
*** ask if redirect answer should be created, perhaps?
)
+
* don't allow posting of answer identical to existing one for a given question
ENGINE = MYISAM;</mysql>
+
** detect similarity, though, and confirm that new answer is desired
<section end=sql />
+
==Notes==
* '''Proxy approval''' is a concept I keep coming back to. Rather than trying to prevent vote-buying by secret ballots, which cause their own problems (make recounting more difficult, inhibits discussion of personal voting record), it goes exactly the opposite direction and encourages them while ''documenting'' every occurrence for further analysis.
+
This page needs an index to sites that provide similar tools, and how well each one meets the design goals set by InstaGov. (Issuepedia has a partial list.)
===approval log===
+
 
Records every time a user submits an approval rating, including revisions.
+
In general, petition sites have the following shortcomings:
<section begin=sql /><mysql>CREATE TABLE `approval_log` (
+
* no way to browse petitions by category (though some are beginning to add this)
  `ID` INT  NOT NULL AUTO_INCREMENT,
+
* no way to discuss petitions on-site prior to signing them (e.g. to investigate possible objections)
  `ID_Approval` INT NOT NULL COMMENT "approval.ID of approval to which this rating was applied",
+
* no way to discuss petitions on-site prior to making them public (e.g. to refine the language, get a sense of what people would be likely to agree with)
  `ID_User` INT COMMENT "user.ID of user who gave this rating",
+
* no reliable way to check if you've already signed a given petition
  `ID_Solution` INT NOT NULL COMMENT "solution.ID of solution for which this is a rating",
+
* no record of which petitions you've signed
  `ID_Proxy` INT DEFAULT NULL COMMENT "if this approval was proxied, records who the proxy was",
+
* no follow-up regarding whether petitions were successful, much less any analysis of why they failed (or succeeded)
  `Value` INT NOT NULL COMMENT "rating value",
+
 
  `WhenDone` DATETIME NOT NULL COMMENT "when this rating was posted",
+
==Links==
  `Remark` VARCHAR(255) COMMENT "comments on this rating (can include link or redirect)",
+
* [http://www.mediawiki.org/w/index.php?title=Extension_talk:LiquidThreads&offset=20130109095522#Why_I_hate_LiquidThreads_18606 Why I hate LiquidThreads] describes a number of problems with threaded dialogue which InstaGov should probably try to address
  PRIMARY KEY(`ID`)
 
)
 
ENGINE = MYISAM;</mysql>
 
<section end=sql />
 
===escalation===
 
This is for escalating '''problems'''; '''solutions''' are escalated solely by their approval ratings rather than via a separate mechanism.
 
<section begin=sql /><mysql>CREATE TABLE `escalation` (
 
  `ID`        INT NOT NULL AUTO_INCREMENT,
 
  `ID_User`  INT NOT NULL,
 
  `ID_Problem INT NOT NULL,
 
  `ID_Topic  INT DEFAULT NULL COMMENT "optional: this rating applies only within the given topic",
 
  `Rating`    INT NOT NULL    COMMENT "-10 to +10, or whatever range we end up using",
 
  `Remark`  VARCHAR(255)     COMMENT "comments on this rating (can include link or redirect)",
 
  PRIMARY KEY(`ID`)
 
)
 
ENGINE = MYISAM;</mysql>
 
<section end=sql />
 

Latest revision as of 13:09, 24 March 2013

About

InstaGov is software to enable groups of people, of any size, to handle relatively large numbers of collaboratively-entered decisions in a rational and accurate way.

InstaGov will probably first be written as a plug-in for MediaWiki; it may later be available in other formats. It is entirely open source, so others are free to adapt it to their own uses or add their own features.

Purpose

The philosophy behind its primary purpose (collaborative governance) is discussed in great detail on Issuepedia, but there will probably be other uses for it as well.

InstaGov has two primary functions:

  • vote tallying: collecting votes from each member and presenting aggregated data showing overall sentiment towards each issue
  • issue management:
    • aggregating individual rankings to determine which issues should be propagated to more people and which should be allowed to die out
    • organizing issues into a hierarchical topic system to allow users to filter in or out areas in which they have no interest
    • enabling rational discussion of complex issues within a large group of people

Modules

  • /Liquid Agenda manages issues, solutions, and votes; records individual votes and aggregates them into final decisions
  • /Liquid Proxying allows users to select other trusted voters to help make decisions without surrendering any significant control
  • /Debate Mapper organizes and documents debate on complex issues

Documentation

Development Phases

Phases in which functionality can be added:

Phase I

  • create question
  • create answer(s)
    • support for redirect to rephrased question
      • somehow prevent redirection loops?
  • rate answer(s)
  • view results for specific question

Phase II

  • list all questions (may arise naturally in Phase I)
  • show your status for each (created, voted)
  • show general stats for each (current favored answer, summed rating)
  • show issues needing your vote

Phase III: Proxies

  • create proxy
  • assign proxy to specific question
  • view your own proxy status (who is using you, and by what weights?)
  • ongoing question - should there be options for:
    • private (anonymous) proxy - nobody can see who they are using
    • secret proxy - existence of your proxy weighting is totally concealed

Phase IV: Categories

  • create category (general or personal)
  • vote question into general category
  • rate question within personal category
  • assign proxy results to category

Frills

These can be added whenever needed:

  • don't allow posting of question identical to existing one
    • detect similarity, though, and confirm that new question is desired
      • ask if redirect answer should be created, perhaps?
  • don't allow posting of answer identical to existing one for a given question
    • detect similarity, though, and confirm that new answer is desired

Notes

This page needs an index to sites that provide similar tools, and how well each one meets the design goals set by InstaGov. (Issuepedia has a partial list.)

In general, petition sites have the following shortcomings:

  • no way to browse petitions by category (though some are beginning to add this)
  • no way to discuss petitions on-site prior to signing them (e.g. to investigate possible objections)
  • no way to discuss petitions on-site prior to making them public (e.g. to refine the language, get a sense of what people would be likely to agree with)
  • no reliable way to check if you've already signed a given petition
  • no record of which petitions you've signed
  • no follow-up regarding whether petitions were successful, much less any analysis of why they failed (or succeeded)

Links

  • Why I hate LiquidThreads describes a number of problems with threaded dialogue which InstaGov should probably try to address