Skip to content

Commit e4c7c93

Browse files
authored
Add EEP-00: Governance Model and Code of Conduct (#307)
1 parent aed07f4 commit e4c7c93

File tree

10 files changed

+317
-22
lines changed

10 files changed

+317
-22
lines changed

CHANGES.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,20 @@ This is a record of all past estimagic releases and what went into them in rever
44
chronological order. We follow [semantic versioning](https://semver.org/) and all
55
releases are available on [Anaconda.org](https://anaconda.org/OpenSourceEconomics/estimagic).
66

7+
8+
## 0.4.1
9+
10+
- {gh}`307` Adopts a code of condact and governance model
11+
- {gh}`384` Polish documentation ({ghuser}`janosg` and {ghuser}`mpetrosian`)
12+
- {gh}`374` Moves the documentation to MyST ({ghuser}`baharcos`)
13+
- {gh}`365` Adds copybuttos to documentation ({ghuser}`amageh`)
14+
- {gh}`371` Refactors the pounders algorithm ({ghuser}`segsell`)
15+
- {gh}`369` Fixes CI ({ghuser}`janosg`)
16+
- {gh}`367` Fixes the linux environment ({ghuser}`timmens`)
17+
- {gh}`294` Adds the very first experimental version of tranquilo ({ghuser}`janosg`,
18+
{ghuser}`timmens`, {ghuser}`segsell`, {ghuser}`mpetrosian`)
19+
20+
721
## 0.4.0
822

923
- {gh}`366` Update ({ghuser}`segsell`)

CODE_OF_CONDUCT.md

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
## Code of Conduct
2+
3+
### Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, religion, or sexual identity
10+
and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
### Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the
26+
overall community
27+
28+
Examples of unacceptable behavior include:
29+
30+
* The use of sexualized language or imagery, and sexual attention or
31+
advances of any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
33+
* Public or private harassment
34+
* Publishing others' private information, such as a physical or email
35+
address, without their explicit permission
36+
* Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
### Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
### Scope
52+
53+
This Code of Conduct applies within all community spaces, on all formal and
54+
informal events, and also applies when an individual is officially representing
55+
the community in public spaces. Examples of representing our community include
56+
- using an official e-mail address
57+
- posting via an official social media account
58+
- acting as a representative at an online or offline event
59+
- acting as a representative surrounding an event
60+
61+
### Enforcement
62+
63+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
64+
reported to the community leaders responsible for enforcement. You can contact
65+
either [Mariam Petrosyan](https://github.com/mpetrosian)
66+
([email protected]) or [Tim Mensinger](https://github.com/timmens)
67+
([email protected]). All complaints will be reviewed and investigated
68+
promptly and fairly.
69+
70+
All community leaders are obligated to respect the privacy and security of the
71+
reporter of any incident.
72+
73+
### Enforcement Guidelines
74+
75+
Community leaders will follow these Community Impact Guidelines in determining
76+
the consequences for any action they deem in violation of this Code of Conduct:
77+
78+
#### 1. Correction
79+
80+
**Community Impact**: Use of inappropriate language or other behavior deemed
81+
unprofessional or unwelcome in the community.
82+
83+
**Consequence**: A private, written warning from community leaders, providing
84+
clarity around the nature of the violation and an explanation of why the
85+
behavior was inappropriate. A public apology may be requested.
86+
87+
#### 2. Warning
88+
89+
**Community Impact**: A violation through a single incident or series
90+
of actions.
91+
92+
**Consequence**: A warning with consequences for continued behavior. No
93+
interaction with the people involved, including unsolicited interaction with
94+
those enforcing the Code of Conduct, for a specified period of time. This
95+
includes avoiding interactions in community spaces as well as external channels
96+
like social media. Violating these terms may lead to a temporary or
97+
permanent ban.
98+
99+
#### 3. Temporary Ban
100+
101+
**Community Impact**: A serious violation of community standards, including
102+
sustained inappropriate behavior.
103+
104+
**Consequence**: A temporary ban from any sort of interaction or public
105+
communication with the community for a specified period of time. No public or
106+
private interaction with the people involved, including unsolicited interaction
107+
with those enforcing the Code of Conduct, is allowed during this period.
108+
Violating these terms may lead to a permanent ban.
109+
110+
#### 4. Permanent Ban
111+
112+
**Community Impact**: Demonstrating a pattern of violation of community
113+
standards, including sustained inappropriate behavior, harassment of an
114+
individual, or aggression toward or disparagement of classes of individuals.
115+
116+
**Consequence**: A permanent ban from any sort of public interaction within
117+
the community.
118+
119+
### Attribution
120+
121+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
122+
version 2.0, available at
123+
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
124+
125+
Community Impact Guidelines were inspired by [Mozilla's code of conduct
126+
enforcement ladder](https://github.com/mozilla/diversity).
127+
128+
[homepage]: https://www.contributor-covenant.org
129+
130+
For answers to common questions about this code of conduct, see the FAQ at
131+
https://www.contributor-covenant.org/faq. Translations are available at
132+
https://www.contributor-covenant.org/translations.

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
include CITATION
1010
include LICENSE
1111
include CHANGES.md
12+
include CODE_OF_CONDUCT.md
1213

1314
recursive-include src *.css
1415
recursive-include src *.csv

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
[![image](https://codecov.io/gh/OpenSourceEconomics/estimagic/branch/main/graph/badge.svg)](https://codecov.io/gh/OpenSourceEconomics/estimagic)
1111
[![image](https://results.pre-commit.ci/badge/github/OpenSourceEconomics/estimagic/main.svg)](https://github.com/OpenSourceEconomics/estimagic/actions?query=branch%3Amain)
1212
[![image](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
13+
[![image](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)
1314

1415

1516
## Introduction

docs/source/development/changes.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
(changes)=
2-
# Changes
3-
```{eval-rst}
4-
.. include:: ../../../CHANGES.md
2+
```{include} ../../../CHANGES.md
53
```
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
(coc)=
2+
```{include} ../../../CODE_OF_CONDUCT.md
3+
```
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
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.

docs/source/development/eep-01-pytrees.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
+------------+------------------------------------------------------------------+
77
| Author | `Janos Gabler <https://github.com/janosg>`_ |
88
+------------+------------------------------------------------------------------+
9-
| Status | Draft |
9+
| Status | Accepted |
1010
+------------+------------------------------------------------------------------+
1111
| Type | Standards Track |
1212
+------------+------------------------------------------------------------------+

docs/source/development/eeps.md

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,14 @@
11
# EEPs
22

3-
Large changes to estimagic can be proposed in estimagic enhancement proposals, short
4-
EEPs. They serve the purpose of summarising discussions
5-
that may happen in chats, issues, pull requests, in person, or by any other means.
6-
Simple extensions (like adding new optimizers) do not need to be discussed with such
7-
a formal process.
8-
9-
If the author of an EEP feels that it is ready to be accepted they need to make a
10-
post in our [zulip workspace](https://ose.zulipchat.com) and a comment on the PR that
11-
contains the following information:
12-
13-
1. Summary of all contentious aspects of the EEP and how they have been resolved
14-
2. Every interested party has seven days to comment on the PR proposing the EEP,
15-
either with approval or objections.
16-
3. If there are no unresolved objections after seven days, the EEP will automatically
17-
be accepted.
18-
19-
Note that the Pull Requests that actually implement the proposed enhancements still
20-
require a standard review cycle.
3+
Estimagic Enhancement Proposals (EEPs) can be used to discuss and design large
4+
changes. EEP-00 details the EEP process, the estimagic governance model and the
5+
estimagic Code of Conduct. It is the only EEP that gets continuously updated.
216

227
These EEPs are currently in place:
238

249
```{toctree}
2510
:maxdepth: 1
2611
12+
eep-00-governance-model.md
2713
eep-01-pytrees.md
2814
```

docs/source/development/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
```{toctree}
44
:maxdepth: 1
55
6+
code_of_conduct
67
how-to
78
styleguide
89
eeps

0 commit comments

Comments
 (0)