Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CIP-0136? | Governance metadata - Constitutional Committee vote rationale #878

Open
wants to merge 18 commits into
base: master
Choose a base branch
from

Conversation

Ryun1
Copy link
Collaborator

@Ryun1 Ryun1 commented Aug 7, 2024

This proposal aims to provide a specification for off-chain metadata vocabulary that can be used to give context to Constitutional Committee votes.

📄 Rendered Document

@rphair rphair added the Category: Metadata Proposals belonging to the 'Metadata' category. label Aug 7, 2024
CIP-governance-metadata-cc-rationale/README.md Outdated Show resolved Hide resolved
CIP-governance-metadata-cc-rationale/README.md Outdated Show resolved Hide resolved
CIP-governance-metadata-cc-rationale/README.md Outdated Show resolved Hide resolved
CIP-governance-metadata-cc-rationale/README.md Outdated Show resolved Hide resolved
@Ryun1 Ryun1 force-pushed the governance-metadata-cc-rationale branch from 62b1ce9 to 5f5efd8 Compare August 19, 2024 05:44
@ptrdsh
Copy link
Contributor

ptrdsh commented Aug 29, 2024

cool stuff. thx for starting this.
Is the difference between CC vote rationales and DRep/SPO vote rationales crucial? aka: couldnt we define one "voting rationale metadata standard" instead of 3?

@Ryun1
Copy link
Collaborator Author

Ryun1 commented Aug 29, 2024

@ptrdsh

Is the difference between CC vote rationales and DRep/SPO vote rationales crucial? aka: couldnt we define one "voting rationale metadata standard" instead of 3?

I feel that CC votes are significantly different to those of SPOs and DReps
With CC voting on the constitutionality of actions whereas SPOs and DReps voting to represent their delegators

With that said, a unified standard could probably be done
but would require a lot more iterations and a lot more input to mature the standard
So choosing the path of least resistance I think it makes sense to start with this standard,
and push that idea to the future

@ptrdsh
Copy link
Contributor

ptrdsh commented Sep 17, 2024

Heya! nice progress! :)

2 quick and 1 more substantial question:
Did you not add a title on purpose for the rationale?
And.. did you purposely name similar fields different from cip108?

Thinking of future GUIs that show all rationales (proposal, cc vote, drep vote, spo vote) and general coherency, the shortest text in the current design is "summary", while we have a "title" in CIP108. May be helpful to add one.
Also, I think "summary" is similar in meaning to "abstract" and Id stick with one wording across CIPs, unless they are purposely named differently for differentiation. Same goes for rationaleStatement (=rationale).

However... Again, id like to raise the question as to why we couldnt just add the CC (and Drep) specific fields in the CIP108 standard.. seems unintuitive to have those standards be spread out, albeit extremely similar in content, with maybe 1-2 fields extra.

@Ryun1
Copy link
Collaborator Author

Ryun1 commented Sep 17, 2024

@ptrdsh

Thinking of future GUIs that show all rationales (proposal, cc vote, drep vote, spo vote) and general coherency, the shortest text in the current design is "summary", while we have a "title" in CIP108. May be helpful to add one.

I'm not against adding an even shorter field
For me a title makes more sense for Governance Actions, where you are trying to catch a voter's attention
For CC Vote rationales, im not sure that is as needed

Also, I think "summary" is similar in meaning to "abstract" and Id stick with one wording across CIPs, unless they are purposely named differently for differentiation. Same goes for rationaleStatement (=rationale).

We can reuse elements if people would prefer it

However... Again, id like to raise the question as to why we couldnt just add the CC (and Drep) specific fields in the CIP108 standard.. seems unintuitive to have those standards be spread out, albeit extremely similar in content, with maybe 1-2 fields extra.

We certainly could, but there are two reasons why Id prefer to keep them separate:

  • They have different scopes, so forcing tools which only care about governance action data to also support CC Vote rationales is a bit wonky
  • I find it simpler and easier to just add to vocabulary for each CIP
    • For me it is easier to explain that CIP108 is for governance actions and CIPXXX is for CC vote rationale
    • And I don't see a massive benefit to reuse

