1(governance)= 2 3# PETSc Governance 4 5PETSc is developed by a distributed group of **contributors** (often called developers in the PETSc documentation). 6They include individuals who have contributed code, documentation, designs, user support, 7or other work to PETSc. Anyone can be a contributor. The PETSc **community** consists of the contributors, users, supporters, and anyone else interested in PETSc, 8its use, or its future. [^source-footnote] 9 10## Consensus-based decision making by the community 11 12Most project decisions are made by consensus of the PETSc community. The primary goal of this approach is to ensure that the people who are 13most affected by and involved in any given change can contribute their knowledge in the confidence that their voices will be heard, because thoughtful 14review 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 15on decisions; they need not be a contributor. 16 17The 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. 18We provide a summary here, and suggest reading [Chapter 4: Social and Political Infrastructure](https://producingoss.com/en/social-infrastructure.html) of Karl Fogel’s 19[Producing Open Source Software](https://producingoss.com/en/index.html), and in particular the section on Consensus-based Democracy, for a more detailed discussion. 20 21In this context, consensus does not require: 22 23- that we wait to solicit everybody’s opinion on every change, 24- that we hold explicit votes on anything, 25- or that everybody is happy or agrees with every decision. 26 27Consensus means that we entrust everyone with the right to request a decision by the PETSc Council. 28The mere specter of a council review request ensures that community members 29are motivated from the start to find a solution that everyone can live with – accomplishing our stated goal 30of ensuring that all interested perspectives are taken into account. 31 32How do we know when consensus has been achieved? In principle, this is rather difficult, since consensus 33is defined by the absence of requests for a PETSc Council decision, which requires us to somehow prove a negative. 34In practice, we use a combination of our best judgment 35(e.g., a simple and uncontroversial bug fix posted on GitLab and reviewed by another developer is probably fine) 36and best efforts (e.g., all substantive API changes must be posted to the mailing list in order to give the broader 37community a chance to catch any problems and suggest improvements; we assume that anyone who cares enough about 38PETSc should be on the mailing list). If no-one bothers to comment on the mailing list 39after a few days, then it’s probably fine. And worst case, if a change is more controversial than expected, or a crucial critique 40is delayed because someone was on vacation, then it’s no big deal: we apologize for misjudging the situation, back up, and sort things out. 41 42## PETSc Council 43 44When a decision cannot be made by community consensus, community members may request a formal vote by the **PETSc Council**. 45The role of the council is as follows. 46 47- Vote on decisions that cannot be made by consensus; with a simple majority vote of all council members being binding. 48- Vote on changes to the NumFOCUS signatories which will be conducted by the council using the Schulze Method of ranked choice voting. 49- 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 50 be on the PETSc Council, one need not be a contributor. The initial council consisted of the 15 most active code contributors, 51 plus two long-term contributors who now play important non-coding roles in the community. The initial high bias in the council towards contributors 52 is simply due to the few non-contributors who are heavily actively engaged in the community. 53- Vote on {any}`changes to the governance policy<governance_changes>` (this document) with a 2/3 majority vote of all council members. 54 55Votes 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. 56The current members of the PETSc Council are 57Mark Adams, 58Satish Balay, 59Jed Brown, 60Martin Diehl, 61Jacob Faibussowitsch, 62Toby Isaac, 63Pierre Jolivet, 64Matt Knepley, 65Lois McInnes, 66Richard Tran Mills, 67Todd Munson, 68Jose Roman, 69Barry Smith, 70Stefano Zampini, 71Mr. Hong Zhang, and 72Junchao Zhang. 73 74(numfocus-signatories)= 75 76## NumFOCUS signatories 77 78As a requirement of fiscal sponsorship by PETSc's membership in [NumFOCUS](http://numfocus.org) there are five NumFOCUS signatories from five institutions. 79Their role is to manage interactions with NumFOCUS and any project funding that comes through NumFOCUS. 80It 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 81be done by a vote of the PETSc Council. The current signatories are 82Jed Brown, 83Matt Knepley, 84Barry Smith, 85Stefano Zampini, and 86Pierre Jolivet. 87 88(governance_changes)= 89 90## Changes to the Governance Document 91 92Merge requests to <https://gitlab.com/petsc/petsc> on this file (`doc/community/governance.rst`) constitute proposed changes to the governance document. 93After 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. 94 95```{rubric} Footnotes 96``` 97 98[^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