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

docs: add definition and voting rules of -contrib repositories #707

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

ingomueller-net
Copy link
Contributor

This PR adds the concept of -contrib repositories to the governance rules of Substrait. To that aim, the following changes are made:

  • Mention that there is a distinction between "core" and -contrib repositories in the introduction of the Substrait project. Those definitions are used in what follows.
  • Say that contributors can have write access to -contrib repositories. This allows people to make changes to those repositories without being promoted to committers.
  • Clarify that committers are people who have write access to "core" repositories. This makes clear that having write access to a -contrib repository doesn't make someone a committer.
  • Add a voting rule for -contrib repositories: Any contributor other than the proposer can vote. This is a pretty low bar but it ensures that one other human being with some relationship to the project approves the change.

Copy link

ACTION NEEDED

Substrait follows the Conventional Commits
specification
for
release automation.

The PR title and description are used as the merge commit message. Please update your PR title and description to match the specification.

This PR adds the concept of `-contrib` repositories to the governance
rules of Substrait. To that aim, the following changes are made:

* Mention that there is a distinction between "core" and `-contrib`
  repositories in the introduction of the Substrait project. Those
  definitions are used in what follows.
* Say that contributors can have write access to `-contrib`
  repositories. This allows people to make changes to those repositories
  without being promoted to committers.
* Clarify that committers are people who have write access to "core"
  repositories. This makes clear that having write access to a
  `-contrib` repository doesn't make someone a committer.
* Add a voting rule for `-contrib` repositories: Any contributor other
  than the proposer can vote. This is a pretty low bar but it ensures
  that one other human being with some relationship to the project
  approves the change.

Signed-off-by: Ingo Müller <ingomueller@google.com>
@ingomueller-net ingomueller-net changed the title docs: Add definition and voting rules of -contrib repositories docs: add definition and voting rules of -contrib repositories Sep 13, 2024
Copy link

@jpienaar jpienaar left a comment

Choose a reason for hiding this comment

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

(sending comments corresponding to some offline clarification questions asked)


### Committer

