Fundamental questions on how governance works - does it result in changes, or just voting results?

Apologies in advance if this is painfully obvious. I looked at the docs and while I think I am right, since governance is indeed such a critical topic, I wanted to ask these literal questions to clear my mind.

  1. Does governance only result in a determination of whether or not the community actually wants a certain motion to pass (ie: if all three of the requirements are met for a proposal to pass), or does it also result in the actions related to the motion actually getting executed as well?

My understanding is that governance is simply a textual description that people can vote on, abstain, or veto. So if it passes, I suspect that at MOST, it means that officially, the community is spoken. At this point, the maintainers have to “implement” whatever it is that was voted in support of. It might be a matter of possibly changing the inflation rate. Or adding a new feature to the software. So governance does NOT actually result in actions being taken but merely an official guideline that the community has spoken and therefore an expectation for action to happen?

  1. I noticed that when I built my own application chain, there is no governance module included. Is there some documentation on what I need to do, to include governance, short of reverse engineering what is in Gaia’s own codebase?

Thanks.

2 Likes

Hi Neeraj, good question!

  1. There are currently three types of governance proposal. One is text-based, and is used for signalling social co-ordination to effect change (ie. nothing is changes automatically). Another type is the community-spend proposal, which automatically moves funds from the Community Pool to the specified account. The third is a parameter-change proposal, which changes any number of parameters automatically, and without having to halt the chain or run new software.

  2. I’m not sure how to answer this question, but perhaps @bez or @jack could assist.

1 Like

Thanks very much. That is very helpful in terms of my first question in particular. So it sounds like there are indeed two types of proposals that effectual real changes if passed.

Is there someplace in the official docs I can find this information? I would much prefer to look for information myself than ask questions on the forum, if avoidable.

What happens if you do not even have governance support in your chain, to effectuate a community spend proposal or a parameter change proposal? For example, our current chain has no governance module. If we launched it to the public, does this mean it would now be impossible to get access to say community funds, or alternatively, to effectuate a parameter change?

What @Gavin stated is correct. Those are the main proposal types. In fact, there is actually a fourth that wasn’t mentioned – software upgrade proposal.

So as you can see, all the proposal types except for TextProposal have some sort of inherent actionable. Whereas a TextProposal is merely a means to drive a signaling mechanism of agreed-upon intent or will.

To answer (2), nothing comes “included” so to speak. When you design and implement your application, you implicitly have to choose which modules you include and wire up (e.g. staking, gov, evidence, etc…). All of these are defined in the Cosmos SDK. In addition, you may choose to implement and wire up your own modules (many applications do this). So as you can see, x/gov will not come included unless you choose to include it. Doing so is pretty trivial. We’ve tried to design the SDK to make this UX as easy as possible. This is not to say there isn’t room for improvement.

What happens if you do not even have governance support in your chain, to effectuate a community spend proposal or a parameter change proposal?

Then you don’t have governance – simple as that. You can choose to use the x/gov module defined in the SDK or you can design and build your own.

If we launched it to the public, does this mean it would now be impossible to get access to say community funds, or alternatively, to effectuate a parameter change?

Inherently, yes it would be impossible. However, you can, again, choose to implement your own or use the SDK’s.

2 Likes