@Ryun1 Ryun1 marked this pull request as ready for review September 17, 2024 14:08
@Ryun1 Ryun1 added the State: Triage Applied to new PR afer editor cleanup on GitHub, pending CIP meeting introduction. label Sep 17, 2024
@rphair rphair added State: Confirmed Candiate with CIP number (new PR) or update under review. and removed State: Triage Applied to new PR afer editor cleanup on GitHub, pending CIP meeting introduction. labels Sep 17, 2024
@rphair rphair changed the title CIP-???? | Governance metadata - Constitutional Committee vote rationale CIP-0136? | Governance metadata - Constitutional Committee vote rationale Sep 17, 2024
Copy link
Collaborator

@rphair rphair left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Ryun1 you're good to go with 0136 & I know you won't forget to rename the containing directory & update the document link in the OP 🎉

CIP-governance-metadata-cc-rationale/README.md Outdated Show resolved Hide resolved
CIP-governance-metadata-cc-rationale/README.md Outdated Show resolved Hide resolved
@gitmachtl
Copy link
Contributor

I would add that an additional authors field can be used too, but not a must. That should actually be also in CIP-119 tbh. So even if the offchain metadata is viewed out of context, there are still the names and signatures from the authors present in the file.

@phillewis
Copy link

I don't think we need to try and shoehorn everything into a common standard. CIP-108 is asking a question (e.g. should we make a parameter change, should we withdraw from the treasury), whereas this CIP is responding (e.g. that isn't constitutional because), so the information needs to be different.

The only thing that I am thinking about is the internalVote object. Do we want to give the option of providing more information than just the number of each vote type? Instead of an integer, it could be an array of identifiers. A count of each array would provide the same value, but could be extended with some tools to show who voted for each. Ideally we should have a seperate CIP for different identifier types (e.g. strings for a simple name, or DIDs for a more detailed identifier), as these could be used across different standards (such as DRep metadata).

@phillewis
Copy link

Also, what realistically is the difference between a Summary and a Conclusion? They feel the same to me.

@Willburn
Copy link

Willburn commented Sep 19, 2024

Also, what realistically is the difference between a Summary and a Conclusion? They feel the same to me.

Writing two rationales in this format it does seem a bit redundant from my experience so far as when I reread it there is some information repeated. But the idea was to have a shorter summary (200 char limits currently and should perhaps be doubled) that was quickly viewable by anyone as the main info on the whole rationale vs a longer conclusion that could encompass all aspects of any conclusion.

@phillewis
Copy link

Also just to clarify, is the expectation that there will be one of these responses for each CC member, or one responses from the entire CC?

@Willburn
Copy link

Willburn commented Oct 1, 2024

Also just to clarify, is the expectation that there will be one of these responses for each CC member, or one responses from the entire CC?
I would say each CC member (so say a single rationale for one council that holds a CC member spot) based on what was established in Longmonth of Independence for each CC member in terms of rationale and perspectives used to get to a conclusion.

@phillewis
Copy link

Also just to clarify, is the expectation that there will be one of these responses for each CC member, or one responses from the entire CC?

I would say each CC member (so say a single rationale for one council that holds a CC member spot) based on what was established in Longmonth of Independence for each CC member in terms of rationale and perspectives used to get to a conclusion.

Not sure what you are referring to with regards to Longmont, but it sounds like you are essentially suggesting 7 independent committees rather than 1 ICC.

@Willburn
Copy link

Willburn commented Oct 1, 2024

Also just to clarify, is the expectation that there will be one of these responses for each CC member, or one responses from the entire CC?

I would say each CC member (so say a single rationale for one council that holds a CC member spot) based on what was established in Longmonth of Independence for each CC member in terms of rationale and perspectives used to get to a conclusion.

Not sure what you are referring to with regards to Longmont, but it sounds like you are essentially suggesting 7 independent committees rather than 1 ICC.

