-
Notifications
You must be signed in to change notification settings - Fork 199
feat(maintenance): clarifications on decision making and reviewer/maintainer teams #864
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
Changes from all commits
addb134
ff5e23b
dd0baee
87d13df
0a6570d
b7d96a8
b2bcafb
7aaf4e9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,20 +1,5 @@ | ||
| # For an overview of the governance model of cslib, please refer to /GOVERNANCE.md | ||
| # For an overview of the governance model of cslib, please refer to /GOVERNANCE.md and /DECISION_MAKING.md | ||
|
|
||
| ### Global access | ||
| # This should be used sparingly. | ||
| # - @fmontesi has global access as lead maintainer. | ||
| # - @chenson2018 has global access to help with the release pipeline, which sometimes requires | ||
| # editing files in different areas of the codebase. | ||
|
|
||
| * @fmontesi @chenson2018 | ||
| * @fmontesi @chenson2018 @kim-em @arademaker @sorrachai | ||
| /.github/CODEOWNERS @fmontesi | ||
|
|
||
| ### Area access | ||
| # Each area maintainer has access to parts that pertain them. They get automatically asked for | ||
| # reviewing new PRs that touch those areas. | ||
| /Cslib/Algorithms/ @fmontesi @sorrachai @chenson2018 | ||
| /Cslib/Foundations/Logic/ @arademaker @fmontesi @chenson2018 | ||
| /Cslib/Logics/ @arademaker @fmontesi @chenson2018 | ||
| /Cslib/Languages/LambdaCalculus/ @chenson2018 @fmontesi | ||
| /.github/workflows @kim-em @fmontesi @chenson2018 | ||
| /scripts @kim-em @fmontesi @chenson2018 | ||
| /DECISION_MAKING.md @fmontesi |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,107 @@ | ||
| # Decision making | ||
|
|
||
| This document describes the framework for making decisions in CSLib. | ||
|
|
||
| The processes described here are designed to support distributed, consensus-oriented decision making. | ||
| They are expected to be followed. However, in general, CSLib is a collaborative project and no procedural framework can anticipate every situation. | ||
| When distributed decision making cannot take place because of unavailable area-specific leadership or unresolved disagreement, the Lead Maintainer may intervene as the final decision-making authority (see [exceptional cases](#exceptional-cases)). | ||
|
|
||
| ## Pull request inclusion | ||
|
|
||
| All code merged into CSLib must go through a pull request (PR). | ||
|
|
||
| ### Review | ||
|
|
||
| Every PR must be reviewed before it is merged. | ||
|
|
||
| Reviews are not restricted to members of the CSLib reviewer or maintainer teams. We welcome reviews from all contributors and consider reviewing work an important contribution in its own right. Regularly providing thoughtful and constructive reviews is also one of the ways in which contributors can establish the trust that may lead to an invitation to join the CSLib reviewer team. | ||
|
|
||
| Members of the CSLib reviewer team are trusted contributors whose technical judgement is recognised by the maintainer team. Maintainers may rely on their reviews as substantive technical scrutiny of the parts of a pull request they have reviewed. | ||
|
|
||
| We expect all review comments to be constructive, technically motivated, and aimed at improving the contribution. Whenever possible, comments should be grounded in concrete examples or plausible use cases. When suggesting an alternative, concrete examples are highly welcome. | ||
|
|
||
| CSLib strongly encourages reuse of existing infrastructure whenever appropriate, from within CSLib and its dependencies. Reviewers and contributors should therefore consider whether a contribution can build on existing definitions, abstractions, APIs, or results rather than introducing parallel ones. Avoiding unnecessary duplication and fragmentation is an important consideration when evaluating a contribution. | ||
|
|
||
| This principle is not absolute. Alternative abstractions or implementations can be valuable when they address limitations of existing infrastructure, support different use cases, or otherwise provide a clear technical benefit. In such cases, contributors should explain the motivation for introducing the alternative and, where relevant, its relationship to existing approaches. | ||
|
|
||
| Adding or removing dependencies is managed carefully, taking into account the required CI/CD infrastructure, maintenance implications, and alignment with the broader Lean ecosystem. | ||
|
|
||
| Review and acceptance are distinct: a review provides technical scrutiny of a contribution; acceptance authorises its inclusion in CSLib. A maintainer may both review and accept the same PR. | ||
|
|
||
| ### Acceptance | ||
|
|
||
| To be accepted, a PR must: | ||
| 1. be approved by at least one maintainer; and | ||
| 2. have all of its substantive parts reviewed. | ||
|
|
||
| Reviewers should use their best judgement in determining the scope of their review. A reviewer may consider themselves able to vouch for the PR as a whole, or only for particular parts of it. When the scope is limited, this should be made clear so that additional reviewers can cover the remaining parts. Collectively, the reviews should provide adequate scrutiny of the entire contribution. | ||
|
|
||
| When these conditions are satisfied, they are sufficient for merging provided that there are no unresolved objections from members of the CSLib reviewer or maintainer teams. | ||
|
fmontesi marked this conversation as resolved.
|
||
|
|
||
| The decision to merge a pull request must be made by a maintainer. Maintainers act as responsible technical architects of CSLib and are expected to consider the broader coherence and long-term technical direction of the library when accepting contributions. | ||
| A maintainer may, at their discretion, delegate the act of merging to a member of the reviewer team. This is commonly done when a pull request has been accepted subject only to minor revisions. | ||
|
|
||
| The maintainers authorised to accept pull requests are codified in [CODEOWNERS](/.github/CODEOWNERS). | ||
|
|
||
| If a maintainer is the author of a pull request, the required maintainer approval must come from another maintainer. Simple PRs for keeping CSLib up to date with the rest of the Lean ecosystem (e.g., dependency version bumps or fixes to deal with new Lean versions) are exempt from this rule. | ||
|
|
||
| ### Disagreement | ||
|
|
||
| Technical disagreement is a normal and useful part of collaborative development. An objection should therefore be treated as a request to resolve a substantive concern, rather than as a vote against a contribution. | ||
|
|
||
| If a member of the CSLib reviewer or maintainer teams raises an objection to a PR, the PR should not be merged while that objection remains unresolved. The participants should first attempt to reach consensus through technical discussion. | ||
|
|
||
| Consensus does not require that every participant prefer the final outcome. It means that objections have been considered and resolved sufficiently for the project to move forwards. | ||
|
|
||
| When disagreement cannot be resolved through the ordinary review process, the matter may be escalated to the Lead Maintainer. The Lead Maintainer has final authority to resolve such disagreements and determine how the project should proceed. | ||
| In doing so, the Lead Maintainer will consider the arguments raised and may seek further feedback from the reviewer and maintainer teams. | ||
|
|
||
| ## Appointment of reviewers and maintainers | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there any mention of the "Technical leads" role that exists on the website? This should be clarified if it is still a category we are keeping.
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Not really. The 'technical lead' figure was inherited from the cslib/CSLib merge as a way to indicate that there were some people committed to leading some particular developments, but I think that it doesn't really play a role when it comes to decision making as in this document. A technical lead or whoever else that wants to vote on these things should aim to become reviewer or maintainer.
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Okay. If it is vestigial, then we should consider cleaning this up sooner rather than later to avoid confusion and update the website. If it is to remain, this should be clarified. |
||
|
|
||
| Reviewers and maintainers are trusted members of the CSLib community who are expected to uphold a high standard of collaboration. | ||
|
|
||
| New CSLib reviewers and maintainers may be proposed by any member of the CSLib reviewer team, maintainer team, or Steering Committee. Appointment requires affirmative support from at least half of the eligible CSLib voters, rounded up (eligibility is described in the next two sections). At least one affirmative vote must come from a maintainer. | ||
|
|
||
| A candidacy remains under consideration for at least five calendar days. If the required support has been reached and there are no unresolved objections at the end of this period, the candidate is appointed. | ||
|
|
||
| Members of the Steering Committee are not included when calculating the number of votes required for appointment, but may vote for both reviewers and maintainers. Their votes otherwise have the same effect as those of the eligible CSLib voters. The intention is to allow the Steering Committee members to contribute to appointment decisions without making their participation necessary for reaching the required threshold. | ||
|
|
||
| Candidates should be considered on the basis of their contributions to CSLib and the qualities relevant to the role. These may include technical contributions, constructive reviewing activity, subject-matter expertise, reliability, collaboration with other contributors, and commitment to the long-term development of CSLib. | ||
|
|
||
| ### Reviewers | ||
|
|
||
| Candidates for the CSLib reviewer team are discussed and voted on by the current CSLib reviewers and maintainers. | ||
|
|
||
| During this process, reviewers and maintainers may privately seek input from other members of the CSLib community or from people who have worked with the candidate. | ||
|
|
||
| Members of the Steering Committee are welcome to participate in the discussion of reviewer candidacies. | ||
|
|
||
| ### Maintainers | ||
|
|
||
| Candidates for the CSLib maintainer team are discussed and voted on by the current CSLib maintainers. | ||
|
|
||
| During this process, maintainers may privately seek input from reviewers, other members of the CSLib community, or from people who have worked with the candidate. | ||
|
|
||
| Members of the Steering Committee are welcome to participate in the discussion of maintainer candidacies. | ||
|
|
||
| ### Re-nomination | ||
|
|
||
| A candidate who is not appointed may be proposed again at a later time. There is no fixed waiting period, but a renewed candidacy should take into account any concerns or circumstances that prevented the previous appointment. | ||
|
|
||
| ### Resignation and removal | ||
|
|
||
| A reviewer or maintainer may step down from their role at any time by informing the reviewer and maintainer teams (this is easiest done on Zulip) or, alternatively, the Lead Maintainer. | ||
|
|
||
| Inactivity does not automatically result in removal. However, prolonged inactivity or other circumstances (e.g., inappropriate conduct) may lead to a review of a person's continued membership of the reviewer or maintainer team. When removal from a role is proposed, the matter should be considered by the same group that is responsible for appointments to that role. Whenever appropriate, the person concerned should be given an opportunity to provide their perspective before a decision is made. | ||
|
|
||
| The Lead Maintainer is responsible for ensuring that the relevant governance documents and repository permissions are updated following an appointment, resignation, or removal. | ||
|
|
||
| ## Exceptional cases | ||
|
|
||
| The ordinary processes described in this document may occasionally be inadequate to resolve a particular situation. Examples include prolonged disagreement, the unavailability of relevant area leadership, or ambiguous responsibility. | ||
|
|
||
| In such cases, the Lead Maintainer may intervene to determine how a decision should be made to move the project forwards. | ||
|
|
||
| ## Maintenance of these policies | ||
|
|
||
| The [CODEOWNERS](/.github/CODEOWNERS) file is maintained by the Lead Maintainer, who is also responsible for coordinating changes to this document and related CSLib governance policies. | ||
Uh oh!
There was an error while loading. Please reload this page.