diff --git a/.markdownlint.yaml b/.markdownlint.yaml index 0bef1e9..5e3c1ac 100644 --- a/.markdownlint.yaml +++ b/.markdownlint.yaml @@ -3,3 +3,6 @@ MD013: false # Inline HTML MD033: false + +# Duplicate Headings +MD024: false diff --git a/SEP-0001.md b/SEP-0001.md index 96fdc33..1c216d0 100644 --- a/SEP-0001.md +++ b/SEP-0001.md @@ -41,13 +41,20 @@ There are generally three types of SEP. ## Creation -SEPs should contain a concise description of a single new idea or proposal. SEPs are generally not necessary for small enhancements through a SEP may sometimes be requested by the SunPy board in some cases even for small changes. A SEP begins its life as a proposal. Legibility, organization, and focus are key features of a successful SEP. SEPs can be rejected out-right if they lack any of those characteristics. All SEPs must identify a champion (usually the author) whose job it is to present and defend the proposal. It is generally a good idea to discuss the new idea with the community and the board before going to the trouble of writing a SEP in order to gauge general opinion however, it is not required. All SEPs will have a SunPy board member assigned to them. +SEPs should contain a concise description of a single new idea or proposal. +SEPs are generally not necessary for small enhancements through a SEP may sometimes be requested by The Steering Committee in some cases even for small changes. +A SEP begins its life as a proposal. +Legibility, organization, and focus are key features of a successful SEP. +SEPs can be rejected out-right if they lack any of those characteristics. +All SEPs must identify a champion (usually the author) whose job it is to present and defend the proposal. +It is generally a good idea to discuss the new idea with the community before going to the trouble of writing a SEP in order to gauge general opinion however, it is not required. All SEPs creators should begin with the SEP template which is stored as SEP-template.md. All SEPs are stored in the sunpy/sunpy-SEP repository. Fork the repo and create a new file with your SEP. SEP are written with markdown. ### Amending a SEP -If a topic is already covered by an existing SEP and the change is not a major one than it is appropriate to propose an amendment to an existing SEP. All the usual rules apply and processes apply to the amendment of a SEP as for the creation of a new SEP. +If a topic is already covered by an existing SEP and the change is not a major one than it is appropriate to propose an amendment to an existing SEP. +All the usual rules apply and processes apply to the amendment of a SEP as for the creation of a new SEP. ## Submission @@ -55,14 +62,16 @@ All new SEP should be submitted into the sunpy/sunpy-SEP repository by pull requ ## Review Process -Once an SEP is submitted it will be discussed via normal development channels, primarily the sunpy-dev mailing list. The SunPy board is tasked with making the final decision although in general community consensus is enough. Once an SEP is accepted, its implementation can be reviewed through the usual process. Once the implementation is complete and accepted the status of the SEP shall be changed to implemented. A member of the SunPy board may request that a change to SunPy (e.g. Pull Request) requires an SEP to enable the change to be documented, and discussed and reviewed by the community. - -New SEPs currently undergoing discussion are pull requests into the sunpy-SEP repository. Discussions about the SEP shall take place primarily using a sunpy mailing list, which should be linked from the SEP. Once a SEP is officially submitted by pull request a SunPy editor must be assigned by the SunPy board. This is generally the job of the SunPy board sponsor but this role can be delegated. The role of the editor is to aid the submitter and make sure that the SEP follows the accepted standard. The author and editor can be the same person. A SEP must be accepted by a majority of the SunPy board. The status of a SEP can be any of the following +Once an SEP is submitted, as a pull request to the sunpy-SEP repository, it will be discussed via normal development channels. +The Steering Committee is tasked with accepting an SEP, this should be done on the basis of agreeing there is commuinity consensus, however, they may act as a tie-break if needed. +The Steering Committee are also responsible for editing SEP drafts and supporting authors of SEPs through the process. +Once an SEP is accepted, its implementation can be reviewed through the usual process. +Once the implementation is complete and accepted the status of the SEP shall be changed to implemented. * **Discussion**: This means that SEP is currently being considered and a decision has not been made. -* **Accepted**: The SEP has been accepted and it will be assigned a number and merged into the sunpy-SEP repository. A decision rationale must be drafted and added to the SEP by the SunPy board sponsor. If the SEP is of the Standard type then it can now be implemented. -* **Implemented**: Only valid for a Standard SEP. This status means that the feature discussed in the SEP is implemented and has been merged into the main SunPy repository. At least X members of the SunPy board must sign off on implementation for it to be accepted. -* **Rejected**: The SEP has been rejected. A decision rationale should be provided by the board and the SEP should still be assigned a number and merged in order to close the issue. It should be noted that a future SEP can supersede the decision. +* **Accepted**: The SEP has been accepted and it will be assigned a number and merged into the sunpy-SEP repository. A decision rationale must be drafted and added to the SEP by the Steering Committee. If the SEP is of the Standard type then it can now be implemented. +* **Implemented**: Only valid for a Standard SEP. This status means that the feature discussed in the SEP is implemented and has been merged into the main SunPy repository. The Steering Committee must vote to approve an SEP by a simple majority. +* **Rejected**: The SEP has been rejected. A decision rationale should be provided by the Steering Committee and the SEP should still be assigned a number and merged in order to close the issue. It should be noted that a future SEP can supersede the decision. ## SEP Template diff --git a/SEP-0002.md b/SEP-0002.md index 6165403..9927aff 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -1,205 +1,295 @@ # SEP-0002 - SunPy Organization Definition -| SEP | 2 | -|---------------|---------------------------------------------------------| -| title | SunPy Organization Definition | -| author(s) | [Steven Christe](https://orcid.org/0000-0001-6127-795X) | -| contact email | | -| date-creation | 2014-02-16 | -| type | process | -| discussion | unavailable | -| status | accepted | - -## Abstract - -The SunPy organization currently lacks a formal organization -structure. This proposal defines the SunPy organization which manages -the code and related properties (e.g. docs, website, etc.) - -## Detailed Description - -The organization of SunPy is modeled on that usually adopted by -non-profit organizations (e.g. -[501c](http://en.wikipedia.org/wiki/501(c)_organization). This -organization structure is tried and tested and has the added advantage -that it should provide a smooth transition to incorporating a SunPy -foundation if it becomes necessary in the future (e.g. for funding -purposes). The primary role of the organization is to *facilitate and -promote the use and development of community-led, free and -open-source solar data-analysis software based on the scientific -Python environment*. This includes but is not limited to the following -tasks - -* developing the SunPy software library -* manage and protect the SunPy -brand and identity -* promote SunPy to the community -* managing SunPy assets, i.e. github account, domain name etc. - -The organization consists of an executive director, an advisory board, and the -developer community. The goal of the proposed structure is to provide and -promote community input into the project. +| SEP | 2 | +|---------------|-------------------------------------------------------------------------------------------| +| title | SunPy Organization Definition | +| author(s) | [Stuart Mumford](https://orcid.org/0000-0003-4217-4642) | +| contact email | | +| date-creation | 2024-04-09 (Original version: 2014-02-16) | +| type | process | +| discussion | | +| status | in review | + +## Rationale + +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 SunPy Project + +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. + +## Governance Structure + +The SunPy Project's governance involves the following five components: + +* The Community +* The Project Custodians +* The Steering Committee +* The Advisory Board +* The Ombudsperson + +### The Community + +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 + +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. + +#### Responsibilities and Rights + +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. + +#### Membership + +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. + +#### Initial Membership + +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: . +* 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 +* David Perez-Suarez +* Tiago M. D. Pereira +* Kevin Reardon +* Albert Y. Shih +* Nabil Freij +* David Stansby +* Alasdair Wilson +* Daniel Ryan +* Shane Maloney + +#### Adding New Project Custodians + +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: + +1. 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). +1. 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. +1. 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. +1. 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. + +#### Emeritus Status + +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. + +#### Removing Project Custodians + +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. + +#### Votes on Other Matters + +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 Steering Committee + +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. + +#### Composition + +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. + +#### Decision Making + +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. + +#### Electing the Steering Committee + +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). + +#### Term + +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. + +#### Removing Steering Committee or Advisory Board Members + +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. ### Advisory Board -The primary function of the advisory board is to elect an executive director, -advise the executive, as well as review and vote on proposed SEPs. -SEPs are the primary mechanism through which all major changes to SunPy, -both the organization and the codebase, are proposed and accepted. - -* **Membership Limit**: The board shall consist of at least 5 members -and no more than 10 members. Within these limits, the board may -increase or decrease the number of directors serving on the board, -including for the purpose of staggering the terms of members. - -* **Term Length**: All members shall be elected to serve a maximum of -a two-year term, however the term may be extended until a successor -has been elected. A member may be re-elected at the end of their term. - -* **Staggering**: Members terms shall be staggered so that -approximately half the number of members will end their terms in any -given year. - -* The term of office shall be considered to begin January 1 and end -December 31 of the second year in office, unless the term is extended -until such time as a successor has been elected. - -* **Vacancies**: The board may fill vacancies or may appoint new -members to fill a previously unfilled board position, subject to the -maximum number of directors under these Bylaws. Known upcoming -vacancies shall be advertised no less than 4 months before the vacancy -become available. Unanticipated vacancies shall be advertised as soon -possible. All vacancies shall be advertised to the community via the -appropriate mailing lists, newsletters and webpages and other -communication channels. The board shall fill vacancies as soon as -possible. - -* **Removal**: A board member may be removed by a two-thirds majority vote -of the full board, if (a) the member is absent and unexcused from 50% -or more meetings of the board in a twelve month period. The board -chair is empowered to excuse members from attendance for a reason -deemed adequate by the board chair. The chair shall not have the power -to excuse him/herself from the board meeting attendance and in that -case, the board vice chair shall excuse the chair. Or (b) for cause or -no cause, if before any meeting of the board at which a vote on -removal will be made the director in question is given electronic or -written notification of the board's intention to discuss her/his case -and is given the opportunity to be heard at a meeting of the board. -The board can remove the executive director by a two-thirds majority vote -of the full board for cause or no cause. - -* **Quorum**: A strict majority (>50%) of the members shall -constitute a quorum for a meeting of the board. No business shall be -considered by the board at any meeting at which a quorum is not -present. - -* **Majority Vote**: Except as otherwise specified the act of the -majority of the directors present at a meeting at which a quorum is -present shall be the act of the board. - -* **Absentee Voting**: Voting by proxy is not allowed. -An act of the board may allow for a vote to take place by correspondence -(e.g., email). A time window of at least a week must be provided for votes to -be cast and a quorum will be defined by the number of votes cast. - -* **Hung Board Decisions**: On the occasion of a tie, the board chair -or vice-chair in the order of presence shall have the power to swing -the vote based on his/her discretion. - -* **Regular Meetings**: The board shall have at least a meeting every -quarter at times and places fixed by the board. Board meetings shall -provide at least one week (7) days notice. Notice of meetings shall -specify the place, day, and hour of meeting. The purpose of the -meeting need not be specified. - -* **Extra Meetings**: Extra meetings of the board may be called by -the chair or vice-chair or any two (2) members of the board. A -special meeting must be preceded by at least 7 days notice to each -member of the date, time, and place, but not the purpose, of the -meeting. - -* **Board officers**: The officers of the board shall be a board -chair, vice-chair, and secretary, all of whom shall be chosen by, and -serve at the pleasure of, the board. Officers shall serve one year -terms and can serve consecutive terms. - -* **Board Chair**: The board chair shall lead the board in performing -its duties and responsibilities, including, if present, leading all -meetings of the board, and shall perform all other duties incident to -the office or properly required by the board. - -* **Vice-chair**: In the absence of the board chair, the vice-chair -shall perform the duties of the board chair. When so acting, the -vice-chair shall have all the powers of and be subject to all the -restrictions upon the board chair. - -* **Secretary**: The secretary shall be responsible for keeping the -minutes of all meetings and actions of the board. The minutes of each -meeting shall state the time and place that it was held, the members -present, and such other information as shall be necessary to determine -the actions taken and whether the meeting was held in accordance with -the law and these Bylaws. - -* **Executive Director**: The board shall approve an executive director -(ED). The ED cannot serve on the advisory board. The ED shall serve a one year term, -and can be re-elected. It is recommended that the ED choose a deputy ED. - -* **Advise and Consent**: The ED shall present the state of the project and -future plans at meetings of the board. The advisory board shall advise and -consent on those plans. - -### The Executive - -The role of the executive which is headed by the Executive Director, is to -manage the day to day operations of the SunPy organization. The executive shall: - -* hold regular meetings with the developer community (at least monthly) -* make regular reports to the board (at least quarterly) -* have push privileges to the SunPy repository and can delegate those privileges -* have ownership privileges to the SunPy GitHub organization -* create and maintain the SunPy code of conduct (see below) -* shall plan and manage finances - -The current Executive Director is named in SEP-0006 and the structure of the -executive is defined in SEP-0010. - -#### Code of Conduct - -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. +The primary functions of the Advisory Board are: -### The Advisory Board +* 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 board or executive director may appoint an advisory board to -advise the board and executive director. +The Advisory Board is self-electing, with members appointed by a vote of the existing Advisory Board. -## Board Members +#### Membership -Initially, a 2-year term is defined to expire on December 31, 2016 and -a 1-year term is defined to expire on December 31, 2015. Initial -member of the board shall be (with term length in parentheses): +* 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. -1. Steven Christe (2 year) -2. Jack Ireland (2 year) -3. Stuart Mumford (1 year) -4. David Perez-Suarez (2 year) -5. Albert Shih (2 year) -6. Russell Hewett (1 year) -7. Andrew Inglis (1 year) +#### Meetings -For an up to date list of board members see SEP-0006. +* 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. -### References +The Advisory Board shall organize itself as it sees fit. -* -* +#### Advise and Consent -## Decision Rationale +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. + +#### Requiring a Project Vote + +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). + +### Ombudsperson -Voted on and approved at the 2nd SunPy organisation meeting (which took place on -17-Mar-2014), approved by all present (the members of the initial board). +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. + +## Future changes to the governance (Revision of SEP-2) + +Any changes to the governance structure of the SunPy Project (e.g. this SEP) requires a 2/3 majority vote of the Project Custodians. +. + +## Code of Conduct + +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. + +## Implementation of this Revision of SEP 2 + +This change to SEP 2 will be implemented in the following stages: + +1. The list of initial Project Custodians will be drawn up and added to the SunPy website. +2. A communication channel private to the Project Custodians will be created where discussions and announcements of votes can take place. +3. A Ombudsperson will be nominated by the Advisory Board and confirmed by the initial group of Project Custodians. +4. Nomination of new Project Custodians will be solicited and confirmed by the initial Project Custodians. +5. The process for electing the initial Steering Committee will be followed as laid out above. + +## Attribution + +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](https://github.com/astropy/astropy-APEs/blob/main/APE0.rst), but other sections also copy from it. + +## Decision Rationale