A Brief Introduction To Konsent [STICKY]

Submitted by dele_ted in konsent (edited )

Konsent is a platform for decision-making without hierarchy. The concept and the code-base is currently under development here and on GitHub, with the goal of being a viable alternative to the moderation system here on Raddle, as well as similar communities.

The Concept

When you register a new account, you link the account to a community, using a password provided to you by the community members. Once registered, you are given the ability to post new issues as well as participate in solving existing issues.

When a new issue is posted by a member of the union, it goes through three phases before being marked as solved. Here's a brief explanation of the three phases:

  • Phase 1: Other members of the union can vote for issues they feel are relevant. When an issue has been voted for by half of the community, it will progress to phase 2. All votes are onymous.

  • Phase 2: The community will open a new discussion thread anywhere they choose if they feel so inclined (a dedicated Raddle sub would be neat for this), and add the link to the issue. Up to 3 links can be added. The community may suggest what they feel would be an appropriate solution to the issue at hand alongside discussion. They may also vote for other solutions that they agree with (again, all votes are onymous). When the resting time* is reached, the issue will progress to phase 3, bringing the solution with the most votes along with it.

  • Phase 3: Community-members may veto the solution if they feel that the solution is deeply disturbing, and can in no way benefit the greater good of the community. If a community-member decides to veto a solution, they will have to provide a reason for the veto. The name of the member who vetoed will be visible to every community-member. If no veto has been put in place after the issue has rested for the duration of the resting time, the issue will be marked as solved, and the solution will be carried out.

The concept of Konsent is just as much under development as the code-base, and everything is potentially subject to change. If you have any ideas on how we could improve the concept, share them in a new post on /f/konsent.

resting time: a duration chosen by the original poster, everything higher than 50 minutes will do


Issues goes through three phases. The first filters out the less important issues, the second enables discussion and actual solution of the issue, and the third enables vetoing. Once an issue has passed through all three phases it is marked as solved, and the solution is carried out.


You must log in or register to comment.


iodbh wrote


This is a cool project and I'd be happy to contribute whenever I can find the time as I have a fair amount of experience with Flask.

Quick question - is there a specific reason you're not using an ORM ?

I would also suggest using Miguel Grinberg's Flask project layout, which makes things way smoother when the application grows beyond a single file.


dele_ted wrote

You'd be more than welcome!

Surreal and i have talked about implementing an ORM, we'll probably get to it pretty soon. We're also looking into better ways to organize the project, and have already cleaned it up considerably. Thanks for the link, I'll take a look!


iodbh wrote (edited )

I'm giving porting to an ORM (SQLAlchemy) a go.


dele_ted wrote

Alright, that's awesome, good luck with it. Hoping to hear more from you on GitHub soon!


iodbh wrote

I've already started, but it'll take a while - check my fork if you want to see where it's going


dele_ted wrote (edited )

Yeah, just noticed that. Good luck with it.


Wrestitaway wrote

consensus model

Are we sure phase 2 isn't just majority voting?

The point of horizontal decision making is to make an equitable compromise that everyone involved consents to (may not agree with, but concedes that it may be the best option). Not just voting for the most popular suggestion at hand.

I think we need more phases to this.

I'll edit this tomorrow with a better input.


dele_ted wrote

That's been my concern too. I think direct democracy definitely has its place on this platform, but it needs another layer - perhaps one that enables discussion before solutions can be proposed.

Looking forward to your input!


Wrestitaway wrote (edited )

First - I can't program. I dunno if I used the term "scripts" correctly, but I'm sure those who know kinda know what I mean.

So I don't know how feasible some of this could be, but I think there are some basic hurdles to jump over before anything.

A lot of it can be solved by time limit windows or making discussion topics subraddle-specific.