7 independent council members of the ICC who vote as the ICC body. In Longmont it was discussed if each of the councils needed to have one unified way of interpreting and if this is even possible in a decentralized governance system. The conclusion there among all the councils that attended was that there is independance of thought in each of the councils and we publish rationale for each of the votes. The blockchain aggregates our votes as a collective ICC.

@phillewis
Copy link

Also just to clarify, is the expectation that there will be one of these responses for each CC member, or one responses from the entire CC?

I would say each CC member (so say a single rationale for one council that holds a CC member spot) based on what was established in Longmonth of Independence for each CC member in terms of rationale and perspectives used to get to a conclusion.

Not sure what you are referring to with regards to Longmont, but it sounds like you are essentially suggesting 7 independent committees rather than 1 ICC.

7 independent council members of the ICC who vote as the ICC body. In Longmont it was discussed if each of the councils needed to have one unified way of interpreting and if this is even possible in a decentralized governance system. The conclusion there among all the councils that attended was that there is independance of thought in each of the councils and we publish rationale for each of the votes. The blockchain aggregates our votes as a collective ICC.

Yeah, I think the idea of a committee is a bit of a misnomer. If we are reviewing and responding to GAs as independent entities then we aren't "a collective ICC".

We should probably propose a name change to something that better represents the true function.

@Willburn
Copy link

Willburn commented Oct 2, 2024

One could argue we are a decentralized collective as A) vote aggregate of all of us is used for any tresholds and B) we share information with each other (so far the practice atleast) so even if we have independant votes for each cc I will certainly be promoting a culture of collaboration in the council I am part of as that will cause us ot have better rationales and more effective and efficient governance overall. I look forward to seeing how this evolves.

In any case I believe the CIP structure should be neutral to how the structure of the CC evolves (councils, collaborative or not etc.), and provide a standardized data format for rationale(s) to be published.

@phillewis
Copy link

I don't think we need to try and shoehorn everything into a common standard. CIP-108 is asking a question (e.g. should we make a parameter change, should we withdraw from the treasury), whereas this CIP is responding (e.g. that isn't constitutional because), so the information needs to be different.

The only thing that I am thinking about is the internalVote object. Do we want to give the option of providing more information than just the number of each vote type? Instead of an integer, it could be an array of identifiers. A count of each array would provide the same value, but could be extended with some tools to show who voted for each. Ideally we should have a seperate CIP for different identifier types (e.g. strings for a simple name, or DIDs for a more detailed identifier), as these could be used across different standards (such as DRep metadata).

Just following up on this and whether there is any appetite to explore identifiers in the internalVote? Don't want to hold up this progressing, so if others @Ryun1 @Willburn @ptrdsh @thenic95 don't think it is necessary we could try to wrap this one up.

@Ryun1
Copy link
Collaborator Author

Ryun1 commented Oct 5, 2024

@phillewis

Just following up on this and whether there is any appetite to explore identifiers in the internalVote? Don't want to hold up this progressing, so if others @Ryun1 @Willburn @ptrdsh @thenic95 don't think it is necessary we could try to wrap this one up.

I dont know if it is really needed, unsure of the appetite for this
And I dont know how this could / should be done, im wary of making this standard too complex to implement
For me, id push something like this to a future version, if others agree?

@phillewis
Copy link

@phillewis

Just following up on this and whether there is any appetite to explore identifiers in the internalVote? Don't want to hold up this progressing, so if others @Ryun1 @Willburn @ptrdsh @thenic95 don't think it is necessary we could try to wrap this one up.

I dont know if it is really needed, unsure of the appetite for this

And I dont know how this could / should be done, im wary of making this standard too complex to implement

For me, id push something like this to a future version, if others agree?

Yeah sounds good. Don't want to hold it up unnecessarily 👍

@Ryun1 Ryun1 force-pushed the governance-metadata-cc-rationale branch from 938f00e to 1369c97 Compare October 7, 2024 09:27
that are in conflict with a given proposal.
```

This mandates that the CC must provide rationale for at least `no` votes.
Copy link
Contributor

@Hornan7 Hornan7 Oct 7, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This mandates that the CC must provide rationale for at least `no` votes.
This mandates that the CC must provide rationale for `Yes, `No` and `Abstain` votes.

