This document defines the governance structure for the PyPSA-meets-Earth initiative, inspired by the Flyte project.
PyPSA-meets-Earth is a collaborative open source initiative dedicated to building a transparent, inclusive, and reproducible energy system modeling ecosystem, leveraging the PyPSA framework and contributing to the broader scientific and policy discourse around sustainable transitions. This document outlines how the community collaborates and governs to achieve these goals.
To support the diverse activities within PyPSA-meets-Earth, the community is organized into Streams. These are focused areas of collaboration that help structure contributions and foster deeper engagement. Each Stream is coordinated by at least one Stream Coordinator, who facilitates collaboration, supports contributors, and ensures alignment with community goals. Coordinators are typically active Contributors with domain expertise. Streams can be:
- Code streams (e.g. PyPSA-Earth) or
- Impact streams (e.g. Outreach).
Here are a few illustrative examples of existing Streams:
| Stream Name | Focus Area | Example Activities | Stream type |
|---|---|---|---|
| PyPSA-Earth | Global energy system modeling | Data integration, new features | Code stream |
| Outreach | Community growth and engagement | Events, social media, onboarding | Impact stream |
| PyPSA-Distribution | Small-scale multi-energy modeling | High-resolution modeling, off-grid optimization | Code stream |
A full and up-to-date list of Streams is maintained on the PyPSA-meets-Earth website.
Most decisions in PyPSA-meets-Earth are made using lazy consensus: if no one objects within a reasonable period (typically 5-7 days), the proposal is accepted. Only in rare cases where consensus cannot be reached, a more formal vote may be called (see "Supermajority" below).
Roles apply equally to code and non-code activities (e.g., documentation, community, tools, streams). The following table lists the roles within the PyPSA-meets-Earth community, describing:
- General responsibilities expected by individuals in each role
- Requirements necessary to join or remain in a role
- Associated access rights
| Role | Responsibilities | Requirements | Access Rights | Scope |
|---|---|---|---|---|
| Participant |
|
None |
|
GitHub organization |
| Inherits from Participant | ||||
| Contributor |
|
|
|
Specific repo(s) or streams under pypsa-meets-earth |
| Inherits from Contributor | ||||
| Coordinator (Maintainer) |
|
|
|
Specific repo(s) or streams under pypsa-meets-earth |
| Inherits from Coordinator | ||||
| Steering Committee |
|
|
|
GitHub organization |
Anyone can contribute by using PyPSA-meets-Earth tools, providing feedback, joining discussions, submitting issues and PRs, or helping others.
Contributors actively engage with the community and support others across all streams (code, docs, tools, community).
- Participate actively (e.g., merged PR, regular discussion, or content creation).
- Recognition is informal and based on ongoing participation.
Coordinators manage daily project contributions, review PRs, and ensure quality across all streams. Each coordinator has independence over their areas while acting in accordance with the project values and collaborating with others. Coordinators of code repositories (maintainers) periodically release versions of the package, ideally every 4--6 months.
In code repositories, a code review with approval by maintainers is mandatory to merge changes. For simple activities (e.g., typo fixes), involvement of one maintainer is enough unless there is an explicit request for other opinions. For major changes (e.g., complex and breaking features), having review by two maintainers is preferred provided timely revision. In packages in an early development phase and exploratory phases, a single maintainer can approve and merge changes to facilitate rapid iteration.
- Open an issue in the community repo using the
coordinator-nominationlabel. - Assign current Coordinators as reviewers.
- Approval is by lazy consensus (if no objections in 7 days, nomination is accepted).
- If consensus cannot be reached, a supermajority vote of Coordinators may be called.
Coordinators may step down voluntarily or be removed by lazy consensus (or supermajority vote if needed) due to inactivity or other circumstances.
Responsible for strategic direction, cross-repo/stream concerns, and governance decisions. Duties include:
- Reviewing proposals for new sub-projects or streams
- Establishing Streams
- Approving governance and role changes
Contributors can step down to a lower role or request emeritus status by contacting the Coordinators.
NOTE: The current list of Coordinators and Steering Committee members is maintained on the PyPSA-meets-Earth website.
A decision-making process where a proposal is accepted if no one objects within a set period (usually 5-7 days). Objections should be accompanied by reasoning and, ideally, alternatives.
A supermajority is defined as two-thirds of members in the group (66%). Used only if lazy consensus fails. Voting can happen on the mailing list, GitHub, Discord, email, or via a voting service, when appropriate. Members can either vote "agree, yes, +1", "disagree, no, -1", or "abstain". A vote passes when supermajority is met. An abstain vote equals not voting at all.
