Repository Governance
Set up a repository's ownership and governance settings.
MakeOS offers repository owners or maintainers the ability to configure the ownership, governance and access control settings of a repository at creation time or through an approval vote system.
Proposals
A proposal is a mechanism by which a repository's properties and assets are updated.
To update a repository, a proposal describing the new changes must be submitted to the network and voted on by the repositories stakeholders.
The update will only take effect when the proposal is approved by a majority of the stakeholders.
MakeOS proposal system allows repository stakeholders to determine:
What the majority is.
Who can be classified as a stakeholder.
How long a proposal can last.
If a fee is required for proposal creation as a way to limit low-quality proposals.
Set Governance Config
A repository's governance properties can be set at creation time. It can also be set via a proposal after the repository have already been created.
At Creation Time
Here is how to set the governance properties of a repository creation time:
In the examples above, the repository governance config is a JSON structure that contains various config properties. The next section describes the various governance properties.
Governance Configuration
These are the properties used to configure repositories:
propVoter
Type: Integer
Description:
Set who can vote for or against proposals.
Options:
Value
Description
1
Only repository owners can vote
2
Only users who own validator or host tickets.
3
Only network stakeholders and repository owners.
propCreator
Type: Integer
Description:
Set who can create a proposal.
Options:
Value
Description
1
Anyone can create a proposal.
2
Only a repository owner can create a proposal.
propDur
Type: Integer
Description:
Set the lifespan of proposals. For example, a duration of 100, means voting ends after 100 blocks has been processed since the proposal was created.
propFee
Type: Float64
Description:
Set an amount a proposal creator must deposit in other to create a proposal. This can be used to discourage proposal spam. If propFeeDepDur
is not provided, the whole fee must be paid in the proposal creating transaction.
propFeeDepDur
Type: Integer
Description:
Set a duration within which proposal fees can be paid by anyone. If the duration is reached without all proposal fees deposited, the proposal’s will not reach the voting period and will be finalized as InsufficientDeposit
.
propQuorum
Type: Float64
Description:
Set the percentage of eligible voters that must vote. If this percentage is not reached by the end of the voting period, the proposal outcome is set to QuorumNotMet
.
propVetoQuorum
Type: Float64
Description:
Set the percentage of owners with veto powers that must vote NoWithVeto
to veto a decision. If a proposal is rejected with a veto, the outcome is set to RejectedWithVeto
.
propVetoOwnersQuorum
Type: Float64
Description:
Set the percentage of owners with veto powers that must vote NoWithVeto
to veto a proposal where network stakeholders are eligible voters. If a proposal is rejected with a veto, the outcome is set to RejectedWithVetoByOwners
. For example, this property is useful for repositories that want to gradually cede control to the community but do not think the community is fully ready or mature.
propThreshold
Type: Float64
Description:
Set the percentage of voters that need to vote in favour of the proposal Yes
for it to pass.
propFeeRefundType
Type: Integer
Description:
Determines how to handle refunds when a proposal did not pass.
Options:
Value
Description
1
Fee will not be refunded no matter the outcome.
2
Fee is refunded if the proposal was accepted.
3
Fee is refunded if the proposal was accepted or rejected via No
votes.
4
Fee is refunded if the proposal was accepted or rejected via No
and NoWithVeto
votes.
5
Fee is refunded if the proposal failed due to low voter threshold.
6
Fee is refunded if the proposal is accepted or it failed due to low voter threshold.
7
Fee is refunded if the proposal is accepted, rejected via No
votes or it failed due to low voter.
8
Fee is refunded if the proposal is accepted, rejected via No
and NoWithVeto
votes or it failed due to low voter threshold.
propTallyMethod
Type: Integer
Description:
Determines how votes are counted and weighted.
Options:
Value
Description
1
For repositories where only owners can vote, each vote is counted as a single (1) vote power.
2
For repositories where only owners can vote, the available native coin balance of an owner is counted as their vote power.
3
Vote power is the total number of non-decayed tickets owned or delegated to a voter.
4
Vote power is the total number of non-decayed tickets owned or delegated to a voter. Delegators may override a delegate's vote, thereby reducing the delegate’s vote power.
5
Vote power is the total number of non-decayed, non-delegated tickets owned by a voter.
6
Vote power is the total number of non-decayed, delegated tickets owned by a voter.
usePowerAge
Type: Boolean
Default: false
Description:
Determine whether to set the power age to the height of the block the proposal was processed in. If set to true, only owners that joined a repository before the proposal are allowed to vote. For stakeholders, only stakeholders with tickets that reached maturity at the time the proposal was created are allowed to vote.
creatorAsContrib
Type: Boolean
Default: true
Description:
Determine whether to add the creator of the repository as the first contributor of the repository.
noPropFeeForMergeReq
Type: Boolean
Default: true
Description:
Determine whether to disable proposal fees for merge request proposals. If it is set to false, a merge request will require a proposal fee to be paid if the repository’s propFee
is > 0.
Last updated