Some might not realize the true meaning behind the machine-readable "no" in this context due to the way it is written, and it would help preventing any confusion or unnecessary effort to explain their decision when abstaining from voting.

Kudos to the authors of this CIP! I truly appreciate the meticulous effort they put into it. Everything else looks great to me.
Awesome work @Ryun1 , @Willburn 😃👍

Copy link

@Willburn Willburn Oct 7, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am neutral on if it should be manditatory for all governance actions or only no as it depends on interpretation (I personally think same as Hornan but maybe others do not). Lowest common denominator seems to be manditatory for a no vote.

I am also curious if we should up the summary field to 300 chars? Have anyone tried to write a summary with the rationales so far? 200 seems a bit too limiting its not a CC tweet :)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This mandates that the CC must provide rationale for at least `no` votes.
This mandates that the CC must provide rationale for `Yes, `No` and `Abstain` votes.

Some might not realize the true meaning behind the machine-readable "no" in this context due to the way it is written, and it would help preventing any confusion or unnecessary effort to explain their decision when abstaining from voting.

Kudos to the authors of this CIP! I truly appreciate the meticulous effort they put into it. Everything else looks great to me.
Awesome work @Ryun1 , @Willburn 😃👍

This change suggests that the constitution mandates a rationale for all decision types, which isn't accurate. While we could recommend providing a rationale for all decisions, suggesting it is mandated would be misleading.

Copy link
Contributor

@Hornan7 Hornan7 Oct 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an interesting point. I didn't see any mention of CIP-136 in the Constitution, nor any requirement to use a metadata standard except for governance actions in Article 3, Section 6.

Article 6, Section 5 states: 'The Constitutional Committee shall publish each decision.' This could leave a lot of room for interpretation regarding whether this requirement applies only to a 'No' vote or to all vote types. However, there’s still no mention of mandatory metadata standards for the vote rationales.

Don't get me wrong; I'm just trying to clarify potential confusion in good faith. If this isn't optimal and you have a better suggestion, I would be glad to read it.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an interesting point. I didn't see any mention of CIP-136 in the Constitution, nor any requirement to use a metadata standard except for governance actions in Article 3, Section 6.

Article 6, Section 5 states: 'The Constitutional Committee shall publish each decision.' This could leave a lot of room for interpretation regarding whether this requirement applies only to a 'No' vote or to all vote types. However, there’s still no mention of mandatory metadata standards for the vote rationales.

Don't get me wrong; I'm just trying to clarify potential confusion in good faith. If this isn't optimal and you have a better suggestion, I would be glad to read it.

Could you please confirm which version of the constitution you are referring to? Article VI Section 5 in the Interim Constitution (https://constitution.gov.tools/en/interim-constitution) refers to tooling. Section 4 refers to publishing a rationale, but it says when "voting no on a proposal".

If the language in this CIP references the constitution, it should accurately represent the current constitution. Maybe it would be safer not to reference the constitution in this CIP, given it can change.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Article VI Section 4 is what I was referencing

https://constitution.gov.tools/en/interim-constitution#section-3-4

Copy link
Contributor

@Hornan7 Hornan7 Oct 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, @Ryun1. Yes, as @phillewis mentioned, it seems I don’t have the correct version. I apologize for that. In mine, it’s in Section 6 😅. I’ll definitely rely on the one from the Intersect repo moving forward. But I’m glad it’s mentioned in Section 4.

Perhaps using the word 'mandate' isn’t the best approach, or as Phil mentioned, referencing the constitution. These are metadata we’re going to use anyway, and over the months, they’ll become standard practice. I wouldn’t mind if there’s no formal mandate to use them, because I’m sure we’ll adopt them as standard practice regardless.

My original intention was to prevent people from thinking that 'mandatory' includes 'abstain from voting' based on how the sentence originally sounded. But if we can easily find a way to phrase it that avoids this confusion, my issue will be resolved. 😇👍

@ptrdsh
Copy link
Contributor

ptrdsh commented Nov 13, 2024

@Ryun1
I have a small request for change/addition before this gets ratified.

Id like to add "doNoVote" to the individual internalVote result options to document individual CC members who preferred that the CC would not vote at all (aka.. votes to not participate) on a given GA.

    "internalVote": {
      "constitutional": 1,
      "unconstitutional": 0,
      "abstain": 0,
      "doNotVote": 0,
      "didNotVote": 0
      }

Name of this option is up for discussion of course. "doNotVote" alongside "didNotVote" may be confusing.
Alternative idea:

    "internalVote": {
      "constitutional": 1,
      "unconstitutional": 0,
      "abstain": 0,
      "noVote": 0,
      "absent": 0
      }

@gitmachtl
Copy link
Contributor

gitmachtl commented Nov 13, 2024

why is there binary 0/1 used and not false/true? json can handle boolean values.

@ptrdsh
Copy link
Contributor

ptrdsh commented Nov 13, 2024

why is there binary 0/1 used and not false/true? json can handle boolean values.

its just an unfortunate example.
those are integers, indicating how many internal yes/no votes were cast by the individual CC member's humans.

check how its used in this vote rationale: https://ipfs.io/ipfs/QmZLsHGah3NMvWeS8kr1pUeCZR8bxTkYL3fgjs2VqNacnV

@gitmachtl
Copy link
Contributor

gitmachtl commented Nov 13, 2024

ah, ok 😄

@thenic95
Copy link

Thank you, @ptrdsh! I support this addition. For context, we introduced this fourth voting option [Yes/No/Abstain/Not Vote] for the individual members of the Governance Advisory Team of the Cardano Foundation to ensure all possible scenarios are genuinely reflected when assessing the constitutionality of governance actions.

I think the following naming convention makes a lot of sense:

    "internalVote": {
      "constitutional": 1,
      "unconstitutional": 0,
      "abstain": 0,
      "noVote": 0,
      "absent": 0
      }

@Willburn
Copy link

Willburn commented Nov 13, 2024

Makes sense. Keep in mind that a majority no vote would mean the rationale is not going to be onchain since its presumably not voted on. Still valuable for community to know dissenting voice on no vote.

@ptrdsh
Copy link
Contributor

ptrdsh commented Nov 13, 2024

Yep Agreed. Also thought of that scenario but transparent dissenting seems valuable enough to include it. Shines a light on background discussions and if someone does vote not to vote, the quorum would be incomplete without it.

@phillewis
Copy link

Given the controversy over CC members not voting, adding this to a CIP may be perceived as condoning not voting.

Does splitting didNotVote into two so one can signal motive actually benefit anyone consuming the information?

@ptrdsh
Copy link
Contributor

ptrdsh commented Nov 14, 2024

Whether the option is desired or controversial at this point in time is not relevant imo, the option of not voting is an actual option CC members can consider, so why not reflect it.

What's worth considering here is that there is a key difference to Drep rationales, as CC members are councils consisting of groups of people with individual votes. Dreps typically dont operate and are not intended to be run by groups.
NoVote is thus also really only an option that the individuals of CC members "sensibly" could make, which is the purpose of this CIP.

The concern that this option, by definition, can never have the majority votes as it would contradict itself then, is valid, but as stated above..

  • making dissenting votes transparent is useful to the public
  • since the option exists to the individual (irrespective of that being acceptable or not), that persons consideration would either be misrepresented in a [didNotVote] or [abstain] vote, both of which are too wrong to use, or not counted at all, which reduces the total quorum size of the CC to a number of votes which is not in line with that CCs public principles document/.. .

@phillewis
Copy link

Fair enough. I don't have a strong objection. Just thought it might be something worth considering.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Category: Metadata Proposals belonging to the 'Metadata' category. State: Confirmed Candiate with CIP number (new PR) or update under review.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants