Skip to content

Latest commit

 

History

History
210 lines (165 loc) · 8.77 KB

File metadata and controls

210 lines (165 loc) · 8.77 KB

PyPSA-meets-Earth Governance

This document defines the governance structure for the PyPSA-meets-Earth initiative, inspired by the Flyte project.

Overview

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.

Overview

Streams

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).

Examples of Streams

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.

Decision Making: Lazy Consensus

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).

Community Roles

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
  • Follow the Code of Conduct
  • Join and interact on initiatives' platforms, including Discord and Github
None
  • Can submit PRs and issues from forks
  • Can join the PyPSA-meets-Earth Discord channel (join here)
  • Can take part in community discussions
GitHub organization
Inherits from Participant
Contributor
  • Report and help resolve issues
  • Answer community questions
  • Review and provide feedback on issues/PRs
  • Contribute to code, documentation, tools, or community streams
  • Active participation (e.g., merged contribution, regular discussion, or content creation)
  • Can review PRs
  • May close/open/reassign issues
  • May request PR reviews
  • Can mark duplicates
Specific repo(s) or streams under pypsa-meets-earth
Inherits from Contributor
Coordinator (Maintainer)
  • Guide project direction and quality
  • Help cut releases
  • Mentor contributors
  • Review and merge PRs
  • Coordinate with other streams (e.g. PyPSA-Earth, Outreach, etc.)
  • Actively engages in users support
  • Consistent, high-quality contributions
  • Broad project knowledge
  • Approve and merge PRs
  • Manage releases
  • Moderate discussions
  • Vote on major decisions (if needed)
  • Access rights to fulfill the goal of the stream/package
Specific repo(s) or streams under pypsa-meets-earth
Inherits from Coordinator
Steering Committee
  • Set roadmap/priorities
  • Mentor contributors/Coordinators
  • Vote on governance, roles, (if consensus fails)
  • Must be a Coordinator
  • Highly active in multiple areas
  • Org-wide access rights
GitHub organization

Role Description and Processes

Participant

Anyone can contribute by using PyPSA-meets-Earth tools, providing feedback, joining discussions, submitting issues and PRs, or helping others.

Contributor

Contributors actively engage with the community and support others across all streams (code, docs, tools, community).

Becoming a Contributor

  • Participate actively (e.g., merged PR, regular discussion, or content creation).
  • Recognition is informal and based on ongoing participation.

Coordinator (Maintainer)

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.

Nomination Process

  1. Open an issue in the community repo using the coordinator-nomination label.
  2. Assign current Coordinators as reviewers.
  3. Approval is by lazy consensus (if no objections in 7 days, nomination is accepted).
  4. If consensus cannot be reached, a supermajority vote of Coordinators may be called.

Removal or Resignation

Coordinators may step down voluntarily or be removed by lazy consensus (or supermajority vote if needed) due to inactivity or other circumstances.

Steering Committee

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

Stepping Down / Emeritus Process

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.

Definitions

Lazy Consensus

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.

Supermajority

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.