We need an f/meta type subraddle where all these discussions can take place under their own post and be archived. People will be redirected to there from wherever they are originally.

  • Before any discussion can happen we need to figure out who can start discussions and where best to advertise and where those discussion should take place. Should it be in one specifical subraddle like f/meta or in any relevent subraddle? We should go with the former as I think its easier to archive and log.

  • We need a way to figure out how many people are going to be involved initially and are able to vote all the way through to the end to make the process consistent and deter vote manipulation. Like a time-limited open enrollment. Also, we need people to vote from their main accounts - accounts that are new should be excluded. Negative/low karma/troll accounts excluded. Which means:

    • We need a way for a member to post a groupwide/raddlewide topic that is distinguished from other regular posts (maybe a different color) that is essentially a script that allows people to sign up and enroll. So OP will create a title for their post and select a checkmark next to the submit button that will say something like: "Do you want this to be a consensus post?"

    • If they check that box - OP will have that posted to whatever subraddle they're in and it will serve as an open enrollment, but it will also automatically post to the f/meta type subraddle with the discussion title OP chose, .

    • That open enrollment is time-limited and when the clock runs out, it tallies up who enrolled and sends them a link to the f/meta type subraddle post. So we need to create a script that launches a dialogue box inside each "enrolled" members inbox that says something like this. It will create a link to that f/meta type subraddle discussion post.

If they click the link:

  • They are redirected to that post and they see another dialogue box that outlines the steps: like this

  • If everyone consents and/or concedes within some given timeline:

    • motion passes
    • thread is automatically locked and archived
    • it's logged in some public fashion where anyone can refer to it
  • If they object or oppose:

    • Each opposing member is given the original reply box to make their cases and express their concern. They are also given post-flair that states OPPOSE.

    • The now comment is open to other replies as per usual. Members can ask questions. Make statements and advocate their positions.

    • This process is under a time limit as well (2 hrs, 2 days, 2 weeks, whatever it may be) and when the clock runs out the dialogue box reappears and those opposed are given a chance to vote again.

    • If they still oppose - the process starts over. And other members are again allowed to make their compelling arguments and the opposing member is able to make new points.

    • That process repeats until everyone comes to a solution that they can live with and reaches consensus.

  • If someone thinks its imperative that they block the topic:

    • They choose block from the dialogue box
    • An automatic post appears with text "XXXXX has blocked this proposal" in the thread
    • If a high percentage (40%) block the proposal - the OP would be sent a message asking if they want to revise the initial post
    • If 50%+ block the proposal - then the proposal is logged and archived but deleted from the f/meta type subraddle and OP is messaged stating that it was a rejected proposal.

dele_ted wrote

Many of these are good ideas, but there is one limitation: we cannot make changed to Raddle's codebase right now. Usually, emma would be the one responsible for that, but as you probably know she left the community recently. Raddle is written in PHP, and we currently don't have any developers who know enough about PHP to implement new features.

For this reason, Konsent is completely separated from Raddle. We could of course require new Konsent accounts to be tied to a Raddle account, and verify the tie with a simple message to the Raddle account. This way, we could make sure that only users with more than X comments, posts or upvotes can register on Konsent, and that users don't make more than one account (at least not with some serious effort for each new account).

We need a way to figure out how many people are going to be involved initially and are able to vote all the way through to the end to make the process consistent and deter vote manipulation

We could make it so users can only participate in issues that they voted for in phase one. That would also stop people from vetoing issues they haven't participated in, which is probably a very good idea.

The rest is good ideas, but can't be implemented due to Raddle being unmaintainable at the moment. Konsent and Raddle will have to be completely separated both code and database-wise.


Wrestitaway wrote

oh wow, I didn't realize we were that talent-bare.

So is this going to be a downloadable app or entirely web-based?

I can see an app where users can sign up and members can create there own groups (like subraddles) and make their own proposals and send out notifications to their groups or the larger konsent community and the dialogue boxes, time limits and processes I mentioned before can be retained.

Probably be a lot lighter, too.

I like the raddle/konsent connection as well - seems like it could hinder any infiltration/troll infestation efforts.


dele_ted wrote (edited )

So is this going to be a downloadable app or entirely web-based?

It'll be entirely web-based for now. If we get more developers on board, a FOSS app might be possible in the future. There's a link to the latest stable release in the sidebar if you haven't seen it yet.

I like the raddle/konsent connection as well - seems like it could hinder any infiltration/troll infestation efforts.

That was definitely a good idea, I'll open a new issue on GitHub about it soon. Won't be too difficult to implement. We might make it a part of the next release, 0.2a, if we get the current issues solved quickly.