voterunner

quick and dirty votes and discussions
git clone https://git.ce9e.org/voterunner.git

commit
2a44ab1d8733bb90ae891c529b815ea0631f6a56
parent
d2e3efe9d94dc1ff47300fc2f788b120b9c0dd61
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2020-10-17 08:19
update README

Diffstat

M README.md 87 ++++++++-----------------------------------------------------

1 files changed, 11 insertions, 76 deletions


diff --git a/README.md b/README.md

@@ -17,18 +17,16 @@ The voting mechanism
   17    17 Votorolla is a complex liquid democracy project. But the core idea is
   18    18 simple:
   19    19 
   20    -1 Every Person is a node in a forest (the disjoint union of trees in graph
   21    -1 theory, not
   22    -1 [this](http://miriadna.com/desctopwalls/images/max/Fairy-forest.jpg)).
   23    -1 At first, there are no edges at all. So people start to explain why
   24    -1 their opinion is the one to choose. When you see some convincing
   25    -1 argument you can *follow* that node (*delegate your vote*).
   -1    20 Every opinion is a node in a tree. At first, there are no edges at all.
   -1    21 So people start to explain why their opinion is the one to choose. When
   -1    22 you see some convincing argument you can *support* that node (*delegate
   -1    23 your vote*).
   26    24 
   27    25 After a while it becomes clear which competing positions exist and which
   28    26 arguments are important. The whole discussion is conserved in the graph.
   29    27 You can go on discussing until you reach a consensus.
   30    28 
   31    -1 While this concept is not perfect for every situation it is beautifull
   -1    29 While this concept is not perfect for every situation it is beautiful
   32    30 in its simplicity.
   33    31 
   34    32 How to use it
@@ -39,22 +37,22 @@ Since I really just wrote it the following section is more or less
   39    37 fiction.*
   40    38 
   41    39 Your group needs to make a decision, but doing this on a mailinglist
   42    -1 would definitly get messy. So instead you create a discussion on
   -1    40 would definitely get messy. So instead you create a discussion on
   43    41 voterunner simply by typing
   44    -1 `http://voterunner.herokuapp.com/(your-topic)/` into the address bar of
   -1    42 `https://voterunner.example.com/#your-topic` into the address bar of
   45    43 your browser.
   46    44 
   47    45 You are lazy, right? So of course you want the group to make the right
   48    -1 decision but you don’t want to do the whole discussion thing yourself.
   -1    46 decision but you don't want to do the whole discussion thing yourself.
   49    47 So you will delegate your vote.
   50    48 
   51    49 Now you can concentrate on convincing those who have not already
   52    -1 delegated their votes to follow you. You may also try to steer the one
   53    -1 you follow in the right direction.
   -1    50 delegated their votes to support you. You may also try to steer the one
   -1    51 you support in the right direction.
   54    52 
   55    53 To achieve this you work on your arguments. Try to address counter
   56    54 arguments and be as precise as possible. Remember that you are a node in
   57    -1 a graph so you don’t need to repeat everything your followers already
   -1    55 a graph so you don't need to repeat everything your supporters already
   58    56 said. Just make your own point very clear.
   59    57 
   60    58 But maybe you even have an innovative idea. In that case you may revoke
@@ -87,66 +85,3 @@ Development
   87    85 You will need to install [sassc](https://github.com/sass/sassc) and
   88    86 [browserify](https://www.npmjs.com/package/browserify). Once these
   89    87 requirements are met, you can simply run `make` to build all files.
   90    -1 
   91    -1 
   92    -1 API
   93    -1 ---
   94    -1 
   95    -1 This section is only important if you want to understand how voterunner
   96    -1 works. If you just plan to use it, skip this.
   97    -1 
   98    -1 The communication is done using socket.io sockets.
   99    -1 
  100    -1     socket.emit(action, data1, data2, ...);
  101    -1     socket.on(action, function(data1, data2, ...) {
  102    -1       ...
  103    -1     });
  104    -1 
  105    -1 ### Setup
  106    -1 
  107    -1 These messages are used to set up the connection between client and
  108    -1 server:
  109    -1 
  110    -1 `register(topic, id)`
  111    -1 :   register for id and topic. needs to be done before anything else.
  112    -1 
  113    -1 ### Change the Graph
  114    -1 
  115    -1 These messages will be broadcasted to all sockets which are registered
  116    -1 to the same topic as the one emitting in. The emitting socket must omit
  117    -1 the id because it was already set when registering. If an action is performed
  118    -1 on a node that does not exist in the local copy, it must be created.
  119    -1 
  120    -1 `rmNode([id])`
  121    -1 :   remove node `id` from the graph.
  122    -1 
  123    -1 `setNodeName([id], name)`
  124    -1 :   set the name of node `id` to `name`
  125    -1 
  126    -1 `setNodeComment([id], comment)`
  127    -1 :   set the comment of node `id` to `comment`
  128    -1 
  129    -1 `setDelegate([id], id2)`
  130    -1 :   make node `id` follow node `id2`
  131    -1 
  132    -1 `rmDelegate([id])`
  133    -1 :   make node `id` follow noone
  134    -1 
  135    -1 License
  136    -1 -------
  137    -1 
  138    -1 voterunner - quick and dirty votes and discussions \
  139    -1 Copyright (C) 2013 Tobias Bengfort <tobias.bengfort@gmx.net>
  140    -1 
  141    -1 This program is free software: you can redistribute it and/or modify it
  142    -1 under the terms of the GNU Affero General Public License as published by
  143    -1 the Free Software Foundation, either version 3 of the License, or (at
  144    -1 your option) any later version.
  145    -1 
  146    -1 This program is distributed in the hope that it will be useful, but
  147    -1 WITHOUT ANY WARRANTY; without even the implied warranty of
  148    -1 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero
  149    -1 General Public License for more details.
  150    -1 
  151    -1 You should have received a copy of the GNU Affero General Public License
  152    -1 along with this program. If not, see <http://www.gnu.org/licenses/>.