SEP | 2 |
---|---|
title | SunPy Organization Definition |
author(s) | Stuart Mumford |
contact email | stuart@cadair.com |
date-creation | 2024-04-09 (Original version: 2014-02-16) |
type | process |
discussion | #80 #62 |
status | accepted |
This SEP describes the second major iteration of the governance for the SunPy Project. The objectives of this update are to optimize the governance based on our experiences running the project since 2014 when the original governing SEP was written. That original governance structure was modeled after a non-profit company structure, assumed a very committed board, and intertwined project finances with board responsibilities. The project has since matured and responsibilities for project management should be fully given over to the community while a smaller board with a reduced mandate provides high-level oversight. The rewrite aims to detail a governance structure which is lightweight, community-driven, and allows the project to grow.
The mission of the SunPy Project is To develop and facilitate a high-quality, easy-to-use, community-led, free and open-source solar data analysis ecosystem based on the scientific Python environment. This mission is supported by the following actions:
- developing the sunpy core library and other affiliated packages
- supporting a community of affiliated packages
- managing and protecting the SunPy brand and identity
- promoting SunPy to the community
- managing SunPy assets, e.g. GitHub organization, domain name etc.
The SunPy Project's governance involves the following five components:
- The Community
- The Project Custodians
- The Steering Committee
- The Advisory Board
- The Ombudsperson
The SunPy project exists for the benefit of the whole Community: users, developers, and members of the wider solar physics and scientific software community. The Community is the ultimate authority in how the project is managed. This authority is exercised through the processes outlined in this document, primarily through the Steering Committee and the Project Custodians. When feasible and necessary, input will be gathered from the Community through multiple channels, for example forums, online polling, direct communication, and in-person interactions at domain-related meetings. Wherever possible, these input channels will be actively used to reach decisions by consensus, rather than taken unilaterally by Project Custodians or the Steering Committee.
The Project Custodians are trusted community members with a proven track record of constructive contribution to the goals of the project. Collectively, the Project Custodians make decisions about the direction of the project and have authority over the project, which is delegated to the Steering Committee.
It is expected that Project Custodians act as role models for the Community and are custodians of the SunPy Project. The Project Custodians elect a Steering Committee to lead the SunPy Project.
Project Custodians are granted voting rights on matters related to how the project is run and organized and can elect (and remove) project officers. Some examples are listed below.
- Adding new Project Custodians
- Electing Steering Committee members
- Appointing the Ombudsperson
- Removing Project Custodians
- Removing Steering Committee members
- Removing the Ombudsperson
- Actively solicit feedback from and engage with the community to make decisions they believe are in the best interests of The Community
- Approving changes to this SEP via a vote (see below)
- Other matters where the Steering Committee or the Advisory Board believes a vote is appropriate.
Project Custodians of the SunPy Project must demonstrate all of the following:
- A good grasp of the philosophy of the SunPy Project
- A solid track record of being constructive and helpful
- Meaningful contributions to the Project's goals, in any form
- A willingness to dedicate time to improving the Project
- A willingness to recruit, train, and nominate new team members
- A track record of adhering to the project Code of Conduct.
Project Custodianship acknowledges sustained and valuable efforts that align well with the philosophy and the goals of the SunPy Project.
To be able to elect new Project Custodians an initial set of Project Custodians is needed. People meeting the following criteria will be invited to form the initial group of Project Custodians. They should consider the above responsibilities and actively agree to taking them on if they choose to accept the invitation.
- Current commit access to the core repo, or any accepted affiliated package maintained by the project, and with a commit to that repository within the last 12 months.
- Currently holds a role listed under the community roles section of the website: https://sunpy.org/about/project/#community-roles.
- Is a currently serving Advisory Board member.
Applying this set of criteria on 2024/04/09 resulted in the following people being the initial Project Custodians:
- Stuart Mumford
- Will Barnes
- Laura Hayes
- David Pérez-Suárez
- Conor MacBride
- Monica Bobra
- Steven Christe
- Russell Hewett
- Tiago M. D. Pereira
- Kevin Reardon
- Albert Y. Shih
- Nabil Freij
- David Stansby
- Alasdair Wilson
- Daniel Ryan
- Shane Maloney
Anyone is eligible to be nominated to be a Project Custodian, as long as they meet the criteria laid out in the Membership section above. When adding a new project custodian, the existing custodians are expected to make their decisions based on if they meet the criteria laid out above, we want the custodians to be as inclusive of the SunPy Community as possible. Self-nominations are encouraged.
The process for adding a new Project Custodian is as follows:
- A nomination is received by the Steering Committee, a nomination should include a short, factual, statement stating how the nominee meets the criteria for Project Custodianship. The Steering Committee, and the Ombudsperson check that the nomination is factually accurate, their record of contribution to the community adheres to the Code of Conduct, and they wish to serve as a Project Custodian (if not self-nominated).
- The candidate is then put to the Project Custodians. The name and nomination statement of the candidate will be shared with the Project Custodians. The candidate can become a Project Custodian if, during the two weeks following the candidate being put to the Project Custodians, five existing Project Custodians approve the candidate and no Project Custodians call for an election.
- Project Custodians can call for an election either by informing the Steering Committee or the Ombudsperson. If a vote is called for then the candidate will become a Project Custodian with a simple majority of all votes cast in the election. An election needs to be announced to the Project Custodians one week before the voting opens and voting will be open for two weeks.
- The candidate will be informed promptly of the outcome by the Steering Committee.
The name of a candidate should not be shared outside of the Project Custodians until they become a Project Custodian. A public list of Project Custodians will be kept on the SunPy website.
Nominations, approvals and any elections of Project Custodians should take place before the initial election of the Steering Committee.
Project Custodians have no term limits. Project Custodians who are no longer actively contributing to the project should contact the Steering Committee to move themselves to emeritus status. Project Custodians who have not participated in the project in the manner required for Project Custodianship for two years, will be contacted by the Steering Committee and be asked to move themselves to emeritus status. The Steering Committee can change a Project Custodian's status to emeritus. Emeritus Project Custodians will continue to be listed on the website. Emeritus Project Custodians are not able to participate in votes. An emeritus member may declare themselves to be active again at any time if they feel they are making contributions.
In exceptional circumstances, it may be necessary to remove someone from the Project Custodians against their will. A vote of the Project Custodians must be held to remove a Project Custodian. Such a vote is triggered by a motion (sent to the Steering Committee and the Ombudsperson) made by a Project Custodian, which must be seconded by an additional Project Custodian. The vote must conclude no more than three months after the motion is seconded. Removal requires approval by two-thirds of all (non-emeritus) Project Custodians at the time the motion is made. The motion, second, and vote will be by secret ballot. Removal under this provision will be reflected by updating the list of Project Custodians. A member removed via this mechanism does not have emeritus status.
It may be necessary for the Ombudsperson and the Steering Committee to remove a Project Custodian for violations of the Code of Conduct. In this case, the Steering Committee, Ombudsperson and Advisory Board will work together to make this decision.
From time to time, as desired or required by the Steering Committee and Advisory Board, matters may be put to the Project Custodians for a vote. For these votes, the motion will carry by a simple majority of those Project Custodians who cast a ballot.
The role of the Steering Committee, which is chaired by the Lead Developer, is to lead the day-to-day operations of the project. The Steering Committee shall be responsible for the running of the project under advisement of the Advisory Board. This includes:
- holding regular meetings with the community (at least monthly)
- publicizing project efforts and status through community-appropriate channels and social media
- making regular reports to the Advisory Board (at least quarterly)
- having ownership privileges to the SunPy GitHub organization and other community assets
- creating, maintaining and enforcing the SunPy code of conduct (see below)
- accepting or rejecting SEPs based on community consensus (excluding this SEP, see below)
- delegating responsibility and authority to other community roles
- planning and managing finances and financial processes of the project.
- Ensuring SunPy adheres to its legal obligations, such as to its fiscal sponsor.
The Steering Committee is formed of three members of the SunPy community with equal status on the committee, and they do not need to be Project Custodians. The Steering Committee can decide how to distribute the work load, however the Steering Committee should self-appoint the following roles after each election:
- The lead developer chairs the Steering Committee and is responsible for holding regular (at least monthly) meetings, and ensuring that the committee is represented at all Advisory Board meetings.
- The financial officer the financial officer is primarily responsible for ensuring the health of the project finances and setting up processes for managing expenses and reporting to the Advisory Board on financial matters.
The Steering Committee is elected by the Project Custodians.
The Steering Committee should strive to make decisions by consensus. Where possible and appropriate, consensus should be reached between the members of the committee, and that consensus should reflect the consensus of the whole Community. If consensus can not be reached between the committee members, decisions can be taken by a majority vote.
An election to fill a vacant role on the Steering Committee will occur in two stages:
- Nominations: No less than three weeks before an election a public announcement of the election must be made and nominations solicited for no less than two weeks. Candidates who have accepted their nomination (self nominations are allowed) should write a short statement supporting their candidacy, which will be made public as soon as possible, but no later than before the election starts.
- Election: All candidates that have written statement will be put to a vote of the Project Custodians, which must remain open for two weeks, and the candidate(s) with the most votes shall be elected to the position(s).
Each position on the Steering Committee has a term of three years, from the date of the announcement of the election results.
If there is a vacancy part way through a term, then a by-election will be held where the candidate elected to the committee will serve the remainder of the term of the member they are replacing.
For the first election of the coordinating committee, one member will have a one year term, one member a two year term and one member a three year term. The term length of the elected candidates may be decided between themselves, in the case agreement can not be reached the person elected to the financial officer role will serve three years, the deputy lead developer two years and the lead developer one year.
In exceptional circumstances, the Project Custodians may remove one or more sitting Steering Committee or Advisory Board members via a single vote.
Such a vote is triggered when a Project Custodian calls for one publicly on an appropriate Project-wide communication channel, and two other Project Custodians second the proposal.
For the member(s) to be removed, two-thirds of the (non-emeritus) Project Custodians (where the count includes the member being voted on if they are a Project Custodian) must vote in support of the removal.
To avoid repeated removal votes, any individual Project Custodian who has called for, or seconded such a vote, may not call for or second a vote to remove any member(s) for one year from the original motion.
The primary functions of the Advisory Board are:
- to advise the Steering Committee,
- aid in finding funding for the project to ensure the core aims of the project can be met,
- nominate an Ombudsperson,
- ensure that the Project is being run consistent with the approved governance structure and the needs of the Community.
The Advisory Board is self-electing, with members appointed by a vote of the existing Advisory Board.
- The Advisory Board shall consist of at least 3 members and no more than 5 members. The Advisory Board selects how many members within this range are needed.
- A term on the board shall be 2 years. Members may be re-appointed after their term has expired.
- The Advisory Board may appoint its own members.
- The Advisory Board should work to ensure that the composition of the Advisory Board represents a diverse cross-section of the scientific community with an interest in SunPy. This diversity should consider things such as research topic, career stage, as well as all other forms of diversity.
- An Advisory Board member may be removed by a two-thirds majority vote of the Advisory Board or by Project Custodians following the same procedure as for the removal of a member of the Steering Committee.
- The Advisory Board shall meet with the Steering Committee at least every quarter.
- At least one week (7 days) notice of a meeting shall be provided to all eligible to attend.
- Notice of meetings shall provide the information necessary to participate in the meeting.
- Minutes for the meetings shall be recorded and made public as much as is appropriate.
The Advisory Board shall organize itself as it sees fit.
The Steering Committee shall present the state of the project and future plans at meetings of the Advisory Board on a yearly basis. The Advisory Board shall advise and consent on those plans.
In the unlikely event that the Advisory Board does not agree with a decision made by the Steering Committee, it can require Project Custodians to consent to the decision through a vote (see below for process).
The Ombudsperson represents the interests of the Community by providing an alternative point of contact for sensitive issues such as code of conduct violations and ethical concerns. Candidates for this project role are publicly nominated by the Advisory Board, after which at least two weeks for comment is allowed, and then the nominee must be confirmed by two-thirds of the Project Custodians who voted in the election.
The Ombudsperson has no term limit but can resign at any time, or be removed by the same process as removing a Project Custodian. In the period between removal/resignation and new appointment, the Steering Committee will temporarily take over the responsibilities of the Ombudsperson, should the need arise.
Any changes to the governance structure of the SunPy Project (e.g. this SEP) requires a 2/3 majority vote of the Project Custodians. .
The SunPy organization shall have an explicit code of conduct to state the norms of peer interactions, including inclusiveness and respect, and describe the process for dispute resolution. The code of conduct shall be publicly posted on the SunPy website. The code of conduct shall be accessible in such a manner as to welcome and incorporate feedback from the developer community, even anonymous feedback.
This change to SEP 2 will be implemented in the following stages:
- The list of initial Project Custodians will be drawn up and added to the SunPy website.
- A communication channel private to the Project Custodians will be created where discussions and announcements of votes can take place.
- A Ombudsperson will be nominated by the Advisory Board and confirmed by the initial group of Project Custodians.
- Nomination of new Project Custodians will be solicited and confirmed by the initial Project Custodians.
- The process for electing the initial Steering Committee will be followed as laid out above.
This document builds on the original version of SEP 2. The Project Custodians section, in particular, is heavily inspired by Voting Members in the Astropy project's APE 0, but other sections also copy from it.