xref: /petsc/doc/community/governance.md (revision 9e6f5172137c9232224443cdc9532d02ca11d9db)
109cc9507SBarry Smith(governance)=
209cc9507SBarry Smith
309cc9507SBarry Smith# PETSc Governance
409cc9507SBarry Smith
509cc9507SBarry SmithPETSc is developed by a distributed group of **contributors** (often called developers in the PETSc documentation).
609cc9507SBarry SmithThey include individuals who have contributed code, documentation, designs, user support,
709cc9507SBarry Smithor other work to PETSc. Anyone can be a contributor. The PETSc **community** consists of the contributors, users, supporters, and anyone else interested in PETSc,
809cc9507SBarry Smithits use, or its future. [^source-footnote]
909cc9507SBarry Smith
1009cc9507SBarry Smith## Consensus-based decision making by the community
1109cc9507SBarry Smith
1209cc9507SBarry SmithMost project decisions are made by consensus of the PETSc community. The primary goal of this approach is to ensure that the people who are
1309cc9507SBarry Smithmost affected by and involved in any given change can contribute their knowledge in the confidence that their voices will be heard, because thoughtful
1409cc9507SBarry Smithreview from a broad community is the best mechanism we know of for creating high-quality software. Anyone in the PETSc community can participate in and express their opinion
1509cc9507SBarry Smithon decisions; they need not be a contributor.
1609cc9507SBarry Smith
1709cc9507SBarry SmithThe mechanism we use to accomplish this goal may be unfamiliar for those who are not experienced with the cultural norms around free/open-source software development.
1809cc9507SBarry SmithWe provide a summary here, and suggest reading [Chapter 4: Social and Political Infrastructure](https://producingoss.com/en/social-infrastructure.html) of Karl Fogel’s
1909cc9507SBarry Smith[Producing Open Source Software](https://producingoss.com/en/index.html), and in particular the section on Consensus-based Democracy, for a more detailed discussion.
2009cc9507SBarry Smith
2109cc9507SBarry SmithIn this context, consensus does not require:
2209cc9507SBarry Smith
2309cc9507SBarry Smith- that we wait to solicit everybody’s opinion on every change,
2409cc9507SBarry Smith- that we hold explicit votes on anything,
2509cc9507SBarry Smith- or that everybody is happy or agrees with every decision.
2609cc9507SBarry Smith
2709cc9507SBarry SmithConsensus means that we entrust everyone with the right to request a decision by the PETSc Council.
2809cc9507SBarry SmithThe mere specter of a council review request ensures that community members
2909cc9507SBarry Smithare motivated from the start to find a solution that everyone can live with – accomplishing our stated goal
3009cc9507SBarry Smithof ensuring that all interested perspectives are taken into account.
3109cc9507SBarry Smith
3209cc9507SBarry SmithHow do we know when consensus has been achieved? In principle, this is rather difficult, since consensus
3309cc9507SBarry Smithis defined by the absence of requests for a PETSc Council decision, which requires us to somehow prove a negative.
3409cc9507SBarry SmithIn practice, we use a combination of our best judgment
3509cc9507SBarry Smith(e.g., a simple and uncontroversial bug fix posted on GitLab and reviewed by another developer is probably fine)
3609cc9507SBarry Smithand best efforts (e.g., all substantive API changes must be posted to the mailing list in order to give the broader
3709cc9507SBarry Smithcommunity a chance to catch any problems and suggest improvements; we assume that anyone who cares enough about
3809cc9507SBarry SmithPETSc should be on the mailing list). If no-one bothers to comment on the mailing list
3909cc9507SBarry Smithafter a few days, then it’s probably fine. And worst case, if a change is more controversial than expected, or a crucial critique
4009cc9507SBarry Smithis delayed because someone was on vacation, then it’s no big deal: we apologize for misjudging the situation, back up, and sort things out.
4109cc9507SBarry Smith
4209cc9507SBarry Smith## PETSc Council
4309cc9507SBarry Smith
4409cc9507SBarry SmithWhen a decision cannot be made by community consensus, community members may request a formal vote by the **PETSc Council**.
4509cc9507SBarry SmithThe role of the council is as follows.
4609cc9507SBarry Smith
4709cc9507SBarry Smith- Vote on decisions that cannot be made by consensus; with a simple majority vote of all council members being binding.
4809cc9507SBarry Smith- Vote on changes to the NumFOCUS signatories which will be conducted by the council using the Schulze Method of ranked choice voting.
4909cc9507SBarry Smith- Vote on the addition and removal of PETSc Council members; with a 2/3 majority vote of all council members. Anyone in the PETSc community can
505b5d10d3SBarry Smith  be on the PETSc Council, one need not be a contributor. The initial council consisted of the 15 most active code contributors,
5109cc9507SBarry Smith  plus two long-term contributors who now play important non-coding roles in the community. The initial high bias in the council towards contributors
5209cc9507SBarry Smith  is simply due to the few non-contributors who are heavily actively engaged in the community.
5309cc9507SBarry Smith- Vote on {any}`changes to the governance policy<governance_changes>` (this document) with a 2/3 majority vote of all council members.
5409cc9507SBarry Smith
5509cc9507SBarry SmithVotes are public, presented in the usual discussion venues, and the voting period must remain open for at least seven days or until a required majority has been achieved.
5609cc9507SBarry SmithThe current members of the PETSc Council are
5709cc9507SBarry SmithMark Adams,
5809cc9507SBarry SmithSatish Balay,
5909cc9507SBarry SmithJed Brown,
60*d701762fSBarry SmithMartin Diehl,
6109cc9507SBarry SmithJacob Faibussowitsch,
6209cc9507SBarry SmithToby Isaac,
6309cc9507SBarry SmithPierre Jolivet,
6409cc9507SBarry SmithMatt Knepley,
6509cc9507SBarry SmithLois McInnes,
6609cc9507SBarry SmithRichard Tran Mills,
6709cc9507SBarry SmithTodd Munson,
6809cc9507SBarry SmithJose Roman,
6909cc9507SBarry SmithBarry Smith,
7009cc9507SBarry SmithStefano Zampini,
7109cc9507SBarry SmithMr. Hong Zhang, and
7209cc9507SBarry SmithJunchao Zhang.
7309cc9507SBarry Smith
7409cc9507SBarry Smith(numfocus-signatories)=
7509cc9507SBarry Smith
7609cc9507SBarry Smith## NumFOCUS signatories
7709cc9507SBarry Smith
7809cc9507SBarry SmithAs a requirement of fiscal sponsorship by PETSc's membership in [NumFOCUS](http://numfocus.org) there are five NumFOCUS signatories from five institutions.
7909cc9507SBarry SmithTheir role is to manage interactions with NumFOCUS and any project funding that comes through NumFOCUS.
8009cc9507SBarry SmithIt is expected that such funds will be spent in a manner that is consistent with the non-profit mission of NumFOCUS. Changes in the signatories will
8109cc9507SBarry Smithbe done by a vote of the PETSc Council. The current signatories are
8209cc9507SBarry SmithJed Brown,
8309cc9507SBarry SmithMatt Knepley,
8409cc9507SBarry SmithBarry Smith,
8509cc9507SBarry SmithStefano Zampini, and
865b5d10d3SBarry SmithPierre Jolivet.
8709cc9507SBarry Smith
8809cc9507SBarry Smith(governance_changes)=
8909cc9507SBarry Smith
9009cc9507SBarry Smith## Changes to the Governance Document
9109cc9507SBarry Smith
9209cc9507SBarry SmithMerge requests to <https://gitlab.com/petsc/petsc> on this file (`doc/community/governance.rst`) constitute proposed changes to the governance document.
9309cc9507SBarry SmithAfter a community discussion of the proposed changes, the PETSc Council can pass changes to the document with a 2/3 majority vote of all members.
9409cc9507SBarry Smith
9509cc9507SBarry Smith```{rubric} Footnotes
9609cc9507SBarry Smith```
9709cc9507SBarry Smith
9809cc9507SBarry Smith[^source-footnote]: Material in this document, including occasionally exact wording, is partially based on <https://github.com/dask/governance/blob/main/governance.md> and <https://numpy.org/doc/stable/dev/governance/governance.html>.
99