Joystream / Joystream/joystream

Post-mainnet idea: two overlapping councils

Open
#2,875 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
1.4k
Forks
116
PR merge metrics
No merged PRs in 30d

Description

Idea: two overlapping councils

I watched the video that @robertneckelius recently shared (https://www.loom.com/share/6bce1f48dcd745d1b3684c5b2b3a69c9) and he mentioned the possible idea of having a second council very briefly. Maybe he had a similar idea to what I'm describing here, in any case I thought it would be an interesting idea to explore.

Current problems & observations

(it is unknown whether all of these will apply in later releases, not is it known whether the problems written about would actually apply in a mainnet scenario)

  • It is relatively easy for the same council member to be elected repeatedly and hold the same amount of voting power whenever they do this.
  • Votes reset once a council ends
    • This creates a problem in that proposals submitted later in a council term are less likely to be voted on before the council expires and also that in the new council, these "orphaned" proposals may not get enough attention/votes to even pass. In reality, this means that not all proposals are created equally and timing can become a significant requirement when submitting a proposal.
    • This means that some core components of the proposal system may end up having to be timed particularly well so that they get enough votes.
      • This is impractical for a DAO which will presumably operate 24/7 with council members across the globe and also is required to make decisions at relative speed in order to remain effective. Having these low traffic spots at the end of elections can cause apathy for users wanting to submit proposals.
      • This can result in platform-wide issues, and if emergencies arise and the day to day business requirements from submitted proposals are not addressed in a timely manner it can reduce the DAOs effectiveness.
  • Our platform is very distinct from other DAOs and we have already seen that just on our testnet the throughput of proposals is extremely high.
  • Some users see the council as being all-powerful and perhaps having a hive minded attitude. Due to there only being one council, it is easy to see that CM's votes are heavily influenced by how their fellow CMs vote on proposals.
  • If a few CMs on the council go AFK it is possible for proposals to be impossible to pass. Depending on the length of a council term, the likelihood of this possibly increases in the later days of the term.
  • With the current KPI system (which is being changed and may not exist on mainnet) a lot of CMs end up being quite busy towards the end of the term, which results in less votes being cast.

Idea

The idea would be to have 2 councils but rather than both being elected simultaneously they would instead have terms that overlap. In the following example I am using an 8 day council term as it is easier to convey visually.

  • This is a very basic idea so I am not addressing whether 3 elected councils would be able to vote on the same proposal and also not addressing election announce/vote/reveal cycles.
Requirements
  • A member should be barred from serving on both councils at once
    • This means if member_23 submits a transaction to announce for Election 8 they should not be able to announce for Election 9 (this should be enforced through the runtime)
  • The voting quorum requirements should require both Council A + Council B to vote in order for proposals to be approved/rejected/slashed.
    • in the current system, where we only have one council, the effective power of the council is 100%
    • with both Council A and Council B this would effectively mean that the power of each council is at 50:50
  • Proposals may need to have some specified time limit so that 4 council's cannot vote on the same proposal (in this example that would be 8 days)
    • This may not be required since this system is intended to allow more voices on the same proposal.
  • In some of the prior design files and GitHub issues it is shown that some expensive proposals (runtime upgrade, constitution) would require two distinct/subsequent councils to both approve the proposal in order for it to be approved.
    • This requirement for 2 subsequent councils could instead be removed and replaced with a far longer voting period on the proposal which would allow 2,3,4 or even more elected councils the ability to vote.
  • I see no reason why voters should be restricted from participating in all elections (this would mean that they can vote on any candidate, in any election, without restriction)
Example
DAY 1-Jan 2-Jan 3-Jan 4-Jan 5-Jan 6-Jan 7-Jan 8-Jan 9-Jan 10-Jan 11-Jan 12-Jan 13-Jan 14-Jan 15-Jan 16-Jan
Council A (elected term) 8 8 8 8 8 8 8 8 10 10 10 10 10 10 10 10
Council B (elected term) 7 7 7 7 9 9 9 9 9 9 9 9 11 11 11 11
  • Proposal 825 is submitted on Jan-8, even though this is when Council 8 only has one day left, it can also be voted on by Council 9 (and maybe council 10 also)
Benefits
  • Can reduce low vote proposals that are submitted at the end of the council terms, which removes blind spots in when proposals "should" be submitted
  • In the case of disenfranchisement with the current council, it provides a more immediate and a far more competitive means of both new people stepping up with specific goals they outline in their election announcements as well as a far better means for voters to direct their stake towards candidates they believe will solve issues that are currently occuring. This seems a lot less likely to happen with the current election system.
  • Can hopefully make the DAO be able to fully operate 24/7 irrespective of different timezones/holidays/weekends.
  • Can hopefully avoid situations where an elected council member goes AFK and a proposal subsequently doesn't reach quorum.
  • Can increase diversity in council membership
  • Can create some sense of competition between Council A + Council B
  • Increase proposal throughput
  • Remove votes being reset from proposals once a council term ends
  • Can increase community interest in voting for council members, since there would hopefully be a better pool of candidates on both sides.
  • Allows expensive proposals with a long voting period a better chance of getting a diversity of opinions.
  • By distributing power to two council's it potentially makes attacks against the governance system more difficult.
  • Potentially prevents a situation, where users see the council as being a single-minded entity composed of only the biggest bag holders
Disadvantages (and analysis)
  • Makes the system more complex than it already is (:
  • Could create a political party system
    • which in reality can already happen on the current system but doesn't have a remedy that the community can use as there is no opposing council to deal with
    • the only opposing council is the next council and if you're already a significant then you've already won
  • Due to the division of power of each council, it could create conflicts between the groups and result in an unequal division.
  • It may act as an unrealized weight on business critical proposals (such as hiring WG leads) and if there is significant back and forth between the opposing councils it may result in proposal stagnation/expiry or even a lack of quorum repeatedly.
  • Due to the requirement of a member not being able to participate in two elections at the same time, it would significantly increase the value of sybil attacks (this problem already exists on the current system)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or concrete entry points are named. Start by locating the runtime governance and election implementation, then review the linked related issues and prior design files; done would require an agreed specification for overlapping councils, voting periods, quorum, eligibility, and proposal handling.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
blockchain
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.