|
| 1 | +(eep-00)= |
| 2 | + |
| 3 | + |
| 4 | +# EEP-00: Governance model & code of conduct |
| 5 | + |
| 6 | +```{eval-rst} |
| 7 | ++------------+------------------------------------------------------------------+ |
| 8 | +| Author | `Maximilian Blesch <https://github.com/MaxBlesch>`_, | |
| 9 | +| | `Janoś Gabler <https://github.com/janosg>`_, | |
| 10 | +| | `Hans-Martin von Gaudecker <https://github.com/hmgaudecker>`_, | |
| 11 | +| | `Annica Gehlen <https://github.com/amageh>`_, | |
| 12 | +| | `Sebastian Gsell <https://github.com/segsell>`_, | |
| 13 | +| | `Tim Mensinger <https://github.com/timmens>_, | |
| 14 | +| | `Mariam Petrosyan <https://github.com/mpetrosian>`_, | |
| 15 | +| | `Tobias Raabe <https://github.com/tobiasraabe>`_, | |
| 16 | +| | `Klara Röhrl <https://github.com/roecla>`_ | |
| 17 | ++------------+------------------------------------------------------------------+ |
| 18 | +| Status | Accepted | |
| 19 | ++------------+------------------------------------------------------------------+ |
| 20 | +| Type | Standards Track | |
| 21 | ++------------+------------------------------------------------------------------+ |
| 22 | +| Created | 2022-04-28 | |
| 23 | ++------------+------------------------------------------------------------------+ |
| 24 | +| Resolution | | |
| 25 | ++------------+------------------------------------------------------------------+ |
| 26 | +``` |
| 27 | + |
| 28 | +## Purpose |
| 29 | + |
| 30 | +This document formalizes the estimagic code of conduct and governance model. In case |
| 31 | +of changes, this document can be updated following the estimagic Enhancement Proposal |
| 32 | +process detailed below. |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | +```{include} ../../../CODE_OF_CONDUCT.md |
| 37 | +``` |
| 38 | + |
| 39 | +## estimagic governance model |
| 40 | + |
| 41 | +### Summary |
| 42 | + |
| 43 | +The governance model strives to be lightweight and based on |
| 44 | +[consensus](https://numpy.org/doc/stable/dev/governance/governance.html#consensus-based-decision-making-by-the-community) |
| 45 | +of all interested parties. Most work happens in GitHub issues and pull requests (regular |
| 46 | +decision process). Any interested party can voice their concerns or veto on proposed |
| 47 | +changes. If this happens, the estimagic Enhancement Proposal (EEP) process can be used |
| 48 | +to iterate over proposals until consesus is reached (controversial decision process). If |
| 49 | +necessary, members of the steering council can moderate heated debates and help to |
| 50 | +broker a consensus. |
| 51 | + |
| 52 | +### Regular decision process |
| 53 | + |
| 54 | +Most changes to estimagic are additions of new functionality or strict improvements of |
| 55 | +existing functionality. Such changes can be discussed in GitHub issues and discussions |
| 56 | +and implemented in pull requests. They do not require an estimagic Enhancement Proposal. |
| 57 | + |
| 58 | +Before starting to work on estimagic, contributors should read [how to |
| 59 | +contribute](how-to) and the [styleguide](styleguide). They can also reach out to |
| 60 | +existing contributors if any help is needed or anything remains unclear. We are all |
| 61 | +happy to help onboarding new contributors in any way necessary. For example, we have |
| 62 | +given introductions to git and GitHub in the past to help people make a contribution to |
| 63 | +estimagic. |
| 64 | + |
| 65 | +Pull requests should be opened as soon as work is started. They should contain a good |
| 66 | +description of the planned work such that any interested party can participate in the |
| 67 | +discussion around the changes. If planned changes turn out to be controversial, their |
| 68 | +design should be discussed in an estimagic Enhancement Proposal before the actual work |
| 69 | +starts. When the work is finished, the author of a pull request can request a review. In |
| 70 | +most cases, previous discussions will show who is a suitable reviewer. If in doubt, tag |
| 71 | +[janosg](https://github.com/janosg). Pull requests can be merged if there is at least |
| 72 | +one approving review. |
| 73 | + |
| 74 | +Reviewers should be polite, welcoming and helpful to the author of the pull request who |
| 75 | +might have spent many hours working on the changes. Authors of pull requests should keep |
| 76 | +in mind that reviewers' time is valuable. Major points should be discussed |
| 77 | +publicly on GitHub, but very critical feedback or small details can be moved to private |
| 78 | +discussions — if the latter are necessary at all (see [the bottom section of this blog |
| 79 | +post](https://rgommers.github.io/2019/06/the-cost-of-an-open-source-contribution/) for |
| 80 | +an excellent discussion of the burden that review comments place on maintainers, which |
| 81 | +might not always be obvious). Video calls can help if a discussion gets stuck. The code |
| 82 | +of conduct applies to all interactions related to code reviews. |
| 83 | + |
| 84 | +### estimagic Enhancement Proposals (EEPs) / Controversial decision process |
| 85 | + |
| 86 | +Large changes to estimagic can be proposed in estimagic Enhancement Proposals, short |
| 87 | +EEPs. They serve the purpose of summarising discussions that may happen in chats, |
| 88 | +issues, pull requests, in person, or by any other means. Simple extensions (like adding |
| 89 | +new optimizers) do not need to be discussed with such a formal process. |
| 90 | + |
| 91 | +EEPs are written as markdown documents that become part of the documentation. Opening an |
| 92 | +EEP means opening a pull request that adds the markdown document to the documentation. |
| 93 | +It is not necessary to already have a working implementations for the planned changes, |
| 94 | +even though it might be a good idea to have rough prototypes for solutions to the most |
| 95 | +challenging parts. |
| 96 | + |
| 97 | +If the author of an EEP feels that it is ready to be accepted they need to make a post |
| 98 | +in the relevant [Zulip topic](https://ose.zulipchat.com) and a comment on the PR that |
| 99 | +contains the following information: |
| 100 | + |
| 101 | +1. Summary of all contentious aspects of the EEP and how they have been resolved |
| 102 | +2. Every interested party has seven days to comment on the PR proposing the EEP, either |
| 103 | + with approval or objections. While only objections are relevant for the decision |
| 104 | + making process, approvals are a good way to signal interest in the planned change and |
| 105 | + recognize the work of the authors. |
| 106 | +3. If there are no unresolved objections after seven days, the EEP will automatically be |
| 107 | + accepted and can be merged. |
| 108 | + |
| 109 | +Note that the pull requests that actually implement the proposed enhancements still |
| 110 | +require a standard review cycle. |
| 111 | + |
| 112 | +### Steering Council |
| 113 | + |
| 114 | +The estimagic Steering Council consists of five people who take responsibility for the |
| 115 | +future development of estimagic and the estimagic community. Being a member of the |
| 116 | +steering council comes with no special rights. The main roles of the steering council |
| 117 | +are: |
| 118 | + |
| 119 | +- Facilitate the growth of estimagic and the estimagic community by organizing community |
| 120 | +events, identifying funding opportunities and improving the experience of all community |
| 121 | +members. |
| 122 | +- Develop a roadmap, break down large changes into smaller projects and find |
| 123 | +contributors to work on the implementation of these projects. |
| 124 | +- Ensure that new contributors are onboarded and assisted and that pull requests are |
| 125 | +reviewed in a timely fashion. |
| 126 | +- Step in as moderators when discussions get heated, help to achieve consensus on |
| 127 | +controversial topics and enforce the code of conduct. |
| 128 | + |
| 129 | +The Steering Council is elected by the estimagic community during a community meeting. |
| 130 | + |
| 131 | +Candidates need to be active community members and can be nominated by other community |
| 132 | +members or themselves until the start of the election. Nominated candidates need to |
| 133 | +accept the nomination before the start of the election. |
| 134 | + |
| 135 | +If there are only five candidates, the Steering Council is elected by acclamation. Else, |
| 136 | +every participant casts five votes. The 5 candidates with the most votes become elected. |
| 137 | +Candidates can vote for themselves. Ties are resolved by a second round of voting where |
| 138 | +each participant casts as many votes as there are positions left. Remaining ties are |
| 139 | +resolved by randomization. |
| 140 | + |
| 141 | +Current memebers of the estimagic Steering Council are: |
| 142 | +- [Janoś Gabler](https://github.com/janosg) |
| 143 | +- [Annica Gehlen](https://github.com/amageh) |
| 144 | +- [Hans-Martin von Gaudecker](https://github.com/hmgaudecker) |
| 145 | +- [Tim Mensinger](https://github.com/timmens) |
| 146 | +- [Mariam Petrosyan](https://github.com/mpetrosian) |
| 147 | + |
| 148 | + |
| 149 | +### Community meeting |
| 150 | + |
| 151 | +Community meetings can be held to elect a steering council, make changes to the |
| 152 | +governance model or code of conduct, or to make other decisions that affect the |
| 153 | +community as a whole. Moreover, they serve to keep the community updated about the |
| 154 | +development of estimagic and get feedback. |
| 155 | + |
| 156 | +Community meetings need to be announced via our public channels (e.g. the [zulip |
| 157 | +workspace](https://ose.zulipchat.com) or GitHub discussions) with sufficient time until |
| 158 | +the meeting. The definition of sufficient time will increase with the size of the |
| 159 | +community. |
0 commit comments