Scientific Python is a consensus-based community project. Anyone with an interest in the project can join the community, contribute to the project design, and participate in the decision making process. This document describes how that participation takes place, how to find consensus, and how deadlocks are resolved.
Note that this document only applies to the Scientific Python project, which aims to better coordinate the ecosystem and prepare scientific Python for the next decade of data science. However, every project in the ecosystem has its own governance structure.
Roles And Responsibilities
The Scientific Python project has the following roles and responsibilities.
The Scientific Python community consists of anyone working with the project. Community members must adhere to our code of conduct.
Community Managers are community members that have demonstrated continued commitment to the project through ongoing contributions.
A new Community Manager can be nominated by any existing Community Manager. Discussion about new Community Manager nominations is one of the few activities that takes place on the project’s private management forum. The decision to invite a new Community Manager must be made by “lazy consensus”, meaning unanimous agreement by all responding existing Community Managers. Invitation must take place at least one week after initial nomination, to allow existing members time to voice objections.
Community Leaders are Community Managers who have additional responsibilities to ensure the smooth running of the Scientific Python project. Community Leaders are expected to participate in strategic planning, approve changes to the governance model, and make decisions about funding granted to the Scientific Python project. (Funding to community members/projects is theirs to pursue and manage.) Community Leaders should ensure smooth progress on the big-picture roadmap. Changes that impact the full project require analysis informed by long experience with both the project and the larger ecosystem. When the Community Managers (including the Community Leaders) fail to reach such a consensus in a reasonable timeframe, the Community Leaders may resolve the issue.
Specific projects may have their own governance structures. For example, the SPEC Steering Committee governance model is described here.
Decision Making Process
Decisions about the future of the project are made through discussion with all members of the community. All non-sensitive project management discussion takes place on the public forum. Occasionally, sensitive discussion may occur on a private list.
Scientific Python uses a consensus seeking process for making decisions. The group tries to find a resolution that has no open objections among community managers. Community managers are expected to distinguish between fundamental objections to a proposal and minor perceived flaws that they can live with, and not hold up the decision making process for the latter. If no option can be found without an objection, the decision is escalated to the Community Leaders, who will themselves use consensus seeking to come to a resolution. In the unlikely event that there is still a deadlock, the proposal will move forward if it has the support of a simple majority of the Community Leaders.