From 361d978a6c99914ebd749e233709ba2ea9eaacda Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Thu, 13 Oct 2022 16:01:22 +0100 Subject: [PATCH 01/47] Add a revised version of SEP 2. --- SEP-0002-revised.md | 248 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 SEP-0002-revised.md diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md new file mode 100644 index 0000000..04c7005 --- /dev/null +++ b/SEP-0002-revised.md @@ -0,0 +1,248 @@ +# SEP-0002 - SunPy Organization Definition + +# Abstract +The SunPy project has changed significantly since the first version of SEP-0002 was written in 2014. +This SEP details a new governance structure designed to enable the project to grow, while allowing for more input from the wider SunPy community. + +## Detailed Description +The primary role of the SunPy Project 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. + +# Governance Structure + +The SunPy project's governance involves the following five components: + +* The SunPy Community +* The Project Members +* The Steering Committee +* The Advisory Board +* The Ombusperson + +The SunPy project is ultimately run by the whole community: users, developers, and members of the wider solar physics and scientific software communtiy, for the benifit of all. +This document descibes how the project is run through delegation of this authority, primarily to the Steering Committee and the Project Members. +Wherever possible all descisions taken should be done by consensus, considering input from both active contributors and the wider community. + +## Advisory Board +The primary functions of the advisory board are: to advise the steering committee on management of the project, find funding for the project to ensure the core aims of the project can be met, nominate a Ombudsperson, and to ensure that the governance of the project is running as intended. + +* **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 people 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 members. +The board shall fill vacancies as soon as possible. +The board should work to ensure that the composition of the board represents a diverse cross-section of the solar physics community. +This diversity should consider things such as research topic, career stage, as well as all other forms of diversity such as gender. + +* **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. + +* **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. + +* **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. + +* **Advise and Consent**: The steering committee 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 Steering Committee +The role of the steering committee which is headed by the Lead Developer, is to manage the day to day operations of the SunPy organization. +The steering committee shall be responsible for the running of the project under advisement of the board. +This includes: + +* holding regular meetings with the developer community (at least monthly) +* makeing regular reports to the board (at least quarterly) +* having ownership privileges to the SunPy GitHub organization +* createing, maintaining and enforcing the SunPy code of conduct (see below) +* accepting or rejecting SEPs based on community consensus +* delegating responsibility and authority to other community roles +* planing and manage finances and financial processes of the project. + +### Composition + +The steering committee is formed of three roles: + +* **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 board meetings. +* **The deputy lead developer** in the absense of the lead developer, the deputy shall perform all the duties of the lead developer. +* **The financial officier** the financial officer is primarily responsible for ensuring the health of the project financies and setting up processes for managing expenses and reporting to the board on financial matters. + +The steering committee is elected by the **project members**. + +### Decision Making + +The steering committee should strive to make decisions by consensus. +If consensus can not be reached decisions can be taken by a majority vote. + +### Electing the Steering Committee + +An election to fill a vacant role on the steering committee will occurr in two stages: + +* Nominations: No less than three weeks before an election a public annoucement of the election must be made and nominations solicited for no less than two weeks. +Candidates which have accepted their nomination (self nominations are allowed) should write a short statement which will be made public as soon as possible, but no later than before the election starts. +* Election: All candidates that have written a short statement will be put to a vote of the project members and the candidate with the most votes shall be elected to the position. +In the event that more than one position has to be filled simultaneously each election shall be treated as a separate election for the purposes of this process. + +### 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 Members + +In exceptional circumstances, the project members may remove one or more sitting steering committee members via a single vote. + +Such a vote is triggered when a project member calls for one publicly on an appropriate Project-wide communication channel, and two other active project members second the proposal. + +For Steering Committee Member(s) to be removed, two-thirds of the active Project Members (where the count includes the member being voted on if they are a project member) must vote in support of the removal. + +To avoid repeated removal votes, any individual Project Member who has called for, or seconded such a vote, may not call for or second a vote to remove any Steering Committee member for one year from the original motion. + +## The Project Members + +The project members are trusted community members with a proven track record of constructive contribution to the goals of the project. +Collectively, the project members make decisions about the direction of the project and have authority over the project, which is delegated to the Steering Committee. + +Project Members are expected to act as role models for the community and custodians of the SunPy Project, on behalf of the community and all those who rely on SunPy. +They will act as representatives of the SunPy Project, where necessary, including in online discussions or at official SunPy events. + +### Responsibilities and Rights + +Project Members may and should participate in formal votes on: + +* Adding new Project Members +* Electing Steering Committee members +* Appointment of the Ombudsperson +* Removing Project Members +* Removing Steering Committee members +* Removing the Ombudsperson +* Changes to this SEP +* Other matters for which the Steering Committee believes a vote is appropriate. + +### Membership + +Project Members 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 +* Significant 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 + +Project Membership 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 Members an initial set of Project Members are needed. +People meeting the following criteria will be invited to form the initial group of Project Members. + +* 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/project/#community-roles. +* Is a currently serving board member. + + +### Adding New Project Members + +Anyone is eligible to be nominated to be a Project member, as long as they meet the criteria laid out in the Membership section above. +Self-nominations are encouraged. + +The process for adding a new Project member is as follows: + +1. A nomination is recieved by the steering committee. +The steering committee, and the ombudsperson check that the nomination is factually accurate and their record of contribution to the community adheres to the Code of Conduct. +1. The candidate is then put to the Project Members. +The name and nomination statement of the candidate will be shared with the Project Members. +The candidate can become a Project member if five existing Project members approve the candidate and no Project Members call for an election within two weeks of the candidate being put to the Project Members. +1. Project Members can call for an election either by posting in the discussion of the candidate or reaching out privetly to the Steering Committee or the Ombudsperson. +If a vote is called for then the candidate will be come a Project Member with a simple majority of all votes cast in the election. +An election needs to be annouced to the Project Members one week before the voting opens and voting will be open for two weeks. +1. The candidate will be informed prompty of the outcome by the Steering Committee. + +The name of a candidate should not be shared outside of the Project Members until they become a Project Member. +A public list of Project Members will be kept on the SunPy website. + +Nominations, discussions and any elections of Project Members should take place before the initial election of the Steering Committee. + + +### Active and Emeritus Status + +Project Members have no term limits. +Project Members who are no longer actively contributing to the project should contact the Steering Committee to move themselves to emeritus status. +Active Project Members who have not made any significant contributions 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 Member's status to emeritus. +Emeritus Project Members will continue to be listed on the website. +Emeritus Project Members are not able to participate in votes. +An emeritus member may request to be marked as active at any time if they feel they are making contributions. + +## Removing Project Members + +In exceptional circumstances, it may be necessary to remove someone from the Project Members against their will. +A vote must be held to remove a Project Member. +Such a vote is triggered by a motion made by an active Project Member, which must be seconded by an additional Project Member. +The vote must conclude no more than three months after the motion is seconded. +Removal requires approval by two-thirds of all active Project Members 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 Members. +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 Member for violations of the Code of Conduct. +In this case, the Steering Committee, Ombudsperson and Board will work together to make this decision. + +# Ombudsperson + +The Ombudsperson represents the interests of the Astropy 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 Board, after which at least two weeks for comment is allowed, and then the nominee must be confirmed by two-thirds of the active Project Members. + +The Ombudsperson has no term limit but can resign at any time, or be removed by the same process as removing a Project Member. +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. + +# 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 Members will be drawn up and added to the SunPy website. +2. A communication channel private to the Project Members will be created where discussions and announcements of votes can take place. +3. A Ombudsperson will be nominated by The Board and confimed by the initial group of project members. +4. Nomination of new Project Members will be solicited and confirmed by the initial project members. +5. The process for electing a the initial Steering Committee will be followed as laid out above. + +# Attribution + +This document builds on the original version of SEP 2. +The Project Members 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 From ee1a98ed42fa47aea4413acfa4b26e1a9d29ebe2 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Fri, 14 Oct 2022 14:45:12 +0100 Subject: [PATCH 02/47] Apply suggestions from code review Co-authored-by: Nabil Freij --- SEP-0002-revised.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 04c7005..55c0684 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -75,9 +75,9 @@ The steering committee shall be responsible for the running of the project under This includes: * holding regular meetings with the developer community (at least monthly) -* makeing regular reports to the board (at least quarterly) +* making regular reports to the board (at least quarterly) * having ownership privileges to the SunPy GitHub organization -* createing, maintaining and enforcing the SunPy code of conduct (see below) +* creating, maintaining and enforcing the SunPy code of conduct (see below) * accepting or rejecting SEPs based on community consensus * delegating responsibility and authority to other community roles * planing and manage finances and financial processes of the project. @@ -167,7 +167,6 @@ People meeting the following criteria will be invited to form the initial group * Currently holds a role listed under the community roles section of the website: https://sunpy.org/project/#community-roles. * Is a currently serving board member. - ### Adding New Project Members Anyone is eligible to be nominated to be a Project member, as long as they meet the criteria laid out in the Membership section above. @@ -190,7 +189,6 @@ A public list of Project Members will be kept on the SunPy website. Nominations, discussions and any elections of Project Members should take place before the initial election of the Steering Committee. - ### Active and Emeritus Status Project Members have no term limits. @@ -217,7 +215,7 @@ In this case, the Steering Committee, Ombudsperson and Board will work together # Ombudsperson -The Ombudsperson represents the interests of the Astropy community by providing an alternative point of contact for sensitive issues such as code of conduct violations and ethical concerns. +The Ombudsperson represents the interests of the SunPy 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 Board, after which at least two weeks for comment is allowed, and then the nominee must be confirmed by two-thirds of the active Project Members. The Ombudsperson has no term limit but can resign at any time, or be removed by the same process as removing a Project Member. @@ -237,12 +235,11 @@ This change to SEP 2 will be implemented in the following stages: 2. A communication channel private to the Project Members will be created where discussions and announcements of votes can take place. 3. A Ombudsperson will be nominated by The Board and confimed by the initial group of project members. 4. Nomination of new Project Members will be solicited and confirmed by the initial project members. -5. The process for electing a the initial Steering Committee will be followed as laid out above. +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 Members 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 From b37d1704c2f092090548ced97c2db9f566662f23 Mon Sep 17 00:00:00 2001 From: Tiago Pereira <1014003+tiagopereira@users.noreply.github.com> Date: Sun, 16 Oct 2022 19:39:56 +0200 Subject: [PATCH 03/47] Spell checking --- SEP-0002-revised.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 55c0684..0d563e0 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -21,11 +21,11 @@ The SunPy project's governance involves the following five components: * The Project Members * The Steering Committee * The Advisory Board -* The Ombusperson +* The Ombudsperson -The SunPy project is ultimately run by the whole community: users, developers, and members of the wider solar physics and scientific software communtiy, for the benifit of all. -This document descibes how the project is run through delegation of this authority, primarily to the Steering Committee and the Project Members. -Wherever possible all descisions taken should be done by consensus, considering input from both active contributors and the wider community. +The SunPy project is ultimately run by the whole community: users, developers, and members of the wider solar physics and scientific software community, for the benefit of all. +This document describes how the project is run through delegation of this authority, primarily to the Steering Committee and the Project Members. +Wherever possible all decisions taken should be done by consensus, considering input from both active contributors and the wider community. ## Advisory Board The primary functions of the advisory board are: to advise the steering committee on management of the project, find funding for the project to ensure the core aims of the project can be met, nominate a Ombudsperson, and to ensure that the governance of the project is running as intended. @@ -64,7 +64,7 @@ Officers shall serve one year terms and can serve consecutive terms. 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. +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. * **Advise and Consent**: The steering committee 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. @@ -87,8 +87,8 @@ This includes: The steering committee is formed of three roles: * **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 board meetings. -* **The deputy lead developer** in the absense of the lead developer, the deputy shall perform all the duties of the lead developer. -* **The financial officier** the financial officer is primarily responsible for ensuring the health of the project financies and setting up processes for managing expenses and reporting to the board on financial matters. +* **The deputy lead developer** in the absence of the lead developer, the deputy shall perform all the duties of the lead developer. +* **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 board on financial matters. The steering committee is elected by the **project members**. @@ -99,9 +99,9 @@ If consensus can not be reached decisions can be taken by a majority vote. ### Electing the Steering Committee -An election to fill a vacant role on the steering committee will occurr in two stages: +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 annoucement of the election must be made and nominations solicited for no less than two weeks. +* 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 which have accepted their nomination (self nominations are allowed) should write a short statement which will be made public as soon as possible, but no later than before the election starts. * Election: All candidates that have written a short statement will be put to a vote of the project members and the candidate with the most votes shall be elected to the position. In the event that more than one position has to be filled simultaneously each election shall be treated as a separate election for the purposes of this process. @@ -174,15 +174,15 @@ Self-nominations are encouraged. The process for adding a new Project member is as follows: -1. A nomination is recieved by the steering committee. -The steering committee, and the ombudsperson check that the nomination is factually accurate and their record of contribution to the community adheres to the Code of Conduct. +1. A nomination is received by the steering committee. +The steering committee, and the Ombudsperson check that the nomination is factually accurate and their record of contribution to the community adheres to the Code of Conduct. 1. The candidate is then put to the Project Members. The name and nomination statement of the candidate will be shared with the Project Members. The candidate can become a Project member if five existing Project members approve the candidate and no Project Members call for an election within two weeks of the candidate being put to the Project Members. -1. Project Members can call for an election either by posting in the discussion of the candidate or reaching out privetly to the Steering Committee or the Ombudsperson. +1. Project Members can call for an election either by posting in the discussion of the candidate or reaching out privately to the Steering Committee or the Ombudsperson. If a vote is called for then the candidate will be come a Project Member with a simple majority of all votes cast in the election. -An election needs to be annouced to the Project Members one week before the voting opens and voting will be open for two weeks. -1. The candidate will be informed prompty of the outcome by the Steering Committee. +An election needs to be announced to the Project Members 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 Members until they become a Project Member. A public list of Project Members will be kept on the SunPy website. @@ -233,7 +233,7 @@ This change to SEP 2 will be implemented in the following stages: 1. The list of initial Project Members will be drawn up and added to the SunPy website. 2. A communication channel private to the Project Members will be created where discussions and announcements of votes can take place. -3. A Ombudsperson will be nominated by The Board and confimed by the initial group of project members. +3. A Ombudsperson will be nominated by The Board and confirmed by the initial group of project members. 4. Nomination of new Project Members will be solicited and confirmed by the initial project members. 5. The process for electing the initial Steering Committee will be followed as laid out above. From 48d5a72b4f8728dd12d1fb171d32e446e663c506 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 25 Oct 2022 16:39:47 +0100 Subject: [PATCH 04/47] Incorporate feedback --- SEP-0002-revised.md | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 0d563e0..e8f7381 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -8,10 +8,10 @@ This SEP details a new governance structure designed to enable the project to gr The primary role of the SunPy Project 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 +* developing the sunpy core library and other affiliated packages * manage and protect the SunPy brand and identity * promote SunPy to the community -* managing SunPy assets, i.e. github account, domain name etc. +* managing SunPy assets, i.e. GitHub organization, domain name etc. # Governance Structure @@ -29,48 +29,47 @@ Wherever possible all decisions taken should be done by consensus, considering i ## Advisory Board The primary functions of the advisory board are: to advise the steering committee on management of the project, find funding for the project to ensure the core aims of the project can be met, nominate a Ombudsperson, and to ensure that the governance of the project is running as intended. +The board is self-electing, with members appointed by a vote of the existing board. * **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 people serving on the board, including for the purpose of staggering the terms of members. +The board may increase or decrease the number of people serving on the board. -* **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. +* **Term Length**: All members shall serve a maximum of a two-year term (from their appointment), however the term may be extended until a successor has been appointed. +A member may be re-appointed 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 members. The board shall fill vacancies as soon as possible. -The board should work to ensure that the composition of the board represents a diverse cross-section of the solar physics community. +The board should work to ensure that the composition of the 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 such as gender. -* **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. +* **Removal**: A board member may be removed by a two-thirds majority vote of the full board, if before any meeting of the board at which a vote on removal will be made the member in question is given electronic or written notification of the board’s intention to discuss their case and is given the opportunity to be heard at a meeting of the board. +Alternatively a member of the board can be removed by a vote of the Voting Members, following the same procedure laid out below for the removal of a member of the Steering Committee. -* **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. +* **Meetings**: The board shall have a meeting at least every quarter at times and places fixed by the board. +Board meetings shall provide at least one week (7 days) notice to all board members and the Steering Committee. Notice of meetings shall specify the place, day, and hour of meeting. -The purpose of the meeting need not be specified. +The purpose of the meeting needs not be specified. * **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. +Officers shall serve one year terms (as officers) 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. +* **Board Chair**: The board chair shall lead the board in performing its duties and responsibilities, including, if present, leading all meetings of 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. +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. +The minutes of all board meetings shall be made publicly accessible to the whole SunPy community. * **Advise and Consent**: The steering committee 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 Steering Committee -The role of the steering committee which is headed by the Lead Developer, is to manage the day to day operations of the SunPy organization. +The role of the steering committee, which is headed by the Lead Developer, is to manage the day to day operations of the SunPy project. The steering committee shall be responsible for the running of the project under advisement of the board. This includes: From 561f32ca7ca58a44276d8e43c22cca44f4f760ae Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 25 Oct 2022 16:44:14 +0100 Subject: [PATCH 05/47] Update SEP-0002-revised.md Co-authored-by: David Stansby --- SEP-0002-revised.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index e8f7381..8760115 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -79,7 +79,7 @@ This includes: * creating, maintaining and enforcing the SunPy code of conduct (see below) * accepting or rejecting SEPs based on community consensus * delegating responsibility and authority to other community roles -* planing and manage finances and financial processes of the project. +* planning and managing finances and financial processes of the project. ### Composition From 6edb61fed853d7f33602374d4a8753c449a404c2 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 26 Oct 2022 10:26:46 +0100 Subject: [PATCH 06/47] Update SEP-0002-revised.md Co-authored-by: David Stansby --- SEP-0002-revised.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 8760115..5d154ed 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -161,6 +161,7 @@ Project Membership acknowledges sustained and valuable efforts that align well w To be able to elect new Project Members an initial set of Project Members are needed. People meeting the following criteria will be invited to form the initial group of Project Members. +They should consider the above responsiblities and activate 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/project/#community-roles. From af08dfe5cdfe0ad3566a54cea5ffe270adbdb0bc Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 26 Oct 2022 10:26:54 +0100 Subject: [PATCH 07/47] More feedback --- SEP-0002-revised.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 5d154ed..31ac0a1 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -174,12 +174,12 @@ Self-nominations are encouraged. The process for adding a new Project member is as follows: -1. A nomination is received by the steering committee. +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 membership. The steering committee, and the Ombudsperson check that the nomination is factually accurate and their record of contribution to the community adheres to the Code of Conduct. 1. The candidate is then put to the Project Members. The name and nomination statement of the candidate will be shared with the Project Members. The candidate can become a Project member if five existing Project members approve the candidate and no Project Members call for an election within two weeks of the candidate being put to the Project Members. -1. Project Members can call for an election either by posting in the discussion of the candidate or reaching out privately to the Steering Committee or the Ombudsperson. +1. Project Members can call for an election either by informing the Steering Committee or the Ombudsperson. If a vote is called for then the candidate will be come a Project Member with a simple majority of all votes cast in the election. An election needs to be announced to the Project Members 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. @@ -187,7 +187,7 @@ An election needs to be announced to the Project Members one week before the vot The name of a candidate should not be shared outside of the Project Members until they become a Project Member. A public list of Project Members will be kept on the SunPy website. -Nominations, discussions and any elections of Project Members should take place before the initial election of the Steering Committee. +Nominations, approvals and any elections of Project Members should take place before the initial election of the Steering Committee. ### Active and Emeritus Status @@ -202,8 +202,8 @@ An emeritus member may request to be marked as active at any time if they feel t ## Removing Project Members In exceptional circumstances, it may be necessary to remove someone from the Project Members against their will. -A vote must be held to remove a Project Member. -Such a vote is triggered by a motion made by an active Project Member, which must be seconded by an additional Project Member. +A vote of the Project membership must be held to remove a Project Member. +Such a vote is triggered by a motion (sent to the Steering Committee and the Ombudsperson) made by an active Project Member, which must be seconded by an additional Project Member. The vote must conclude no more than three months after the motion is seconded. Removal requires approval by two-thirds of all active Project Members at the time the motion is made. The motion, second, and vote will be by secret ballot. From 5dc2d06108d244cea7625811e3f6d349fb914d28 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Feb 2023 12:50:37 +0000 Subject: [PATCH 08/47] Rework authority section --- SEP-0002-revised.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 31ac0a1..d9c3df9 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -23,9 +23,9 @@ The SunPy project's governance involves the following five components: * The Advisory Board * The Ombudsperson -The SunPy project is ultimately run by the whole community: users, developers, and members of the wider solar physics and scientific software community, for the benefit of all. -This document describes how the project is run through delegation of this authority, primarily to the Steering Committee and the Project Members. -Wherever possible all decisions taken should be done by consensus, considering input from both active contributors and the wider 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. +This community is the ultimate authority in how the project is run, this authority is exercised through the processes outlined in this document, primarily to the Steering Committee and the Project Members. +Whenever possible all decisions taken should be done by consensus, considering input from both active contributors and the wider community, rather than taken in isolation by the projects governance. ## Advisory Board The primary functions of the advisory board are: to advise the steering committee on management of the project, find funding for the project to ensure the core aims of the project can be met, nominate a Ombudsperson, and to ensure that the governance of the project is running as intended. From dd55dbb6fe4dd061c9a9100e66b56463a4d44e1d Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Feb 2023 13:22:42 +0000 Subject: [PATCH 09/47] Board numbers --- SEP-0002-revised.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index d9c3df9..2fb6131 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -31,7 +31,7 @@ Whenever possible all decisions taken should be done by consensus, considering i The primary functions of the advisory board are: to advise the steering committee on management of the project, find funding for the project to ensure the core aims of the project can be met, nominate a Ombudsperson, and to ensure that the governance of the project is running as intended. The board is self-electing, with members appointed by a vote of the existing board. -* **Membership Limit**: The board shall consist of at least 5 members and no more than 10 members. +* **Membership Limit**: The board shall consist of at least 3 members and no more than 7 members. The board may increase or decrease the number of people serving on the board. * **Term Length**: All members shall serve a maximum of a two-year term (from their appointment), however the term may be extended until a successor has been appointed. From 43b3b58a9d196993ed6d4ca15938cc1eea5489dc Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Feb 2023 13:28:23 +0000 Subject: [PATCH 10/47] Steering committee clarifications --- SEP-0002-revised.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 2fb6131..8834ae5 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -69,7 +69,7 @@ The advisory board shall advise and consent on those plans. ## The Steering Committee -The role of the steering committee, which is headed by the Lead Developer, is to manage the day to day operations of the SunPy project. +The role of the steering committee, which is chaired by the Lead Developer, is to manage the day-to-day operations of the project. The steering committee shall be responsible for the running of the project under advisement of the board. This includes: @@ -77,13 +77,14 @@ This includes: * making regular reports to the board (at least quarterly) * having ownership privileges to the SunPy GitHub organization * creating, maintaining and enforcing the SunPy code of conduct (see below) -* accepting or rejecting SEPs based on community consensus +* 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. ### Composition -The steering committee is formed of three roles: +The steering committee is formed of three members of the SunPy community with equal status on the committee, they do not need to be project members. +The members of the committee are elected into three roles to help with distributing the work load, these three roles are: * **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 board meetings. * **The deputy lead developer** in the absence of the lead developer, the deputy shall perform all the duties of the lead developer. From cb72574474f0e3efcfa8f59c2e0d0800ba0cb4d7 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Feb 2023 13:41:06 +0000 Subject: [PATCH 11/47] Clarify decision making --- SEP-0002-revised.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 8834ae5..b3ff173 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -95,7 +95,8 @@ The steering committee is elected by the **project members**. ### Decision Making The steering committee should strive to make decisions by consensus. -If consensus can not be reached decisions can be taken by a majority vote. +Where possible and appropriate, consensus should be reached between the members of the committee, and the whole SunPy community. +If consensus can not be reached between the committee members, decisions can be taken by a majority vote. ### Electing the Steering Committee From 6377576143afdc6db761c3d0d650a13d77fbb752 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Feb 2023 13:48:39 +0000 Subject: [PATCH 12/47] Steering Committee clarifications --- SEP-0002-revised.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index b3ff173..a92afaa 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -103,9 +103,9 @@ If consensus can not be reached between the committee members, decisions can be 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 which have accepted their nomination (self nominations are allowed) should write a short statement which will be made public as soon as possible, but no later than before the election starts. -* Election: All candidates that have written a short statement will be put to a vote of the project members and the candidate with the most votes shall be elected to the position. -In the event that more than one position has to be filled simultaneously each election shall be treated as a separate election for the purposes of this process. +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 members and the candidate with the most votes shall be elected to the position. +In the event that more than one position has to be filled simultaneously each position shall be filled as if it were an independent election. ### Term @@ -116,7 +116,7 @@ If there is a vacancy part way through a term, then a by-election will be held w 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 Members +### Removing Steering Committee Members In exceptional circumstances, the project members may remove one or more sitting steering committee members via a single vote. From 4f1b17a3c0c422d86890d8cd365eb241c8503b4e Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Feb 2023 13:49:42 +0000 Subject: [PATCH 13/47] Update SEP-0002-revised.md Co-authored-by: Will Barnes --- SEP-0002-revised.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index a92afaa..a7ee996 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -131,7 +131,7 @@ To avoid repeated removal votes, any individual Project Member who has called fo The project members are trusted community members with a proven track record of constructive contribution to the goals of the project. Collectively, the project members make decisions about the direction of the project and have authority over the project, which is delegated to the Steering Committee. -Project Members are expected to act as role models for the community and custodians of the SunPy Project, on behalf of the community and all those who rely on SunPy. +Project Members are expected to act as role models for the community and custodians of the SunPy Project, on behalf of the community and all those who rely on the SunPy Project. They will act as representatives of the SunPy Project, where necessary, including in online discussions or at official SunPy events. ### Responsibilities and Rights From e24955c1201e3cbd096a3862d6c59804a3e1370d Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Feb 2023 13:57:22 +0000 Subject: [PATCH 14/47] Project members --- SEP-0002-revised.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index a7ee996..3c2499f 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -131,8 +131,8 @@ To avoid repeated removal votes, any individual Project Member who has called fo The project members are trusted community members with a proven track record of constructive contribution to the goals of the project. Collectively, the project members make decisions about the direction of the project and have authority over the project, which is delegated to the Steering Committee. -Project Members are expected to act as role models for the community and custodians of the SunPy Project, on behalf of the community and all those who rely on the SunPy Project. -They will act as representatives of the SunPy Project, where necessary, including in online discussions or at official SunPy events. +Project Members are expected to act as role models for the community and custodians of the SunPy Project, on behalf of the community and all those who rely on SunPy. +They will act as representatives of the SunPy Project, where necessary, including in online discussions, in-person conferences, or at official SunPy events. ### Responsibilities and Rights @@ -140,11 +140,11 @@ Project Members may and should participate in formal votes on: * Adding new Project Members * Electing Steering Committee members -* Appointment of the Ombudsperson +* Appointing the Ombudsperson * Removing Project Members * Removing Steering Committee members * Removing the Ombudsperson -* Changes to this SEP +* Approving changes to this SEP via a vote (see below) * Other matters for which the Steering Committee believes a vote is appropriate. ### Membership @@ -163,7 +163,7 @@ Project Membership acknowledges sustained and valuable efforts that align well w To be able to elect new Project Members an initial set of Project Members are needed. People meeting the following criteria will be invited to form the initial group of Project Members. -They should consider the above responsiblities and activate agree to taking them on if they choose to accept the invitation. +They should consider the above responsiblities 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/project/#community-roles. From 03197dd261f6acf38872617af826e03e362b0a59 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Feb 2023 14:00:43 +0000 Subject: [PATCH 15/47] Add a section describing the process for changing this SEP --- SEP-0002-revised.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 3c2499f..e225368 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -221,7 +221,13 @@ The Ombudsperson represents the interests of the SunPy community by providing an Candidates for this project role are publicly nominated by the Board, after which at least two weeks for comment is allowed, and then the nominee must be confirmed by two-thirds of the active Project Members. The Ombudsperson has no term limit but can resign at any time, or be removed by the same process as removing a Project Member. -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. +In the period between removal/resignation and new appointment, the Steering Comittee will temporarily take over the responsibilities of the Ombudsperson, should the need arise. + +# Modifications to SEP 2 + +Due to the fundamental nature of this SEP, it would be inappropriate for the Steering Committee alone to have authority to approve modifications to it. +Therefore, if this document is to be modified in any way, then those modifications shall be put to a vote of the Project Members. +This vote shall require a 2/3s majority of those voting to approve the changes. # Code of Conduct From ccfdd9067909ef0dc99a043058ebcfbf8625d358 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 11:57:52 +0000 Subject: [PATCH 16/47] Some changes by @ehsteve --- SEP-0002-revised.md | 72 +++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 39 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index e225368..3bb9889 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -5,71 +5,65 @@ The SunPy project has changed significantly since the first version of SEP-0002 This SEP details a new governance structure designed to enable the project to grow, while allowing for more input from the wider SunPy community. ## Detailed Description -The primary role of the SunPy Project 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*. +The primary 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 includes but is not limited to the following tasks: * developing the sunpy core library and other affiliated packages -* manage and protect the SunPy brand and identity -* promote SunPy to the community +* supporting a community of affiliated packages +* managing and protect the SunPy brand and identity +* promoting SunPy to the community * managing SunPy assets, i.e. GitHub organization, domain name etc. # Governance Structure The SunPy project's governance involves the following five components: -* The SunPy Community +* The Community * The Project Members * 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. -This community is the ultimate authority in how the project is run, this authority is exercised through the processes outlined in this document, primarily to the Steering Committee and the Project Members. -Whenever possible all decisions taken should be done by consensus, considering input from both active contributors and the wider community, rather than taken in isolation by the projects governance. +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 Members. +Whenever possible, decisions shall be approved by consensus, considering input from the entire community, rather than taken unilaterily by Project Members or the Steering Committee. ## Advisory Board -The primary functions of the advisory board are: to advise the steering committee on management of the project, find funding for the project to ensure the core aims of the project can be met, nominate a Ombudsperson, and to ensure that the governance of the project is running as intended. -The board is self-electing, with members appointed by a vote of the existing board. - -* **Membership Limit**: The board shall consist of at least 3 members and no more than 7 members. -The board may increase or decrease the number of people serving on the board. +The primary functions of the advisory board are: -* **Term Length**: All members shall serve a maximum of a two-year term (from their appointment), however the term may be extended until a successor has been appointed. -A member may be re-appointed at the end of their term. +* to advise the steering committee on management of the project, +* aid in finding funding for the project to ensure the core aims of the project can be met, +* nominate a Ombudsperson, +* ensure that the governance of the project is running as intended. -* **Staggering**: Members terms shall be staggered so that approximately half the number of members will end their terms in any given year. +The board is self-electing, with members appointed by a vote of the existing board. -* **Vacancies**: The board may fill vacancies or may appoint new members to fill a previously unfilled board position, subject to the maximum number of members. -The board shall fill vacancies as soon as possible. +* **Membership**: The board shall consist of at least 3 members and no more than 5 members. +The board selects how many members are needed. +All members shall serve a maximum of a two-year term, however a term may be extended until a successor has been appointed. +A member may be re-appointed at the end of their term. +Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. +The board may fill vacancies or may appoint new members to fill a previously unfilled board position, subject to the maximum number of members. The board should work to ensure that the composition of the 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 such as gender. +A board member may be removed by a two-thirds majority vote of the board or Project Members. -* **Removal**: A board member may be removed by a two-thirds majority vote of the full board, if before any meeting of the board at which a vote on removal will be made the member in question is given electronic or written notification of the board’s intention to discuss their case and is given the opportunity to be heard at a meeting of the board. -Alternatively a member of the board can be removed by a vote of the Voting Members, following the same procedure laid out below for the removal of a member of the Steering Committee. - -* **Meetings**: The board shall have a meeting at least every quarter at times and places fixed by the board. -Board meetings shall provide at least one week (7 days) notice to all board members and the Steering Committee. +* **Meetings**: The board shall meet with the Steering Committee at least 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 needs not be specified. +Minutes for the meetings shall be recorded and made public as much as is appropriate. -* **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 (as officers) 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. - -* **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. -The minutes of all board meetings shall be made publicly accessible to the whole SunPy community. +The board shall organize itself as it sees fit. -* **Advise and Consent**: The steering committee shall present the state of the project and future plans at meetings of the board. +* **Advise and Consent**: The Steering committee shall present the state of the project and future plans at meetings of the board on a yearly basis. The advisory board shall advise and consent on those plans. +* **Forcing a Project Vote**: In the unlikely event that the board does not agree with a decision made by the Steering Committee, it can force Project Members to consent to the decision through a majority vote. ## The Steering Committee -The role of the steering committee, which is chaired by the Lead Developer, is to manage the day-to-day operations of the project. +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 board. This includes: @@ -131,8 +125,8 @@ To avoid repeated removal votes, any individual Project Member who has called fo The project members are trusted community members with a proven track record of constructive contribution to the goals of the project. Collectively, the project members make decisions about the direction of the project and have authority over the project, which is delegated to the Steering Committee. -Project Members are expected to act as role models for the community and custodians of the SunPy Project, on behalf of the community and all those who rely on SunPy. -They will act as representatives of the SunPy Project, where necessary, including in online discussions, in-person conferences, or at official SunPy events. +It is expected that Project Members act as role models for the Community and are custodians of the SunPy Project. +The Project Members elect a Steering committee to lead the SunPy Project. ### Responsibilities and Rights @@ -217,13 +211,13 @@ In this case, the Steering Committee, Ombudsperson and Board will work together # Ombudsperson -The Ombudsperson represents the interests of the SunPy community by providing an alternative point of contact for sensitive issues such as code of conduct violations and ethical concerns. +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 Board, after which at least two weeks for comment is allowed, and then the nominee must be confirmed by two-thirds of the active Project Members. The Ombudsperson has no term limit but can resign at any time, or be removed by the same process as removing a Project Member. In the period between removal/resignation and new appointment, the Steering Comittee will temporarily take over the responsibilities of the Ombudsperson, should the need arise. -# Modifications to SEP 2 +# Future changes to the governance (Revision of SEP-2) Due to the fundamental nature of this SEP, it would be inappropriate for the Steering Committee alone to have authority to approve modifications to it. Therefore, if this document is to be modified in any way, then those modifications shall be put to a vote of the Project Members. From d8664af35bcff152106d1718ff6e318cb7084734 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 12:02:37 +0000 Subject: [PATCH 17/47] Apply suggestions from code review Co-authored-by: Albert Y. Shih Co-authored-by: David Stansby --- SEP-0002-revised.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 3bb9889..c0cb356 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -1,6 +1,6 @@ # SEP-0002 - SunPy Organization Definition -# Abstract +## Abstract The SunPy project has changed significantly since the first version of SEP-0002 was written in 2014. This SEP details a new governance structure designed to enable the project to grow, while allowing for more input from the wider SunPy community. @@ -16,7 +16,7 @@ This includes but is not limited to the following tasks: # Governance Structure -The SunPy project's governance involves the following five components: +The SunPy Project's governance involves the following five components: * The Community * The Project Members @@ -69,15 +69,15 @@ This includes: * holding regular meetings with the developer community (at least monthly) * making regular reports to the board (at least quarterly) -* having ownership privileges to the SunPy GitHub organization +* 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.) +* 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. ### Composition -The steering committee is formed of three members of the SunPy community with equal status on the committee, they do not need to be project members. +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 Members. The members of the committee are elected into three roles to help with distributing the work load, these three roles are: * **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 board meetings. @@ -89,7 +89,7 @@ The steering committee is elected by the **project members**. ### 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 the whole SunPy community. +Where possible and appropriate, consensus should be reached between the members of the committee, and that consensus should reflect the consensus of the whole SunPy community. If consensus can not be reached between the committee members, decisions can be taken by a majority vote. ### Electing the Steering Committee @@ -139,7 +139,7 @@ Project Members may and should participate in formal votes on: * Removing Steering Committee members * Removing the Ombudsperson * Approving changes to this SEP via a vote (see below) -* Other matters for which the Steering Committee believes a vote is appropriate. +* Other matters where the Steering Committee or the Board believes a vote is appropriate. ### Membership @@ -174,7 +174,7 @@ The process for adding a new Project member is as follows: The steering committee, and the Ombudsperson check that the nomination is factually accurate and their record of contribution to the community adheres to the Code of Conduct. 1. The candidate is then put to the Project Members. The name and nomination statement of the candidate will be shared with the Project Members. -The candidate can become a Project member if five existing Project members approve the candidate and no Project Members call for an election within two weeks of the candidate being put to the Project Members. +The candidate can become a Project Member if, during the two weeks following the candidate being put to the Project Members, five existing Project members approve the candidate and no Project Members call for an election. 1. Project Members can call for an election either by informing the Steering Committee or the Ombudsperson. If a vote is called for then the candidate will be come a Project Member with a simple majority of all votes cast in the election. An election needs to be announced to the Project Members one week before the voting opens and voting will be open for two weeks. @@ -193,9 +193,9 @@ Active Project Members who have not made any significant contributions for two y The Steering Committee can change a Project Member's status to emeritus. Emeritus Project Members will continue to be listed on the website. Emeritus Project Members are not able to participate in votes. -An emeritus member may request to be marked as active at any time if they feel they are making contributions. +An emeritus member may declare themselves to be active again at any time if they feel they are making contributions. -## Removing Project Members +### Removing Project Members In exceptional circumstances, it may be necessary to remove someone from the Project Members against their will. A vote of the Project membership must be held to remove a Project Member. From 42804aeee5079dc100693f2a176096094758f60a Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 12:03:01 +0000 Subject: [PATCH 18/47] Update SEP-0002-revised.md Co-authored-by: Albert Y. Shih --- SEP-0002-revised.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index c0cb356..3ff09c3 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -51,7 +51,7 @@ A board member may be removed by a two-thirds majority vote of the board or Proj * **Meetings**: The board shall meet with the Steering Committee at least 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. +Notice of meetings shall provide the information necessary to participate in the meeting. The purpose of the meeting needs not be specified. Minutes for the meetings shall be recorded and made public as much as is appropriate. From 7f79539c85b7279fb49cfb210ead1a643282f789 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 12:10:33 +0000 Subject: [PATCH 19/47] Update SEP-0002-revised.md --- SEP-0002-revised.md | 1 - 1 file changed, 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 3ff09c3..9e40612 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -52,7 +52,6 @@ A board member may be removed by a two-thirds majority vote of the board or Proj * **Meetings**: The board shall meet with the Steering Committee at least 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 provide the information necessary to participate in the meeting. -The purpose of the meeting needs not be specified. Minutes for the meetings shall be recorded and made public as much as is appropriate. The board shall organize itself as it sees fit. From 6149c9c5a5a9aabd8b746e4337d774494ae9c03e Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 12:16:07 +0000 Subject: [PATCH 20/47] Abstract no more --- SEP-0002-revised.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 9e40612..5ac8237 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -1,10 +1,13 @@ # SEP-0002 - SunPy Organization Definition -## Abstract -The SunPy project has changed significantly since the first version of SEP-0002 was written in 2014. -This SEP details a new governance structure designed to enable the project to grow, while allowing for more input from the wider SunPy community. +# Rationale + +This SEP describes the second major iteration of the governance for the SunPy Project. +The objectives of the rewrite were to adapt the governance for the changes the project has seen since the first iteration of this document was written in 2014. +This rewrite aims to detail a governance structure, which strives to be lightweight, while being designed to enable the project to grow, and facilitating more input from the wider SunPy community. + +# The SunPy Project -## Detailed Description The primary 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 includes but is not limited to the following tasks: From 3552683dafaed63b7ae72c80b86af3f78c8dcaaf Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 12:27:36 +0000 Subject: [PATCH 21/47] Captialise things properly --- SEP-0002-revised.md | 84 ++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 5ac8237..4c7f9ff 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -28,49 +28,49 @@ The SunPy Project's governance involves the following five components: * 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. +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 Members. -Whenever possible, decisions shall be approved by consensus, considering input from the entire community, rather than taken unilaterily by Project Members or the Steering Committee. +Whenever possible, decisions shall be approved by consensus, considering input from the entire community, rather than taken unilaterally by Project Members or the Steering Committee. ## Advisory Board -The primary functions of the advisory board are: +The primary functions of the Advisory Board are: -* to advise the steering committee on management of the project, +* to advise the Steering Committee on management of the project, * aid in finding funding for the project to ensure the core aims of the project can be met, * nominate a Ombudsperson, * ensure that the governance of the project is running as intended. -The board is self-electing, with members appointed by a vote of the existing board. +The Advisory Board is self-electing, with members appointed by a vote of the existing Advisory Board. -* **Membership**: The board shall consist of at least 3 members and no more than 5 members. -The board selects how many members are needed. +* **Membership**: The Advisory Board shall consist of at least 3 members and no more than 5 members. +The Advisory Board selects how many members are needed. All members shall serve a maximum of a two-year term, however a term may be extended until a successor has been appointed. A member may be re-appointed at the end of their term. Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. -The board may fill vacancies or may appoint new members to fill a previously unfilled board position, subject to the maximum number of members. -The board should work to ensure that the composition of the board represents a diverse cross-section of the scientific community with an interest in SunPy. +The Advisory Board may fill vacancies or may appoint new members to fill a previously unfilled Advisory Board position, subject to the maximum number of 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 such as gender. -A board member may be removed by a two-thirds majority vote of the board or Project Members. +A Advisory Board member may be removed by a two-thirds majority vote of the Advisory Board or Project Members. -* **Meetings**: The board shall meet with the Steering Committee at least every quarter at times and places fixed by the board. -Board meetings shall provide at least one week (7 days) notice. +* **Meetings**: The Advisory Board shall meet with the Steering Committee at least every quarter at times and places fixed by the Advisory Board. +Advisory Board meetings shall provide at least one week (7 days) notice. 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 board shall organize itself as it sees fit. +The Advisory Board shall organize itself as it sees fit. -* **Advise and Consent**: The Steering committee shall present the state of the project and future plans at meetings of the board on a yearly basis. -The advisory board shall advise and consent on those plans. +* **Advise and Consent**: 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. -* **Forcing a Project Vote**: In the unlikely event that the board does not agree with a decision made by the Steering Committee, it can force Project Members to consent to the decision through a majority vote. +* **Forcing a Project Vote**: In the unlikely event that the Advisory Board does not agree with a decision made by the Steering Committee, it can force Project Members to consent to the decision through a majority vote. ## 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 board. +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 developer community (at least monthly) -* making regular reports to the board (at least quarterly) +* 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) @@ -79,33 +79,33 @@ This includes: ### 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 Members. +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 Members. The members of the committee are elected into three roles to help with distributing the work load, these three roles are: -* **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 board meetings. +* **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 deputy lead developer** in the absence of the lead developer, the deputy shall perform all the duties of the lead developer. -* **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 board on financial matters. +* **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 members**. +The Steering Committee is elected by the **Project Members**. ### Decision Making -The steering committee should strive to make decisions by consensus. +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 SunPy 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: +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 members and the candidate with the most votes shall be elected to the position. +* Election: All candidates that have written statement will be put to a vote of the Project Members and the candidate with the most votes shall be elected to the position. In the event that more than one position has to be filled simultaneously each position shall be filled as if it were an independent election. ### Term -Each position on the steering committee has a term of three years, from the date of the announcement of the election results. +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. @@ -114,21 +114,21 @@ The term length of the elected candidates may be decided between themselves, in ### Removing Steering Committee Members -In exceptional circumstances, the project members may remove one or more sitting steering committee members via a single vote. +In exceptional circumstances, the Project Members may remove one or more sitting Steering Committee members via a single vote. -Such a vote is triggered when a project member calls for one publicly on an appropriate Project-wide communication channel, and two other active project members second the proposal. +Such a vote is triggered when a Project Member calls for one publicly on an appropriate Project-wide communication channel, and two other active Project Members second the proposal. -For Steering Committee Member(s) to be removed, two-thirds of the active Project Members (where the count includes the member being voted on if they are a project member) must vote in support of the removal. +For Steering Committee Member(s) to be removed, two-thirds of the active Project Members (where the count includes the member being voted on if they are a Project Member) must vote in support of the removal. To avoid repeated removal votes, any individual Project Member who has called for, or seconded such a vote, may not call for or second a vote to remove any Steering Committee member for one year from the original motion. ## The Project Members -The project members are trusted community members with a proven track record of constructive contribution to the goals of the project. -Collectively, the project members make decisions about the direction of the project and have authority over the project, which is delegated to the Steering Committee. +The Project Members are trusted community members with a proven track record of constructive contribution to the goals of the project. +Collectively, the Project Members 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 Members act as role models for the Community and are custodians of the SunPy Project. -The Project Members elect a Steering committee to lead the SunPy Project. +The Project Members elect a Steering Committee to lead the SunPy Project. ### Responsibilities and Rights @@ -141,7 +141,7 @@ Project Members may and should participate in formal votes on: * Removing Steering Committee members * Removing the Ombudsperson * Approving changes to this SEP via a vote (see below) -* Other matters where the Steering Committee or the Board believes a vote is appropriate. +* Other matters where the Steering Committee or the Advisory Board believes a vote is appropriate. ### Membership @@ -163,7 +163,7 @@ They should consider the above responsiblities and actively agree to taking them * 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/project/#community-roles. -* Is a currently serving board member. +* Is a currently serving Advisory Board member. ### Adding New Project Members @@ -172,8 +172,8 @@ Self-nominations are encouraged. The process for adding a new Project member 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 membership. -The steering committee, and the Ombudsperson check that the nomination is factually accurate and their record of contribution to the community adheres to the Code of Conduct. +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 Membership. +The Steering Committee, and the Ombudsperson check that the nomination is factually accurate and their record of contribution to the community adheres to the Code of Conduct. 1. The candidate is then put to the Project Members. The name and nomination statement of the candidate will be shared with the Project Members. The candidate can become a Project Member if, during the two weeks following the candidate being put to the Project Members, five existing Project members approve the candidate and no Project Members call for an election. @@ -200,7 +200,7 @@ An emeritus member may declare themselves to be active again at any time if they ### Removing Project Members In exceptional circumstances, it may be necessary to remove someone from the Project Members against their will. -A vote of the Project membership must be held to remove a Project Member. +A vote of the Project Members must be held to remove a Project Member. Such a vote is triggered by a motion (sent to the Steering Committee and the Ombudsperson) made by an active Project Member, which must be seconded by an additional Project Member. The vote must conclude no more than three months after the motion is seconded. Removal requires approval by two-thirds of all active Project Members at the time the motion is made. @@ -209,12 +209,12 @@ Removal under this provision will be reflected by updating the list of Project M 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 Member for violations of the Code of Conduct. -In this case, the Steering Committee, Ombudsperson and Board will work together to make this decision. +In this case, the Steering Committee, Ombudsperson and Advisory Board will work together to make this decision. # Ombudsperson 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 Board, after which at least two weeks for comment is allowed, and then the nominee must be confirmed by two-thirds of the active Project Members. +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 active Project Members. The Ombudsperson has no term limit but can resign at any time, or be removed by the same process as removing a Project Member. In the period between removal/resignation and new appointment, the Steering Comittee will temporarily take over the responsibilities of the Ombudsperson, should the need arise. @@ -237,8 +237,8 @@ This change to SEP 2 will be implemented in the following stages: 1. The list of initial Project Members will be drawn up and added to the SunPy website. 2. A communication channel private to the Project Members will be created where discussions and announcements of votes can take place. -3. A Ombudsperson will be nominated by The Board and confirmed by the initial group of project members. -4. Nomination of new Project Members will be solicited and confirmed by the initial project members. +3. A Ombudsperson will be nominated by the Advisory Board and confirmed by the initial group of Project Members. +4. Nomination of new Project Members will be solicited and confirmed by the initial Project Members. 5. The process for electing the initial Steering Committee will be followed as laid out above. # Attribution From fb9650612c5e16b29f14cf0dc5ae7b673f6039f2 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 13:55:25 +0000 Subject: [PATCH 22/47] More comments --- SEP-0002-revised.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 4c7f9ff..58e95f1 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -44,10 +44,9 @@ The Advisory Board is self-electing, with members appointed by a vote of the exi * **Membership**: The Advisory Board shall consist of at least 3 members and no more than 5 members. The Advisory Board selects how many members are needed. -All members shall serve a maximum of a two-year term, however a term may be extended until a successor has been appointed. -A member may be re-appointed at the end of their term. +All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. -The Advisory Board may fill vacancies or may appoint new members to fill a previously unfilled Advisory Board position, subject to the maximum number of members. +The Advisory Board may appoint members to its number up to the maximum number of 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 such as gender. A Advisory Board member may be removed by a two-thirds majority vote of the Advisory Board or Project Members. @@ -152,6 +151,7 @@ Project Members of the SunPy Project must demonstrate all of the following: * Significant 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 Membership acknowledges sustained and valuable efforts that align well with the philosophy and the goals of the SunPy Project. @@ -159,7 +159,7 @@ Project Membership acknowledges sustained and valuable efforts that align well w To be able to elect new Project Members an initial set of Project Members are needed. People meeting the following criteria will be invited to form the initial group of Project Members. -They should consider the above responsiblities and actively agree to taking them on if they choose to accept the invitation. +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/project/#community-roles. From e4fc151f7712c567db605af168747e406563a64d Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 14:26:19 +0000 Subject: [PATCH 23/47] Make the pesky linter happy --- SEP-0002-revised.md | 52 +++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 58e95f1..03b1636 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -1,12 +1,12 @@ # SEP-0002 - SunPy Organization Definition -# Rationale +## Rationale This SEP describes the second major iteration of the governance for the SunPy Project. The objectives of the rewrite were to adapt the governance for the changes the project has seen since the first iteration of this document was written in 2014. This rewrite aims to detail a governance structure, which strives to be lightweight, while being designed to enable the project to grow, and facilitating more input from the wider SunPy community. -# The SunPy Project +## The SunPy Project The primary 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 includes but is not limited to the following tasks: @@ -17,7 +17,7 @@ This includes but is not limited to the following tasks: * promoting SunPy to the community * managing SunPy assets, i.e. GitHub organization, domain name etc. -# Governance Structure +## Governance Structure The SunPy Project's governance involves the following five components: @@ -32,7 +32,8 @@ 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 Members. Whenever possible, decisions shall be approved by consensus, considering input from the entire community, rather than taken unilaterally by Project Members or the Steering Committee. -## Advisory Board +### Advisory Board + The primary functions of the Advisory Board are: * to advise the Steering Committee on management of the project, @@ -63,7 +64,8 @@ The Advisory Board shall advise and consent on those plans. * **Forcing a Project Vote**: In the unlikely event that the Advisory Board does not agree with a decision made by the Steering Committee, it can force Project Members to consent to the decision through a majority vote. -## The Steering Committee +### 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: @@ -76,7 +78,7 @@ This includes: * delegating responsibility and authority to other community roles * planning and managing finances and financial processes of the project. -### Composition +#### 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 Members. The members of the committee are elected into three roles to help with distributing the work load, these three roles are: @@ -87,13 +89,13 @@ The members of the committee are elected into three roles to help with distribut The Steering Committee is elected by the **Project Members**. -### Decision Making +#### 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 SunPy community. If consensus can not be reached between the committee members, decisions can be taken by a majority vote. -### Electing the Steering Committee +#### Electing the Steering Committee An election to fill a vacant role on the Steering Committee will occur in two stages: @@ -102,7 +104,7 @@ Candidates who have accepted their nomination (self nominations are allowed) sho * Election: All candidates that have written statement will be put to a vote of the Project Members and the candidate with the most votes shall be elected to the position. In the event that more than one position has to be filled simultaneously each position shall be filled as if it were an independent election. -### Term +#### Term Each position on the Steering Committee has a term of three years, from the date of the announcement of the election results. @@ -111,7 +113,7 @@ If there is a vacancy part way through a term, then a by-election will be held w 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 Members +#### Removing Steering Committee Members In exceptional circumstances, the Project Members may remove one or more sitting Steering Committee members via a single vote. @@ -121,7 +123,7 @@ For Steering Committee Member(s) to be removed, two-thirds of the active Project To avoid repeated removal votes, any individual Project Member who has called for, or seconded such a vote, may not call for or second a vote to remove any Steering Committee member for one year from the original motion. -## The Project Members +### The Project Members The Project Members are trusted community members with a proven track record of constructive contribution to the goals of the project. Collectively, the Project Members make decisions about the direction of the project and have authority over the project, which is delegated to the Steering Committee. @@ -129,7 +131,7 @@ Collectively, the Project Members make decisions about the direction of the proj It is expected that Project Members act as role models for the Community and are custodians of the SunPy Project. The Project Members elect a Steering Committee to lead the SunPy Project. -### Responsibilities and Rights +#### Responsibilities and Rights Project Members may and should participate in formal votes on: @@ -142,7 +144,7 @@ Project Members may and should participate in formal votes on: * 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 +#### Membership Project Members of the SunPy Project must demonstrate all of the following: @@ -155,17 +157,17 @@ Project Members of the SunPy Project must demonstrate all of the following: Project Membership acknowledges sustained and valuable efforts that align well with the philosophy and the goals of the SunPy Project. -### Initial Membership +#### Initial Membership To be able to elect new Project Members an initial set of Project Members are needed. People meeting the following criteria will be invited to form the initial group of Project Members. 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/project/#community-roles. +* Currently holds a role listed under the community roles section of the website: . * Is a currently serving Advisory Board member. -### Adding New Project Members +#### Adding New Project Members Anyone is eligible to be nominated to be a Project member, as long as they meet the criteria laid out in the Membership section above. Self-nominations are encouraged. @@ -187,7 +189,7 @@ A public list of Project Members will be kept on the SunPy website. Nominations, approvals and any elections of Project Members should take place before the initial election of the Steering Committee. -### Active and Emeritus Status +#### Active and Emeritus Status Project Members have no term limits. Project Members who are no longer actively contributing to the project should contact the Steering Committee to move themselves to emeritus status. @@ -197,7 +199,7 @@ Emeritus Project Members will continue to be listed on the website. Emeritus Project Members 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 Members +#### Removing Project Members In exceptional circumstances, it may be necessary to remove someone from the Project Members against their will. A vote of the Project Members must be held to remove a Project Member. @@ -211,27 +213,27 @@ 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 Member for violations of the Code of Conduct. In this case, the Steering Committee, Ombudsperson and Advisory Board will work together to make this decision. -# Ombudsperson +## Ombudsperson 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 active Project Members. The Ombudsperson has no term limit but can resign at any time, or be removed by the same process as removing a Project Member. -In the period between removal/resignation and new appointment, the Steering Comittee will temporarily take over the responsibilities of the Ombudsperson, should the need arise. +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) +## Future changes to the governance (Revision of SEP-2) Due to the fundamental nature of this SEP, it would be inappropriate for the Steering Committee alone to have authority to approve modifications to it. Therefore, if this document is to be modified in any way, then those modifications shall be put to a vote of the Project Members. This vote shall require a 2/3s majority of those voting to approve the changes. -# Code of Conduct +## 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 +## Implementation of this Revision of SEP 2 This change to SEP 2 will be implemented in the following stages: @@ -241,9 +243,9 @@ This change to SEP 2 will be implemented in the following stages: 4. Nomination of new Project Members will be solicited and confirmed by the initial Project Members. 5. The process for electing the initial Steering Committee will be followed as laid out above. -# Attribution +## Attribution This document builds on the original version of SEP 2. The Project Members 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 +## Decision Rationale From f1fb236e3fa695e5e5fccdf5ff36c57ad517dc5a Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 14:39:17 +0000 Subject: [PATCH 24/47] clarify the process for all votes --- SEP-0002-revised.md | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 03b1636..0b4f8a2 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -4,11 +4,11 @@ This SEP describes the second major iteration of the governance for the SunPy Project. The objectives of the rewrite were to adapt the governance for the changes the project has seen since the first iteration of this document was written in 2014. -This rewrite aims to detail a governance structure, which strives to be lightweight, while being designed to enable the project to grow, and facilitating more input from the wider SunPy community. +The rewrite aimed to detail a governance structure, which strives to be lightweight, while being designed to enable the project to grow, and facilitating more input from the wider SunPy community. ## The SunPy Project -The primary 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*. +The primary 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 includes but is not limited to the following tasks: * developing the sunpy core library and other affiliated packages @@ -43,26 +43,30 @@ The primary functions of the Advisory Board are: The Advisory Board is self-electing, with members appointed by a vote of the existing Advisory Board. -* **Membership**: The Advisory Board shall consist of at least 3 members and no more than 5 members. +#### Membership +The Advisory Board shall consist of at least 3 members and no more than 5 members. The Advisory Board selects how many members are needed. All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. The Advisory Board may appoint members to its number up to the maximum number of 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 such as gender. -A Advisory Board member may be removed by a two-thirds majority vote of the Advisory Board or Project Members. +A Advisory Board member may be removed by a two-thirds majority vote of the Advisory Board or by Project Members following the same procedure as for the removal of a member of the Steering Committee. -* **Meetings**: The Advisory Board shall meet with the Steering Committee at least every quarter at times and places fixed by the Advisory Board. +#### Meetings +The Advisory Board shall meet with the Steering Committee at least every quarter at times and places fixed by the Advisory Board. Advisory Board meetings shall provide at least one week (7 days) notice. 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. -* **Advise and Consent**: The Steering Committee shall present the state of the project and future plans at meetings of the Advisory Board on a yearly basis. +#### Advise and Consent +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. -* **Forcing a Project Vote**: In the unlikely event that the Advisory Board does not agree with a decision made by the Steering Committee, it can force Project Members to consent to the decision through a majority vote. +#### 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 Members to consent to the decision through a vote (see below for process). ### The Steering Committee @@ -113,15 +117,15 @@ If there is a vacancy part way through a term, then a by-election will be held w 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 Members +#### Removing Steering Committee or Advisory Board Members -In exceptional circumstances, the Project Members may remove one or more sitting Steering Committee members via a single vote. +In exceptional circumstances, the Project Members may remove one or more sitting Steering Committee or Advisory Board members via a single vote. Such a vote is triggered when a Project Member calls for one publicly on an appropriate Project-wide communication channel, and two other active Project Members second the proposal. -For Steering Committee Member(s) to be removed, two-thirds of the active Project Members (where the count includes the member being voted on if they are a Project Member) must vote in support of the removal. +For the member(s) to be removed, two-thirds of the active Project Members (where the count includes the member being voted on if they are a Project Member) must vote in support of the removal. -To avoid repeated removal votes, any individual Project Member who has called for, or seconded such a vote, may not call for or second a vote to remove any Steering Committee member for one year from the original motion. +To avoid repeated removal votes, any individual Project Member who has called for, or seconded such a vote, may not call for or second a vote to remove any member for one year from the original motion. ### The Project Members @@ -213,6 +217,12 @@ 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 Member 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 Members for a vote. +For these votes, the motion will carry by a simple majority of those Project Members who cast a ballot. + ## Ombudsperson 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. From c5533c50193ce3a0c20832035741c4ce64dd0772 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 15:11:33 +0000 Subject: [PATCH 25/47] more cleanup --- SEP-0002-revised.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 0b4f8a2..c5503f2 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -44,28 +44,30 @@ The primary functions of the Advisory Board are: The Advisory Board is self-electing, with members appointed by a vote of the existing Advisory Board. #### Membership -The Advisory Board shall consist of at least 3 members and no more than 5 members. -The Advisory Board selects how many members are needed. -All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. -Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. -The Advisory Board may appoint members to its number up to the maximum number of 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 such as gender. -A Advisory Board member may be removed by a two-thirds majority vote of the Advisory Board or by Project Members following the same procedure as for the removal of a member of the Steering Committee. + +* 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. +* All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. +* Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. +* The Advisory Board may appoint members to its number up to the maximum number of 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 such as gender. +* An Advisory Board member may be removed by a two-thirds majority vote of the Advisory Board or by Project Members following the same procedure as for the removal of a member of the Steering Committee. #### Meetings -The Advisory Board shall meet with the Steering Committee at least every quarter at times and places fixed by the Advisory Board. -Advisory Board meetings shall provide at least one week (7 days) notice. -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 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. #### Advise and Consent + 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 Members to consent to the decision through a vote (see below for process). ### The Steering Committee @@ -91,7 +93,7 @@ The members of the committee are elected into three roles to help with distribut * **The deputy lead developer** in the absence of the lead developer, the deputy shall perform all the duties of the lead developer. * **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 Members**. +The Steering Committee is elected by the Project Members. #### Decision Making From c06d8143581d0578c3557f4b2907e748d17182c0 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 15:15:34 +0000 Subject: [PATCH 26/47] shut up markdownlint --- .markdownlint.yaml | 3 +++ 1 file changed, 3 insertions(+) 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 From d9c77873cf18e963be4cec338df0e2ab898ba1f0 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 22 Mar 2023 15:17:45 +0000 Subject: [PATCH 27/47] linting is stupid --- SEP-0002-revised.md | 1 - 1 file changed, 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index c5503f2..36e4bf3 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -219,7 +219,6 @@ 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 Member 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 Members for a vote. From c0d3520d956737716e0a3934436febf6114b9032 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 14 Jun 2023 16:11:43 +0100 Subject: [PATCH 28/47] Apply suggestions from code review Co-authored-by: Steven Christe --- SEP-0002-revised.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 36e4bf3..f22d4e6 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -30,16 +30,16 @@ The SunPy Project's governance involves the following five components: 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 Members. -Whenever possible, decisions shall be approved by consensus, considering input from the entire community, rather than taken unilaterally by Project Members or the Steering Committee. +Whenever possible, decisions shall be approved by consensus, considering input from the Community, rather than taken unilaterally by Project Members or the Steering Committee. ### Advisory Board The primary functions of the Advisory Board are: -* to advise the Steering Committee on management of the project, +* to advise the Steering Committee, * aid in finding funding for the project to ensure the core aims of the project can be met, * nominate a Ombudsperson, -* ensure that the governance of the project is running as intended. +* 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. @@ -49,7 +49,7 @@ The Advisory Board is self-electing, with members appointed by a vote of the exi * All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. * Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. * The Advisory Board may appoint members to its number up to the maximum number of 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 such as gender. +* 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 Members following the same procedure as for the removal of a member of the Steering Committee. #### Meetings @@ -76,13 +76,14 @@ The role of the Steering Committee, which is chaired by the Lead Developer, is t 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 developer community (at least monthly) +* holding regular meetings with the community (at least monthly) * 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 @@ -98,7 +99,7 @@ The Steering Committee is elected by the Project Members. #### 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 SunPy community. +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 @@ -127,7 +128,7 @@ Such a vote is triggered when a Project Member calls for one publicly on an appr For the member(s) to be removed, two-thirds of the active Project Members (where the count includes the member being voted on if they are a Project Member) must vote in support of the removal. -To avoid repeated removal votes, any individual Project Member who has called for, or seconded such a vote, may not call for or second a vote to remove any member for one year from the original motion. +To avoid repeated removal votes, any individual Project Member 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 Project Members @@ -234,9 +235,8 @@ In the period between removal/resignation and new appointment, the Steering Comm ## Future changes to the governance (Revision of SEP-2) -Due to the fundamental nature of this SEP, it would be inappropriate for the Steering Committee alone to have authority to approve modifications to it. -Therefore, if this document is to be modified in any way, then those modifications shall be put to a vote of the Project Members. -This vote shall require a 2/3s majority of those voting to approve the changes. +Any changes to the governance structure of the SunPy Project (e.g. this SEP) requires a 2/3 majority vote of the Project Members. +. ## Code of Conduct From d6b88cb6f692e1d558830c80d2b7cf675b7be207 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 9 Apr 2024 14:15:31 +0100 Subject: [PATCH 29/47] s/project member/project custodian/ --- SEP-0002-revised.md | 118 ++++++++++++++++++++++---------------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index f22d4e6..3adcef0 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -22,15 +22,15 @@ This includes but is not limited to the following tasks: The SunPy Project's governance involves the following five components: * The Community -* The Project Members +* 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 Members. -Whenever possible, decisions shall be approved by consensus, considering input from the Community, rather than taken unilaterally by Project Members or the Steering Committee. +This authority is exercised through the processes outlined in this document, primarily through the Steering Committee and the Project Custodians. +Whenever possible, decisions shall be approved by consensus, considering input from the Community, rather than taken unilaterally by Project Custodians or the Steering Committee. ### Advisory Board @@ -50,7 +50,7 @@ The Advisory Board is self-electing, with members appointed by a vote of the exi * Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. * The Advisory Board may appoint members to its number up to the maximum number of 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 Members following the same procedure as for the removal of a member of the Steering Committee. +* 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. #### Meetings @@ -68,7 +68,7 @@ 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 Members to consent to the decision through a vote (see below for process). +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 Steering Committee @@ -87,14 +87,14 @@ This includes: #### 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 Members. +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 members of the committee are elected into three roles to help with distributing the work load, these three roles are: * **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 deputy lead developer** in the absence of the lead developer, the deputy shall perform all the duties of the lead developer. * **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 Members. +The Steering Committee is elected by the Project Custodians. #### Decision Making @@ -108,7 +108,7 @@ An election to fill a vacant role on the Steering Committee will occur in two st * 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 Members and the candidate with the most votes shall be elected to the position. +* Election: All candidates that have written statement will be put to a vote of the Project Custodians and the candidate with the most votes shall be elected to the position. In the event that more than one position has to be filled simultaneously each position shall be filled as if it were an independent election. #### Term @@ -122,30 +122,30 @@ The term length of the elected candidates may be decided between themselves, in #### Removing Steering Committee or Advisory Board Members -In exceptional circumstances, the Project Members may remove one or more sitting Steering Committee or Advisory Board members via a single vote. +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 Member calls for one publicly on an appropriate Project-wide communication channel, and two other active Project Members second the proposal. +Such a vote is triggered when a Project Custodian calls for one publicly on an appropriate Project-wide communication channel, and two other active Project Custodians second the proposal. -For the member(s) to be removed, two-thirds of the active Project Members (where the count includes the member being voted on if they are a Project Member) must vote in support of the removal. +For the member(s) to be removed, two-thirds of the active 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 Member 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. +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 Project Members +### The Project Custodians -The Project Members are trusted community members with a proven track record of constructive contribution to the goals of the project. -Collectively, the Project Members make decisions about the direction of the project and have authority over the project, which is delegated to 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 Members act as role models for the Community and are custodians of the SunPy Project. -The Project Members elect a Steering Committee to lead the SunPy Project. +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 Members may and should participate in formal votes on: +Project Custodians may and should participate in formal votes on: -* Adding new Project Members +* Adding new Project Custodians * Electing Steering Committee members * Appointing the Ombudsperson -* Removing Project Members +* Removing Project Custodians * Removing Steering Committee members * Removing the Ombudsperson * Approving changes to this SEP via a vote (see below) @@ -153,7 +153,7 @@ Project Members may and should participate in formal votes on: #### Membership -Project Members of the SunPy Project must demonstrate all of the following: +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 @@ -162,80 +162,80 @@ Project Members of the SunPy Project must demonstrate all of the following: * A willingness to recruit, train, and nominate new team members * A track record of adhering to the project Code of Conduct. -Project Membership acknowledges sustained and valuable efforts that align well with the philosophy and the goals of the SunPy Project. +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 Members an initial set of Project Members are needed. -People meeting the following criteria will be invited to form the initial group of Project Members. +To be able to elect new Project Custodians an initial set of Project Custodians are 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. -#### Adding New Project Members +#### Adding New Project Custodians -Anyone is eligible to be nominated to be a Project member, as long as they meet the criteria laid out in the Membership section above. +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. Self-nominations are encouraged. The process for adding a new Project member 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 Membership. +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 and their record of contribution to the community adheres to the Code of Conduct. -1. The candidate is then put to the Project Members. -The name and nomination statement of the candidate will be shared with the Project Members. -The candidate can become a Project Member if, during the two weeks following the candidate being put to the Project Members, five existing Project members approve the candidate and no Project Members call for an election. -1. Project Members can call for an election either by informing the Steering Committee or the Ombudsperson. -If a vote is called for then the candidate will be come a Project Member with a simple majority of all votes cast in the election. -An election needs to be announced to the Project Members one week before the voting opens and voting will be open for two weeks. +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 be come 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 Members until they become a Project Member. -A public list of Project Members will be kept on the SunPy website. +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 Members should take place before the initial election of the Steering Committee. +Nominations, approvals and any elections of Project Custodians should take place before the initial election of the Steering Committee. #### Active and Emeritus Status -Project Members have no term limits. -Project Members who are no longer actively contributing to the project should contact the Steering Committee to move themselves to emeritus status. -Active Project Members who have not made any significant contributions 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 Member's status to emeritus. -Emeritus Project Members will continue to be listed on the website. -Emeritus Project Members are not able to participate in votes. +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. +Active Project Custodians who have not made any significant contributions 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 Members +#### Removing Project Custodians -In exceptional circumstances, it may be necessary to remove someone from the Project Members against their will. -A vote of the Project Members must be held to remove a Project Member. -Such a vote is triggered by a motion (sent to the Steering Committee and the Ombudsperson) made by an active Project Member, which must be seconded by an additional Project Member. +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 an active 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 active Project Members at the time the motion is made. +Removal requires approval by two-thirds of all active 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 Members. +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 Member for violations of the Code of Conduct. +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 Members for a vote. -For these votes, the motion will carry by a simple majority of those Project Members who cast a ballot. +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. ## Ombudsperson 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 active Project Members. +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 active Project Custodians. -The Ombudsperson has no term limit but can resign at any time, or be removed by the same process as removing a Project Member. +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 Members. +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 @@ -248,15 +248,15 @@ The code of conduct shall be accessible in such a manner as to welcome and incor This change to SEP 2 will be implemented in the following stages: -1. The list of initial Project Members will be drawn up and added to the SunPy website. -2. A communication channel private to the Project Members 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 Members. -4. Nomination of new Project Members will be solicited and confirmed by the initial Project Members. +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 Members 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. +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 From a1d595d5a2a4acc1f7f980c15a494e31652ae2d0 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 9 Apr 2024 15:25:30 +0100 Subject: [PATCH 30/47] Revise roles on committee --- SEP-0002-revised.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 3adcef0..63677a7 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -88,10 +88,9 @@ This includes: #### 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 members of the committee are elected into three roles to help with distributing the work load, these three roles are: +The Steering Committee can decide how to distrubute 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 deputy lead developer** in the absence of the lead developer, the deputy shall perform all the duties of the lead developer. * **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. From 7b837e802db7e34c2b6518c74de42152f834dec0 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 9 Apr 2024 15:25:48 +0100 Subject: [PATCH 31/47] Copy editing --- SEP-0002-revised.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 63677a7..a6a4a5e 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -184,9 +184,9 @@ The process for adding a new Project member is as follows: The Steering Committee, and the Ombudsperson check that the nomination is factually accurate and their record of contribution to the community adheres to the Code of Conduct. 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. +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 be come a Project Custodian with a simple majority of all votes cast in the election. +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. From 245bff7defff013abc44a3693f7ae5ab454307f9 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 9 Apr 2024 15:26:05 +0100 Subject: [PATCH 32/47] Add list of initial members --- SEP-0002-revised.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index a6a4a5e..7f5fe02 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -173,6 +173,26 @@ They should consider the above responsibilities and actively agree to taking the * 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. From 36d01104ae5f6d11da690f012c020eeb85b95f8c Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 9 Apr 2024 15:27:20 +0100 Subject: [PATCH 33/47] Obudsperson election tweak --- SEP-0002-revised.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 7f5fe02..1ab35a8 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -247,7 +247,7 @@ For these votes, the motion will carry by a simple majority of those Project Cus ## Ombudsperson 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 active Project Custodians. +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. From 2517e64b013da00a005a7e2ad158f8497eedd237 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 9 Apr 2024 15:33:56 +0100 Subject: [PATCH 34/47] Reorder document as suggested by @ehsteve --- SEP-0002-revised.md | 196 ++++++++++++++++++++++---------------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 1ab35a8..3f93d78 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -32,103 +32,6 @@ 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. Whenever possible, decisions shall be approved by consensus, considering input from the Community, rather than taken unilaterally by Project Custodians or the Steering Committee. -### Advisory Board - -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 a 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. - -#### Membership - -* 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. -* All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. -* Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. -* The Advisory Board may appoint members to its number up to the maximum number of 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. - -#### Meetings - -* 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. - -#### Advise and Consent - -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). - -### 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) -* 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 distrubute 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 and the candidate with the most votes shall be elected to the position. -In the event that more than one position has to be filled simultaneously each position shall be filled as if it were an independent election. - -#### 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 active Project Custodians second the proposal. - -For the member(s) to be removed, two-thirds of the active 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 Project Custodians The Project Custodians are trusted community members with a proven track record of constructive contribution to the goals of the project. @@ -219,7 +122,7 @@ Nominations, approvals and any elections of Project Custodians should take place 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. -Active Project Custodians who have not made any significant contributions for two years, will be contacted by the Steering Committee and be asked to move themselves to emeritus status. +Active 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. @@ -244,6 +147,103 @@ In this case, the Steering Committee, Ombudsperson and Advisory Board will work 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) +* 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 distrubute 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 and the candidate with the most votes shall be elected to the position. +In the event that more than one position has to be filled simultaneously each position shall be filled as if it were an independent election. + +#### 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 active Project Custodians second the proposal. + +For the member(s) to be removed, two-thirds of the active 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 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 a 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. + +#### Membership + +* 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. +* All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. +* Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. +* The Advisory Board may appoint members to its number up to the maximum number of 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. + +#### Meetings + +* 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. + +#### Advise and Consent + +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 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. From 048a1b47e0b11922325f69721dd5d105f478a5cb Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 9 Apr 2024 15:37:25 +0100 Subject: [PATCH 35/47] typo --- SEP-0002-revised.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md index 3f93d78..2b4f0c0 100644 --- a/SEP-0002-revised.md +++ b/SEP-0002-revised.md @@ -165,7 +165,7 @@ This includes: #### 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 distrubute the work load, however the Steering Committee should self-appoint the following roles after each election: +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. From ddcb3d2d6df751a84cb034f029b8aeb3e84fc3ec Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 9 Apr 2024 15:38:08 +0100 Subject: [PATCH 36/47] Modify exisiting SEP 2 --- SEP-0002-revised.md | 281 --------------------------- SEP-0002.md | 458 ++++++++++++++++++++++++++------------------ 2 files changed, 272 insertions(+), 467 deletions(-) delete mode 100644 SEP-0002-revised.md diff --git a/SEP-0002-revised.md b/SEP-0002-revised.md deleted file mode 100644 index 2b4f0c0..0000000 --- a/SEP-0002-revised.md +++ /dev/null @@ -1,281 +0,0 @@ -# SEP-0002 - SunPy Organization Definition - -## Rationale - -This SEP describes the second major iteration of the governance for the SunPy Project. -The objectives of the rewrite were to adapt the governance for the changes the project has seen since the first iteration of this document was written in 2014. -The rewrite aimed to detail a governance structure, which strives to be lightweight, while being designed to enable the project to grow, and facilitating more input from the wider SunPy community. - -## The SunPy Project - -The primary 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 includes but is not limited to the following tasks: - -* developing the sunpy core library and other affiliated packages -* supporting a community of affiliated packages -* managing and protect the SunPy brand and identity -* promoting SunPy to the community -* managing SunPy assets, i.e. 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 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. -Whenever possible, decisions shall be approved by consensus, considering input from the Community, 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 may and should participate in formal votes on: - -* Adding new Project Custodians -* Electing Steering Committee members -* Appointing the Ombudsperson -* Removing Project Custodians -* Removing Steering Committee members -* Removing the Ombudsperson -* 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 -* Significant 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 are 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. -Self-nominations are encouraged. - -The process for adding a new Project member 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 and their record of contribution to the community adheres to the Code of Conduct. -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. - -#### Active and 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. -Active 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 an active 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 active 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) -* 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 and the candidate with the most votes shall be elected to the position. -In the event that more than one position has to be filled simultaneously each position shall be filled as if it were an independent election. - -#### 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 active Project Custodians second the proposal. - -For the member(s) to be removed, two-thirds of the active 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 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 a 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. - -#### Membership - -* 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. -* All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. -* Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. -* The Advisory Board may appoint members to its number up to the maximum number of 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. - -#### Meetings - -* 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. - -#### Advise and Consent - -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 - -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 diff --git a/SEP-0002.md b/SEP-0002.md index 6165403..0d90316 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -3,203 +3,289 @@ | SEP | 2 | |---------------|---------------------------------------------------------| | title | SunPy Organization Definition | -| author(s) | [Steven Christe](https://orcid.org/0000-0001-6127-795X) | -| contact email | | -| date-creation | 2014-02-16 | +| 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 | 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. +| discussion | https://github.com/sunpy/sunpy-SEP/pull/62 | +| status | in review | + +## Rationale + +This SEP describes the second major iteration of the governance for the SunPy Project. +The objectives of the rewrite were to adapt the governance for the changes the project has seen since the first iteration of this document was written in 2014. +The rewrite aimed to detail a governance structure, which strives to be lightweight, while being designed to enable the project to grow, and facilitating more input from the wider SunPy community. + +## The SunPy Project + +The primary 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 includes but is not limited to the following tasks: + +* developing the sunpy core library and other affiliated packages +* supporting a community of affiliated packages +* managing and protect the SunPy brand and identity +* promoting SunPy to the community +* managing SunPy assets, i.e. 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 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. +Whenever possible, decisions shall be approved by consensus, considering input from the Community, 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 may and should participate in formal votes on: + +* Adding new Project Custodians +* Electing Steering Committee members +* Appointing the Ombudsperson +* Removing Project Custodians +* Removing Steering Committee members +* Removing the Ombudsperson +* 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 +* Significant 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 are 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. +Self-nominations are encouraged. + +The process for adding a new Project member 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 and their record of contribution to the community adheres to the Code of Conduct. +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. + +#### Active and 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. +Active 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 an active 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 active 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) +* 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 and the candidate with the most votes shall be elected to the position. +In the event that more than one position has to be filled simultaneously each position shall be filled as if it were an independent election. + +#### 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 active Project Custodians second the proposal. + +For the member(s) to be removed, two-thirds of the active 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 a 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. +* All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. +* Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. +* The Advisory Board may appoint members to its number up to the maximum number of 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 + +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. +. -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). +## 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 From 25028c356470a79f0d77c43da20ca32e2ed335a3 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 9 Apr 2024 16:00:34 +0100 Subject: [PATCH 37/47] Some tweaks during timeline --- SEP-0002.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/SEP-0002.md b/SEP-0002.md index 0d90316..a492b6c 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -7,7 +7,7 @@ | contact email | | | date-creation | 2024-04-09 (Original version: 2014-02-16) | | type | process | -| discussion | https://github.com/sunpy/sunpy-SEP/pull/62 | +| discussion | | | status | in review | ## Rationale @@ -114,7 +114,7 @@ Self-nominations are encouraged. The process for adding a new Project member 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 and their record of contribution to the community adheres to the Code of Conduct. +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. @@ -194,8 +194,7 @@ An election to fill a vacant role on the Steering Committee will occur in two st * 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 and the candidate with the most votes shall be elected to the position. -In the event that more than one position has to be filled simultaneously each position shall be filled as if it were an independent election. +* 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 From 396772509f2b3f6a36186785c2f1b8affb1dcc77 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Wed, 10 Apr 2024 11:30:58 +0100 Subject: [PATCH 38/47] Address feedback, remove "active Project Custodian" --- SEP-0002.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/SEP-0002.md b/SEP-0002.md index a492b6c..94ed887 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -23,9 +23,9 @@ This includes but is not limited to the following tasks: * developing the sunpy core library and other affiliated packages * supporting a community of affiliated packages -* managing and protect the SunPy brand and identity +* managing and protecting the SunPy brand and identity * promoting SunPy to the community -* managing SunPy assets, i.e. GitHub organization, domain name etc. +* managing SunPy assets, e.g. GitHub organization, domain name etc. ## Governance Structure @@ -78,7 +78,7 @@ Project Custodianship acknowledges sustained and valuable efforts that align wel #### Initial Membership -To be able to elect new Project Custodians an initial set of Project Custodians are needed. +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. @@ -111,7 +111,7 @@ Applying this set of criteria on 2024/04/09 resulted in the following people bei 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. Self-nominations are encouraged. -The process for adding a new Project member is as follows: +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). @@ -128,11 +128,11 @@ 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. -#### Active and Emeritus Status +#### 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. -Active 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. +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. @@ -142,9 +142,9 @@ An emeritus member may declare themselves to be active again at any time if they 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 an active Project Custodian, which must be seconded by an additional 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 active Project Custodians at the time the motion is made. +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. @@ -209,9 +209,9 @@ The term length of the elected candidates may be decided between themselves, in 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 active Project Custodians second the proposal. +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 active Project Custodians (where the count includes the member being voted on if they are a Project Custodian) must vote in support of the removal. +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. From a66e17166a55c17863d73813a6636a006e8bd52f Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Thu, 11 Apr 2024 07:14:39 +0100 Subject: [PATCH 39/47] Update SEP-0002.md Co-authored-by: Albert Y. Shih --- SEP-0002.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SEP-0002.md b/SEP-0002.md index 94ed887..eaac94f 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -83,7 +83,7 @@ People meeting the following criteria will be invited to form the initial group 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: . +* 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: From 5f147c45f8ad534802084ce8396b854e3296d207 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Tue, 7 May 2024 12:42:33 +0100 Subject: [PATCH 40/47] Apply suggestions from code review Co-authored-by: Steven Christe --- SEP-0002.md | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/SEP-0002.md b/SEP-0002.md index eaac94f..b847e6d 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -19,7 +19,7 @@ The rewrite aimed to detail a governance structure, which strives to be lightwei ## The SunPy Project The primary 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 includes but is not limited to the following tasks: +This mission is supported by the following actions: * developing the sunpy core library and other affiliated packages * supporting a community of affiliated packages @@ -52,7 +52,7 @@ The Project Custodians elect a Steering Committee to lead the SunPy Project. #### Responsibilities and Rights -Project Custodians may and should participate in formal votes on: +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 @@ -221,7 +221,7 @@ 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 a Ombudsperson, +* 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. @@ -229,9 +229,8 @@ The Advisory Board is self-electing, with members appointed by a vote of the exi #### Membership * 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. -* All members shall serve a maximum of a two-year term, and may be re-appointed at the end of their term. -* Membership terms should be staggered so that approximately half the number of members will end their terms in any given year. -* The Advisory Board may appoint members to its number up to the maximum number of members. +* 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. From 0a9f0c5395fb699c1000835a63f9fca3476a5471 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Thu, 16 May 2024 16:10:13 +0100 Subject: [PATCH 41/47] Suggestions and edits from the board Co-authored-by: Steven Christe --- SEP-0002.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/SEP-0002.md b/SEP-0002.md index b847e6d..13c6557 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -13,12 +13,12 @@ ## Rationale This SEP describes the second major iteration of the governance for the SunPy Project. -The objectives of the rewrite were to adapt the governance for the changes the project has seen since the first iteration of this document was written in 2014. -The rewrite aimed to detail a governance structure, which strives to be lightweight, while being designed to enable the project to grow, and facilitating more input from the wider SunPy community. +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 primary 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**. +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 @@ -40,7 +40,8 @@ The SunPy Project's governance involves the following five components: 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. -Whenever possible, decisions shall be approved by consensus, considering input from the Community, rather than taken unilaterally by Project Custodians or the Steering Committee. +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 @@ -60,6 +61,7 @@ Project Custodians are granted voting rights on matters related to how the proje * 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. @@ -69,7 +71,7 @@ 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 -* Significant contributions to the Project's goals, in any form +* 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. @@ -109,6 +111,7 @@ Applying this set of criteria on 2024/04/09 resulted in the following people bei #### 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 descisions 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: @@ -252,7 +255,7 @@ 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). -## Ombudsperson +### Ombudsperson 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. From e2c2828439b001bb589e6e0d9c4bc9de5586a489 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Thu, 16 May 2024 16:10:59 +0100 Subject: [PATCH 42/47] Add #80 and reformat header table --- SEP-0002.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/SEP-0002.md b/SEP-0002.md index 13c6557..0eb8267 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -1,14 +1,14 @@ # SEP-0002 - SunPy Organization Definition -| 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 | +| 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 From fc5653146d53da9fa476dc0cff9f8df382cb3aca Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Thu, 16 May 2024 16:14:16 +0100 Subject: [PATCH 43/47] Update SEP-0002.md --- SEP-0002.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SEP-0002.md b/SEP-0002.md index 0eb8267..15fee1e 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -37,6 +37,7 @@ The SunPy Project's governance involves the following five components: * 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. From 7c3c925f88eec43860f060b314026b1620712737 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Thu, 16 May 2024 16:14:56 +0100 Subject: [PATCH 44/47] Apply suggestions from code review --- SEP-0002.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SEP-0002.md b/SEP-0002.md index 15fee1e..effd5e2 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -168,6 +168,7 @@ The Steering Committee shall be responsible for the running of the project under 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) From 4989ab01dbc911fd025612ebaf10af575c9bef78 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Thu, 16 May 2024 16:25:33 +0100 Subject: [PATCH 45/47] Remove mentions of the board from the SEP process --- SEP-0001.md | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) 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 From 761597bfb77dc01618db976739689186bf69db4e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 16 May 2024 15:26:59 +0000 Subject: [PATCH 46/47] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- SEP-0002.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SEP-0002.md b/SEP-0002.md index effd5e2..83f36ba 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -38,6 +38,7 @@ The SunPy Project's governance involves the following five components: * 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. From 9048d05224a5ba957e312645a135d43ee8288f1d Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Thu, 16 May 2024 16:29:59 +0100 Subject: [PATCH 47/47] fix typo --- SEP-0002.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SEP-0002.md b/SEP-0002.md index 83f36ba..9927aff 100644 --- a/SEP-0002.md +++ b/SEP-0002.md @@ -113,7 +113,7 @@ Applying this set of criteria on 2024/04/09 resulted in the following people bei #### 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 descisions based on if they meet the criteria laid out above, we want the custodians to be as inclusive of the SunPy Community as possible. +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: