Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
123 lines (78 sloc) 3.99 KB

High-level requirements for demexp

This document contains high-level requirements for demexp software. Basic knowledge of the demexp approach is assumed.


Answer: A possible response to a question.

Delegate: A User that has been granted vote power in place of another User.

Question: An issue to solve that need answers from other Users.

Response: An possible answer to a Question.

Tag: A label put on a Question in order to classify it, i.e. to put the Question in a set Question on the same topic.

User: A participant to the demexp process.

Question and Responses

REQ-QR-1: Any User can create a new Question.

REQ-QR-2: A Question contains a short summary and an optional longer description.

REQ-QR-3: Any User can add a new Response to a Question.

REQ-QR-4: A Response contains a short description and an optional longer description.

Note: Should a User be allowed to change the short and the long description of Questions or Responses he/she has created? Are questions identified through their description or through other means?


REQ-V-1: Any User with proper rights can vote on a Question.

REQ-V-2: A User can change his/her vote on a Question at any time.

REQ-V-3: Voting is made using [Condorcet voting method] ( Each User and Delegate ranks the Responses of a Question in order of preferences. The winning answer is determined according to the Condorcet procedure, taking into account all votes expressed on this Question.

REQ-V-4: In case no Condorcet winner exists, there is no winning Response to the Question.

Note: We do not request to use Swartz or Schultze algorithms to extract a set of winners. We will see if this is an issue in practice.

REQ-V-5: Each User can at any time vote only once a Question.

REQ-V-6: When a Delegate votes on a Question, this vote is weighted by the number of received delegations (possibly zero if no delegation).

REQ-V-7: A User can always vote as a User and as a Delegate. The two votes can be different.

REQ-V-8: Vote of a User is always private, hidden to other Users.

REQ-V-9: Vote of a Delegate can be private or public, according to Delegate wish.


REQ-CLA-1: Each Question can have a set of Tags attached to it.

REQ-CLA-2: Adding or removing a Tag to a Question is made by Users having proper rights.


REQ-DEL-1: A User can delegate is right to vote on a given Question to another User called a Delegate. When a Question is delegated, the user can no longer vote on it, only his/her Delegate can.

REQ-DEL-2: A User can revoke his/her delegation to another User at any time. The Delegate can no longer vote on a Question in place of the delegating User.

REQ-DEL-3: A Delegate never knows the number of delegations it has received.

Note: Above requirement is made to avoid as much as possible power user that could influence the vote outcome by knowing his/her "weight".

REQ-DEL-4: A Delegate can in turn delegates the votes he/she has received to another User. This is allowed only if it is always possible to determine who has the Delegate vote of a User.

Note: Delegation cycles might be banned for example.


REQ-SEC-1: A User must correspond to a unique physical person. A physical person must correspond to a unique User.

REQ-SEC-2: Several kind of rights can be given or removed to a User:

  • Default rights: rights to add new Questions and Responses, right to vote as User and Delegate on a Question;

  • Classification rights: right to add and remove Tags in the Classification, right to add or remove Tags to a Question;

  • Administrator rights: right to create a new User or remove an existing User, right to add or remove Default, Classification and Administrator rights to another User.

Note: how all these rights are precisely managed is not clear yet.

REQ-SEC-3: There is always a User with Administrator rights in the system.

REQ-SEC-4: When a new User is created, he/she has Default and Classification rights.