A committer is a developer who has write access to the code repositories and has a signed [Contributor License Agreement (CLA)](https://cla-assistant.io/substrait-io/substrait) on file. Not needing to depend on other people to make patches to the code or documentation, they are actually making short-term decisions for the project. The SMC can (even tacitly) agree and approve the changes into permanency, or they can reject them. Remember that the SMC makes the decisions, not the individual committers.
A committer is a developer who has write access to the core (i.e., non `-contrib`) repositories and has a signed [Contributor License Agreement (CLA)](https://cla-assistant.io/substrait-io/substrait) on file. Not needing to depend on other people to make patches to the code or documentation, they are actually making short-term decisions for the project. The SMC can (even tacitly) agree and approve the changes into permanency, or they can reject them. Remember that the SMC makes the decisions, not the individual committers.

Choose a reason for hiding this comment

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

Would a committer by default also have write access to contrib repos?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think the answer is yes. This should be clarified.

Copy link
Contributor

Choose a reason for hiding this comment

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

yes, agreed. committers and smc should have same or greater rights in -contrib.

@@ -27,11 +27,11 @@ A user is someone who uses Substrait. They may contribute to Substrait by provid

### Contributors

A contributor is a user who contributes to the project in the form of code or documentation. They take extra steps to participate in the project (loosely defined as the set of repositories under the github substrait-io organization) , are active on the developer mailing list, participate in discussions, and provide patches, documentation, suggestions, and criticism.
A contributor is a user who contributes to the project in the form of code or documentation. They take extra steps to participate in the project (loosely defined as the set of repositories under the github substrait-io organization), are active on the developer mailing list, participate in discussions, and provide patches, documentation, suggestions, and criticism. Contributers may be given write access to `-contrib` repositories.

Choose a reason for hiding this comment

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

Would write access would also require signing CLA?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think the answer is yes. This should be clarified.

Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
A contributor is a user who contributes to the project in the form of code or documentation. They take extra steps to participate in the project (loosely defined as the set of repositories under the github substrait-io organization), are active on the developer mailing list, participate in discussions, and provide patches, documentation, suggestions, and criticism. Contributers may be given write access to `-contrib` repositories.
Contributers may be given write access to `-contrib` repositories.
Suggested change
A contributor is a user who contributes to the project in the form of code or documentation. They take extra steps to participate in the project (loosely defined as the set of repositories under the github substrait-io organization), are active on the developer mailing list, participate in discussions, and provide patches, documentation, suggestions, and criticism. Contributers may be given write access to `-contrib` repositories.
Contributors are given write access to specific `-contrib` repositories by an SMC consensus vote per repository. The vote should be open for a week to allow adequate time for other SMC members to voice any concerns prior to providing write access.

@ingomueller-net
Copy link
Contributor Author

(sending comments corresponding to some offline clarification questions asked)

Thanks, @jpienaar! Let me add another question that we may or may not want to address in the guidelines: How does one get the Github permissions to submit a contrib proeject.

@westonpace
Copy link
Member

westonpace commented Sep 13, 2024

Any contributor other than the proposer can vote. This is a pretty low bar but it ensures that one other human being with some relationship to the project approves the change.

I think that's fine, and a good minimum to have.

I guess my question is really still, for a particular contrib project X, who has write access to it? In particular, because we don't yet have a "contributor role" in github it is somewhat under defined as "anyone who has submitted code before can call themselves a contributor".

Here's a few examples we could take (feel free to propose more):

Approach A: Committers (or maybe just the SMC) can give any contributor (really just "github account" in this case) write access to a contrib project as a judgement call (based on discussion with other contributors in the project, past history of positive open source interaction, etc.). This is a more narrow, selective approach that requires a little bit more up-front work to get access to a contrib project.

Approach B: We create a Github role for contributors. Anyone may ask to have the role and SMC should hand it out freely. As long as they have it they can be given write access to all contrib repos. This is a much broader approach and could potentially let in bad actors. We could make sure to put in rules like "no force push, etc." so that hopefully any malicious behavior is reversible.

Approach C: Every contrib project has an owner, determined by the committer/SMC that creates the contrib project. That owner has not just write access but also admin access to the repo and can grant others write / admin privileges to the repo as well (need to confirm this kind of role is possible in Github). This is more individualized, letting each contrib project owner have a lot more control over who can access the project.

@ingomueller-net
Copy link
Contributor Author

I guess my question is really still, for a particular contrib project X, who has write access to it? In particular, because we don't yet have a "contributor role" in github it is somewhat under defined as "anyone who has submitted code before can call themselves a contributor".

Here's a few examples we could take (feel free to propose more):
[...]

Yeah, this question needs clarification. I think all of the three proposals are valid. I don't think we should tailer this too the concrete case of the MLIR dialect, though, so my opinion is only one of many to consider.

Independent of these options, I do get the feeling that there is a certain hierarchy within a -contrib project, maybe regular contributors and "contrib committers", which are those with write and review privileges.

I wait a bit more to give others the time to chime in and propose formulation based on that...

@EpsilonPrime
Copy link
Member

Do we want to clarify admin rights as well? Presumably the ability to transfer the project would remain under the control of SMC members but is there some amount of control that we want to cede to allow for project management? I lean towards keeping all of the projects the same in this regard.


### Committer

A committer is a developer who has write access to the code repositories and has a signed [Contributor License Agreement (CLA)](https://cla-assistant.io/substrait-io/substrait) on file. Not needing to depend on other people to make patches to the code or documentation, they are actually making short-term decisions for the project. The SMC can (even tacitly) agree and approve the changes into permanency, or they can reject them. Remember that the SMC makes the decisions, not the individual committers.
A committer is a developer who has write access to the core (i.e., non `-contrib`) repositories and has a signed [Contributor License Agreement (CLA)](https://cla-assistant.io/substrait-io/substrait) on file. Not needing to depend on other people to make patches to the code or documentation, they are actually making short-term decisions for the project. The SMC can (even tacitly) agree and approve the changes into permanency, or they can reject them. Remember that the SMC makes the decisions, not the individual committers.
Copy link
Contributor

Choose a reason for hiding this comment

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

yes, agreed. committers and smc should have same or greater rights in -contrib.

@@ -64,6 +64,7 @@ The rules require that a community member registering a negative vote must inclu
| Non-breaking function introductions | 1 (not including proposer) | Committers | Github PR |
| Non-breaking extension additions & non-format code modifications | 1 (not including proposer) | Committers | Github PR |
| Changes (non-breaking or breaking) to a Substrait *library* (i.e. substrait-java, substrait-validator) | 1 (not including proposer) | Committers | Github PR |
| Changes to a Substrait `-contrib` repository | 1 (not including proposer) | Contributers | Github PR |
Copy link
Contributor

Choose a reason for hiding this comment

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

Here and above... should be "Contributors" not "Contributers"

@@ -27,11 +27,11 @@ A user is someone who uses Substrait. They may contribute to Substrait by provid

### Contributors

A contributor is a user who contributes to the project in the form of code or documentation. They take extra steps to participate in the project (loosely defined as the set of repositories under the github substrait-io organization) , are active on the developer mailing list, participate in discussions, and provide patches, documentation, suggestions, and criticism.
A contributor is a user who contributes to the project in the form of code or documentation. They take extra steps to participate in the project (loosely defined as the set of repositories under the github substrait-io organization), are active on the developer mailing list, participate in discussions, and provide patches, documentation, suggestions, and criticism. Contributers may be given write access to `-contrib` repositories.
Copy link
Contributor

Choose a reason for hiding this comment

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

Suggested change
A contributor is a user who contributes to the project in the form of code or documentation. They take extra steps to participate in the project (loosely defined as the set of repositories under the github substrait-io organization), are active on the developer mailing list, participate in discussions, and provide patches, documentation, suggestions, and criticism. Contributers may be given write access to `-contrib` repositories.
Contributers may be given write access to `-contrib` repositories.
Suggested change
A contributor is a user who contributes to the project in the form of code or documentation. They take extra steps to participate in the project (loosely defined as the set of repositories under the github substrait-io organization), are active on the developer mailing list, participate in discussions, and provide patches, documentation, suggestions, and criticism. Contributers may be given write access to `-contrib` repositories.
Contributors are given write access to specific `-contrib` repositories by an SMC consensus vote per repository. The vote should be open for a week to allow adequate time for other SMC members to voice any concerns prior to providing write access.

@@ -64,6 +64,7 @@ The rules require that a community member registering a negative vote must inclu
| Non-breaking function introductions | 1 (not including proposer) | Committers | Github PR |
| Non-breaking extension additions & non-format code modifications | 1 (not including proposer) | Committers | Github PR |
| Changes (non-breaking or breaking) to a Substrait *library* (i.e. substrait-java, substrait-validator) | 1 (not including proposer) | Committers | Github PR |
| Changes to a Substrait `-contrib` repository | 1 (not including proposer) | Contributers | Github PR |
Copy link
Contributor

Choose a reason for hiding this comment

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

Let's add an additional line for adding a contributor to a -contrib repo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants