Skip to content

Commit 97e3bcf

Browse files
committed
Add GOVERNANCE.md
Document ClusterShell’s governance model, including maintainer roles, decision-making, contribution/merge expectations, maintainer continuity, and maintainer onboarding.
1 parent 0cc8cc2 commit 97e3bcf

1 file changed

Lines changed: 87 additions & 0 deletions

File tree

GOVERNANCE.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# ClusterShell Governance
2+
3+
This document describes the governance model of the ClusterShell project.
4+
5+
ClusterShell is maintained by a small group of maintainers. The project aims to remain lightweight and responsive while ensuring continuity if an individual maintainer becomes unavailable.
6+
7+
## Roles
8+
9+
### Maintainers
10+
11+
**Role**
12+
13+
Maintainers are responsible for the technical direction and day-to-day operations of the project:
14+
15+
- Review, approve, and merge contributions
16+
- Maintain project quality (tests/CI, coding standards, releases)
17+
- Triage issues and manage roadmap/priorities
18+
- Perform administrative operations on project infrastructure (repository settings, CI, packaging, etc.)
19+
- Create and publish releases (including PyPI releases)
20+
21+
**Current roster (GitHub)**
22+
23+
- Stéphane Thiell (`@thiell`) — Lead maintainer
24+
- Aurélien Degrémont (`@degremont`) — Maintainer
25+
- Dominique Martinet (`@martinetd`) — Maintainer
26+
27+
> Note: Machine/service accounts (eg. CI bots) may have repository access but are not part of governance.
28+
29+
**Lead maintainer**
30+
31+
The Lead maintainer coordinates project operations and is responsible for ensuring timely decisions, including final decisions when consensus cannot be reached.
32+
33+
Currently: `@thiell`.
34+
35+
### Contributors
36+
37+
Contributors are anyone who reports issues, submits pull requests, improves documentation, or otherwise participates in the project.
38+
39+
Contributors are expected to follow the project’s Code of Conduct and contribution guidelines.
40+
41+
## Decision-making
42+
43+
ClusterShell uses a consensus-seeking, maintainer-led model:
44+
45+
- Most decisions are made through discussion on GitHub issues and pull requests.
46+
- For routine changes, maintainers aim for **lazy consensus**: if there are no objections from maintainers after review, the change may be merged.
47+
- For significant changes (eg. architecture, backward-incompatible behavior, security-sensitive changes), maintainers should seek explicit agreement from at least one other maintainer before merging.
48+
49+
If maintainers cannot reach consensus in a reasonable timeframe, the Lead maintainer makes the final decision.
50+
51+
## Contributions and merging
52+
53+
- Changes should be proposed via pull requests.
54+
- Maintainers are expected to ensure CI is green (when available) and that changes meet project quality expectations before merging.
55+
- Non-trivial changes require at least one approval from another maintainer before merge.
56+
57+
## Maintainer continuity / bus factor
58+
59+
To reduce single-maintainer risk:
60+
61+
- The project maintains multiple maintainers with write access.
62+
- If the Lead maintainer becomes unavailable for an extended period, the remaining maintainers may designate a new Lead maintainer by agreement.
63+
- If a maintainer becomes unresponsive or wishes to step down, repository access may be adjusted by the remaining maintainers.
64+
65+
## Adding or removing maintainers
66+
67+
- New maintainers may be nominated by any current maintainer.
68+
- Selection is based on sustained, high-quality contributions and alignment with project practices.
69+
- Adding a maintainer requires agreement of the existing maintainers.
70+
71+
Maintainers may step down at any time.
72+
73+
## Releases and release notes
74+
75+
- Release planning (scope, timing, and next version number) is discussed by maintainers (typically in the ClusterShell maintainer Slack channel).
76+
- The Lead maintainer coordinates releases; maintainers aim for consensus on release scope and versioning. In case of disagreement, the Lead maintainer makes the final call.
77+
- Releases are tagged in Git and published to PyPI by maintainers with PyPI access.
78+
- For each release, maintainers publish public release notes in the documentation:
79+
https://clustershell.readthedocs.io/en/latest/release.html
80+
- When applicable, GitHub milestones/issues are used to track release work, and release notes may reference the relevant milestone.
81+
82+
## Communication channels
83+
84+
- **GitHub (issues and pull requests)** is the primary public forum for user support, bug reports, and technical discussion.
85+
- The project also uses an **invite-only ClusterShell Slack** for maintainer and supporter coordination.
86+
- Some discussions are maintainer-only (private).
87+
- Where appropriate, maintainers will summarize decisions that affect users or contributors (eg. release scope, policy changes, deprecations) in public on GitHub and/or in the published release notes.

0 commit comments

Comments
 (0)