Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Foundation of New Governance Model #98

Merged
merged 69 commits into from
Jul 19, 2021
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
ac72494
Update .gitignore
afshin Apr 16, 2021
902f6a4
Add software subprojects document.
afshin Apr 16, 2021
4bae166
Add list of subprojects document
afshin Apr 16, 2021
5423a50
Add SSC document
afshin Apr 16, 2021
421f7c1
Add bootstrapping document
afshin Apr 16, 2021
b53eb3f
BoD => Board of Directors
afshin Apr 18, 2021
d0b3425
Add ipython and ipykernel explicitly.
fperez Apr 30, 2021
7b02f68
Update software_subprojects.md
fperez Apr 30, 2021
792182b
Readability fixes.
fperez Apr 30, 2021
065c215
Add explicit mention of DEI working group
fperez Apr 30, 2021
e16f6dd
Add explicit note about Inclusion in the bootstrapping process.
fperez Apr 30, 2021
158cfd3
Include UX/Design & Enterprise
fperez Apr 30, 2021
5773a9b
Fix accidental change to IPython location.
fperez Apr 30, 2021
f19f9b4
Keep Binder & JupyterHub together
fperez Apr 30, 2021
ca02c44
Clarify JEP repo location.
fperez Apr 30, 2021
6b518ea
Update bootstrapping_decision_making.md
ellisonbg May 7, 2021
a31c2e7
Clarify JEP scope based on feedback.
fperez May 7, 2021
a2ab9aa
Tiny edit to gitignore, irrelevant to governance part.
fperez May 10, 2021
1d48203
CoC updates are sole responsibility of the BoD
fperez May 14, 2021
4a41ebf
Update 'may' to 'will'
fperez May 14, 2021
5c7674e
Nuking unnecessary paragraph as per @willingc feedback
fperez May 14, 2021
5a78a0d
Make Team Compass requirement explicit
fperez May 14, 2021
6ba35d2
Fix typo
fperez May 21, 2021
c8da86d
Edit language and process in bootstrap document to provide more clari…
jasongrout May 22, 2021
5ed49ba
Update bootstrapping_decision_making.md
afshin May 27, 2021
dd56049
Merge branch 'governance-spring' into bootstrapping
afshin May 27, 2021
944df73
Merge pull request #1 from jasongrout/bootstrapping
afshin May 27, 2021
174dc9d
Remove SSC document to open in separate PR.
afshin May 28, 2021
a435fc2
Clarify relationship of SSC to smaller, less-active subprojects.
fperez May 28, 2021
cd6b804
Fix typos.
fperez May 28, 2021
c7f48b2
Clarify "enterprise" term as per @choldgraf feedback
fperez May 28, 2021
d2ba2e0
Update list of subprojects
fperez May 28, 2021
792c71d
Add decision making guide.
afshin May 28, 2021
59c7731
Update decision_making.md
afshin Jun 4, 2021
5e160fd
Update decision_making.md
afshin Jun 4, 2021
577ad99
Update decision_making.md
afshin Jun 4, 2021
d4eb7d7
Update decision_making.md
afshin Jun 4, 2021
9d69c1e
Update decision_making.md
afshin Jun 4, 2021
5b987ee
Update decision_making.md
afshin Jun 4, 2021
9e01807
Update decision_making.md
afshin Jun 4, 2021
16debbc
Update decision_making.md
afshin Jun 4, 2021
d4527cc
Update decision_making.md
afshin Jun 4, 2021
efa44b6
Update decision_making.md
afshin Jun 4, 2021
2361915
Update decision_making.md
afshin Jun 4, 2021
581a786
Update decision_making.md
afshin Jun 4, 2021
a539ac5
Update decision_making.md
afshin Jun 4, 2021
13c374a
Update decision_making.md
afshin Jun 4, 2021
ba938c5
Update decision_making.md
afshin Jun 4, 2021
4b9504b
Update decision_making.md
afshin Jun 4, 2021
a6339db
Update decision_making.md
afshin Jun 4, 2021
ee88f8e
Update decision_making.md
afshin Jun 4, 2021
3334e0b
Update decision_making.md
afshin Jun 18, 2021
120ab68
Update decision_making.md
afshin Jun 18, 2021
9bccece
Update decision_making.md
afshin Jun 18, 2021
9985d99
Update decision_making.md
afshin Jun 18, 2021
42b1d82
Update bootstrapping_decision_making.md
afshin Jun 18, 2021
94ae421
Update software_subprojects.md
afshin Jun 18, 2021
04a90ad
Update software_subprojects.md
afshin Jun 18, 2021
8bd0893
Update software_subprojects.md
afshin Jun 18, 2021
e724508
Update list_of_subprojects.md
afshin Jun 18, 2021
87ff16b
Update list_of_subprojects.md
afshin Jun 18, 2021
a79129e
Update list_of_subprojects.md
afshin Jun 18, 2021
03dfbfd
Update list_of_subprojects.md
afshin Jun 18, 2021
8903830
Update list_of_subprojects.md
afshin Jun 18, 2021
c5f8247
Update decision_making.md
afshin Jun 18, 2021
56ccd68
Update bootstrapping_decision_making.md
afshin Jun 18, 2021
33e08f1
Update bootstrapping_decision_making.md
afshin Jun 18, 2021
5500812
Update bootstrapping_decision_making.md
afshin Jun 18, 2021
601e1d2
Update decision_making.md
afshin Jun 18, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Jupyter
.ipynb_checkpoints
default.profraw

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down Expand Up @@ -57,4 +61,4 @@ docs/_build/
target/

# Docs
_build
_build
30 changes: 30 additions & 0 deletions bootstrapping_decision_making.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Bootstrapping Decision Making Bodies
afshin marked this conversation as resolved.
Show resolved Hide resolved

As the new Jupyter governance model is approved and implemented, one of the tasks that Jupyter Subprojects will have is to establish a formal decision making body. There are a number of challenges associated with this:
fperez marked this conversation as resolved.
Show resolved Hide resolved

- We are moving from an informal model where most Subprojects do not have a formal decision making body, to the formal one described in the Decision Making Guidelines.
- Most Subprojects do not have a well defined decision making body today.
- In the new model, there is flexibility about the size of the formal decision making bodies. Each Subproject will need to also determine how large its formal decision making body is.
- There is a wide range of sizes of Subprojects — some have a few contributors and others have many dozens.
- We are proposing to establish new Subprojects for certain areas of Project Jupyter, that don’t have an existing history of informal governance.
- The new governance model and [decision making guide](decision_making.md) is designed to support large, highly participatory decision making bodies. As such, even Subprojects that have a clear decision making body today, may wish to increase the size of that body to include more contributors.
- Our current governance model (informal consensus by an informal group lacking clear boundaries) does not have an established mechanism for decisions like this. We believe it will be very difficult for Subprojects to elect a formal governing body and pick its size using informal consensus.
- We wish to avoid each Subproject having layers of meta consensus or voting to establish a process for electing their decision making body.
- We need to take existing Steering Council members into account. There may be Steering Council members that would like to be on the formal decision making body for a Subproject, even though they have not been active on the Suproject for a period of time.
fperez marked this conversation as resolved.
Show resolved Hide resolved

## Proposed framework

We would like to propose the following framework for Subprojects to establish and bootstrap their formal decision making bodies. This framework is not being presented as a set of strict rules, but more as a set of flexible principles that Subprojects can use for this task. The Governance Working Group will be available to meet with all Subprojects to openly discuss how the Subproject can best use and adapt these ideas to their case.

The overall principle of this framework is that of gradual accumulation of the decision making body, rather than bulk election. The process we propose can be briefly outlined as follows:


- Each Subproject typically has a core of individuals who have a long history with the Subproject and have made significant contributions to the Subproject (in many cases, they founded the Subproject). There is universal agreement that these people should be on the formal decision making body for the Subproject. An example would be Min for JupyterHub. This initial group can be as small as a single person and keeping it as small as possible ensures this step will be simple. Let’s call the size of this initial group `N0`.
- Once the initial group or person is established, that group will use the new Decision Making Guidelines to elect the next single member they would like to add to the formal decision making body. At this point, the decision making body would have size `N0+1`.
- At this point, the `N0+1` people would use the Decision Making Guidelines to elect the next single member to add to the decision make body.
- This process continues in an inductive manner where at each point, the current `N` people on the decision making body elect the `N+1` person, or choose to stop electing new members.

This framework has the following characteristics:

- By gradually increasing the size of the decision making body one person at a time, the power implicit in this election process is gradually distributed over a larger group of people.
willingc marked this conversation as resolved.
Show resolved Hide resolved
- At each stage where the new decision making body is considering adding a new person, they can also choose to stop electing additional members. This allows the group to decide on the overall size in an organic, gradual manner.
66 changes: 66 additions & 0 deletions list_of_subprojects.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# List of Official Jupyter Subprojects

At the highest level, any Github repository under any official Jupyter GitHub organization is either itself an Official Jupyter Subproject, or is part of an Official Jupyter Subproject. All such Subprojects have all of the privileges and responsibilities detailed in the Software Subprojects of Jupyter governance document. Within the Official Jupyter Subproject designation, there are two types of Subprojects: ones with a formal decision making body and SSC representation, and smaller, less active ones whose decision making body is the SSC itself. This document enumerates Subprojects of these two types.
afshin marked this conversation as resolved.
Show resolved Hide resolved

### Official Subprojects with SSC representation

The following Jupyter Subprojects have their own formal decision making body that elects and maintains an SSC representative:
afshin marked this conversation as resolved.
Show resolved Hide resolved

blink1073 marked this conversation as resolved.
Show resolved Hide resolved
- JupyterLab (https://github.com/jupyterlab/jupyterlab)
blink1073 marked this conversation as resolved.
Show resolved Hide resolved
- JupyterHub (https://github.com/jupyterhub/jupyterhub)
- Voilà (https://github.com/voila-dashboards/voila)
- Jupyter Server (https://github.com/jupyter-server/jupyter_server)
- Jupyter Widgets (https://github.com/jupyter-widgets)
- Jupyter Notebook (https://github.com/jupyter/notebook)
jasongrout marked this conversation as resolved.
Show resolved Hide resolved
- Binder
blink1073 marked this conversation as resolved.
Show resolved Hide resolved
- https://github.com/jupyterhub/binder
- https://github.com/jupyterhub/binderhub
- Jupyter Kernels
- jupyter-xeus (https://github.com/jupyter-xeus/)
- IPython (https://github.com/ipython)
fperez marked this conversation as resolved.
Show resolved Hide resolved
willingc marked this conversation as resolved.
Show resolved Hide resolved
- Jupyter Standards
- Jupyter Foundations

### Official Subprojects without SSC representation

The following official Jupyter Subprojects are smaller and less active. As such their formal decision making body will be the SSC and they will not have an independent SSC delegate. Our expectation is that these smaller teams will basically continue working as they do today, making decisions using the consensus seeking phase of the Jupyter Decision Making Guidelines. In the rare situation that a vote is called, the SSC will serve as the voting body and will consult closely with the team. If one of these Subprojects grows or becomes more active, the SSC can, at any time, elect a standalone decision making body for the Subproject, at which point, the Subproject will begin to have an SSC delegate of their own. In all other respects, these Subprojects are full and official Subprojects.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we explicitly state that even though the ssc has decision making authority over these projects, the ssc delegates all decisions that aren’t some major criteria to whoever has commit rights in those repositories?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point, thx! Changes made based on your feedback/language.


- nbdime (https://github.com/jupyter/nbdime)
- nbgrader (https://github.com/jupyter/nbgrader)
- QtConsole (https://github.com/jupyter/qtconsole)
- ipyparallel (https://github.com/ipython/ipyparallel)
- All other repos not listed above and that don't clearly fall into one of the official Subproject GitHub organizations above.

## Notes about Official Jupyter Subprojects

The Official Jupyter Subprojects document proposes a number of changes to how our repositories are organized into official Subprojects and GitHub organizations. This document describes the changes that are being proposed.

- Services
- In general Jupyter services such as Binder, nbviewer, and the Jupyter website involve legal, financial, and operational matters. As such, we are proposing that the actual services are managed by working groups that report to the Board of Directors, who can provide the needed support and oversight. For example, if we want to hire full or part time staff to maintain or operate these services, the Board of Directors would be responsible for raising funds, hiring, and managing those staff.
choldgraf marked this conversation as resolved.
Show resolved Hide resolved
- The JupyterHub and Binder teams have a number of unique considerations. Currently all Binder repositories are under the Jupyterhub organizations, but there is a separate (but highly overlapping team) listed as the Binder team. These teams will need to work out if they would like to each have a formal decision making body with an SSC representative, or if they would like to have a single team. The Governance Working Group will be available to the JupyterHub and Binder teams to help working through these questions.
afshin marked this conversation as resolved.
Show resolved Hide resolved
- We propose that the Jupyer website and its repository will be governed by a working group that reports to the Board of Directors.
fperez marked this conversation as resolved.
Show resolved Hide resolved
- We propose that the nbviewer service (only the actual live service) be governed by a working group that reports to the Board of Directors. The reusable part of nbviewer contained (https://github.com/jupyter/nbviewer) will be governed by the Jupyter Enterprise Subproject.
- Jupyter Kernels
- To consolidate the project’s work on first-party kernels, we propose to establish a new official Subproject called _Jupyter Kernels_ and create a Github organization named jupyter-kernels for the work of the Subproject. All Xeus repositories (https://github.com/jupyter-xeus) will be moved into this organization. This Subproject will also govern the IPython GitHub organization, which will be left in place (https://github.com/ipython).
- A new decision making body for this organization will be established, and they will elect an SSC delegate.
afshin marked this conversation as resolved.
Show resolved Hide resolved
- Jupyter Standards
choldgraf marked this conversation as resolved.
Show resolved Hide resolved
- There are a number of repositories that encode project-wide standards and protocols. To consolidate work on these repositories, we propose to establish a new official Subproject called Jupyter Standards and create a Github organization named jupyter-standards for the work of the Subproject. The following repositories will be moved into this organization:
- Jupyter Client (https://github.com/jupyter/jupyter_client)
- Jupyter Notebook Format (https://github.com/jupyter/nbformat)
- Documentation for other specifications maintained by other Subprojects, such as the Jupyter Widgets message specification, or the Jupyter Server REST APIs.
- Jupyter Enterprise
choldgraf marked this conversation as resolved.
Show resolved Hide resolved
- A number of Jupyter repositories pertain to enterprise deployments. To consolidate work on these repositories, we propose to establish a new official Subproject called _Jupyter Enterprise_ and create a Github organization named jupyter-enterprise for the work of the Subproject. The following repositories will be moved into this organization:
- Enterprise Gateway (https://github.com/jupyter/enterprise_gateway)
- Kernel Gateway (https://github.com/jupyter/kernel_gateway)
- Docker stacks (https://github.com/jupyter/docker-stacks)
- Jupyter Notebook Viewer (https://github.com/jupyter/nbviewer)
- Jupyter Foundations
choldgraf marked this conversation as resolved.
Show resolved Hide resolved
- Jupyter’s software has a number of components that serve as a foundation for many other Subprojects. To consolidate work on these repositories, we propose to establish a new official Subproject called _Jupyter Foundations_ and create a Github organization named jupyter-foundations for the work of the Subproject. The following repositories will be moved into this organization:
- nbconvert (https://github.com/jupyter/nbconvert)
- Jupyter Core (https://github.com/jupyter/jupyter_core)
- Jupyter-packaging (https://github.com/jupyter/jupyter-packaging)
- Terminado (https://github.com/jupyter/terminado)
- nbclient (https://github.com/jupyter/nbclient)
- Telemetry (https://github.com/jupyter/telemetry)
- Traitlets (https://github.com/ipython/traitlets)
- Jupyter Console (https://github.com/jupyter/jupyter_console)
52 changes: 52 additions & 0 deletions software_steering_council.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Software Steering Council

## Purpose

The Jupyter Software Steering Council (SSC) has jurisdiction over software-related decisions across Project Jupyter, with a primary focus on coordination across projects and decisions that have impact across many Jupyter Subprojects. It is also a mechanism for representatives of each project to share information and expertise. Technical decisions and processes where the SSC isn't explicitly involved are automatically delegated to the individual projects to manage their day-to-day activities, create new repositories in their orgs, etc., with independence and autonomy.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we basically going with the current JEP definition of “when a decision requires a JEP vs when it does not”, and saying that the SSC is only needed for decisions that require a JEP? If so can we make that explicit? It is a bit unclear to me when the SSC must be consulted and when it need not be consulted

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not entirely clear to us what you have in mind here, Chris - the language above indicates that the SSC can participate in all questions that have impact across the project, even if a JEP isn't explicitly written... Not sure more is needed, if you still find lack of clarity could you add more specifics in #103 where we moved the file? Thx! :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The current JEP repository has a section on when a decision should require a JEP. I am just wondering if we're continuing to use these guidelines.


## Responsibilities

### Sole responsibilities

The SSC is responsible for the following:

- Defining the submission, review, and approval process for Jupyter Enhancement Proposals.
- Stewarding the JEP process to ensure that it is inclusive and participatory, and solicits feedback from the right stakeholders. As a starting point, [the NumFOCUS DISCOVER Cookbook](https://github.com/numfocus/DISCOVER-Cookbook) may offer some useful starting pointers.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The JEP process should really be governed by a standards body/subproject.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We (@fperez @afshin @ellisonbg) envision the JEP process being used for a broader range of cross-project matters than standards. The primary purpose of the SSC is to make cross-project software decisions with JEPs as their primary mechanism. The SSC could delegate certain aspects of the management of the process to other groups or individuals at their discretion – in these governance documents we are attempting to give the SSC a scope and mandate (JEPs) and leave it up to them to figure out how that works.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add that the JEP repo will be maintained by the Jupyter Standards subgroup. The SSC will be responsible for creating a transparent, participatory, and inclusive process for the evaluation of PEPs that is documented in the JEP repo.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think of it in terms of skill set. The people that oversee the JEP process will need to have training and experience in a particular kind of participatory decision making process, so that they can effectively steward and improve the JEP process itself. I don’t think the entire SSC would have these skills, and as such it may be productive to designate specific group of people that oversee the JEP process. The standards group feels like it must also have this skill set (since creating standards means wrangling lots of people to make a decision) so seems like a natural home to steward the JEP process itself

- Making decisions on JEPs after receiving community feedback (JEPs are the mechanism for elevating any software decision/idea up to the broader Project, while individual Subprojects can make decisions within their scope via their regular mechanisms).
- Owning, managing and implementing the Jupyter Incubation process (https://github.com/jupyter-incubator).
- Owning, managing and implementing the Jupyter Attic process (https://github.com/jupyter-attic).
- Stewarding discussions and activities beyond JEPs that involve cross-cutting concerns, standards, protocols and other architectural issues that impact the entire project.
- Owning and managing anything related to security vulnerabilities across the project, including the Jupyter security lists, any private security repositories, etc.
Copy link
Contributor

@choldgraf choldgraf May 22, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It feels like this might be delegated to a sub-group to ensure that there is more direct accountability to follow up in security issues. if there is a major vulnerability that needs to be fixed ASAP you don’t want diluted accountability that leaves many people hoping that somebody else will fix it

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point - we'll clarify it by naming a working group that captures the work that's been already going on (mailing lists, response, CVE management, etc). But the main point here is to capture the ownership and responsibility of security issues ultimately rests with the SSC. It can operationalize that by delegation to a working group, but at the end of the day it's responsible for handling those issues across Jupyter.

Let us know if that isn't clear enough :)


### Shared responsibilities with the Board of Directors

The SSC and BoD share the responsibility for:

- Updates or amendments to the [Jupyter Code of Conduct](https://jupyter.org/governance/conduct/code_of_conduct.html).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I disagree. I believe the BoD should be responsible for this and the SSC should be responsible along with the BoD that the CoC is upheld in the subprojects.

Further, there should be a Diversity and Inclusion Subproject on the SSC as well as a Diversity and Inclusion standing workgroup of the BoD. As it stands now, this governance structure effectively eliminates gender inclusion. The progress of inclusion on many subprojects has been poor. While we can talk about how important inclusion is to the project, the reality is that the actions of the project have not made it a priority. Creating a governance is the place to bake in inclusion by default. If we only hope it will organically happen, it will not (look at the past five years as evidence).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @willingc for these - sorry we didn't get last week to this one, but we're going in order :)

I disagree. I believe the BoD should be responsible for this and the SSC should be responsible along with the BoD that the CoC is upheld in the subprojects.

We discussed this on Friday and I think those of us who were there (Steve, Sharan, Darian, me) lean in the same direction as you now... I think this has been part of the back-and-forth on how to best apply divisions of labor/scope between the SSC and the BoD, but it probably makes sense to leave the CoC definition/updates to the BoD. Obviously updates to that document will still be subject to community input/feedback, so there's no loss of access to that discussion for SSC members. But it does help clarify that the SSC's scope is software architecture, while the BoD focuses on community and governance.

Further, there should be a Diversity and Inclusion Subproject on the SSC as well as a Diversity and Inclusion standing workgroup of the BoD. As it stands now, this governance structure effectively eliminates gender inclusion. The progress of inclusion on many subprojects has been poor. While we can talk about how important inclusion is to the project, the reality is that the actions of the project have not made it a priority. Creating a governance is the place to bake in inclusion by default. If we only hope it will organically happen, it will not (look at the past five years as evidence).

The way we'd envisioned topics like D&I was that the working groups on such matters (much like events, trademarks, etc.) ought to be chartered by the BoD, and then for those whose scope would intersect with the SSC, then they would jointly agree to have a representative from that working group in the SSC. So rather than having two separate diversity subprojects (at least that's how I understood your paragraph above), there should be a single one targeting these issues across the entire Project Jupyter, with a representative in the SSC who can focus on Diversity questions in the process of software.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've updated the document as per this feedback, and will also jointly update the BoD draft (PR upcoming) to match. Thanks!

- Changing the Jupyter Governance model.
- Creation of new Jupyter Subprojects.
- Removal of Subprojects from Jupyter.

## Membership

SSC members are leaders from Jupyter Subprojects that wish to assist the community in sharing information across projects and participate in decision-making that affects many stakeholders in the Jupyter ecosystem. Membership requires active and ongoing participation in the project.

### Member composition

The Software Steering Council is composed of one representative from each of the Jupyter Subprojects. In addition, the SSC may contain members from certain working groups that have been created by the BoD and whose scope has important impact on SSC activities, such as Diversity and Inclusion, Accessibility, and Internationalization.
willingc marked this conversation as resolved.
Show resolved Hide resolved

### Term length

There is no term length for SSC membership, as each Jupyter Subproject is in charge of selecting its own representative. Projects are encouraged to define their own expectations around SSC membership tenure, to share SSC membership responsibilities amongst core team members, and to provide mechanisms for healthy rotation that avoid burnout.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we consider providing recommendations at least? I think of the ssc kind of like a board, and most healthy non profits have a good amount of turnover in their board to avoid groupthink and stale perspectives. I don’t think we want the exact same dynamics necessarily, but I think it would be helpful to create recommendations or processes that encourage dynamism in the SSC.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a very good point, though there's challenges in what kind of ideas make sense across the board given the variability we have in subproject sizes and activity levels. Since we don't want to stall this PR for too long on implementation specifics, perhaps this is something we can address partly during the bootstrapping of these decision-making bodies across subprojects, and/or later in the life of the SSC itself. If you have more ideas on what we could put in now that's great, by all means send them in :) But for now I suggest we move forward and keep this in mind in the coming implementation weeks.

Side note: editing of that file will happen now on #103, since we just moved it over there.


### Selecting SSC members

Each Jupyter Subproject or working group with SSC representation is responsible to nominate a single representative using the Jupyter Decision Making Guidelines.

### Bootstrapping the SSC

The initial Software Steering Council will be created with individuals nominated by each of the major Jupyter Subprojects, as defined by our [official list](list_of_subprojects.md).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The initial Software Steering Council will be created with individuals nominated by each of the major Jupyter Subprojects, as defined by our [official list](list_of_subprojects.md).
The initial Software Steering Council will be created with individuals nominated by each of the major Jupyter Subprojects, as defined by our [official list](list_of_subprojects.md) and the Working Groups, as defined in this document.


## Relationship with the Board of Directors

The SSC exercises autonomy in managing its responsibilities. It takes advising and guidance from the Board of Directors, but does not report to the BoD for any technical decisions. It also works with the Board of Directors to make any decisions that must be made jointly (e.g., changes to governance).
31 changes: 31 additions & 0 deletions software_subprojects.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Software Subprojects of Project Jupyter

Software design and development in Project Jupyter is organized into a set of Software Subprojects. These software Subprojects often map onto GitHub repositories/organizations, but that is not strictly required. The lifecycle of Software Subprojects is [described in detail here](newsubprojects.md).

Since Project Jupyter promotes open technical standards and interoperability among components, there is a rich ecosystem of tools developed by third parties that are not under the umbrella of Project Jupyter’s Governance or the Software Steering Council. We strive to maintain open communication with this community, however,this document focuses only on official Jupyter Subprojects.
willingc marked this conversation as resolved.
Show resolved Hide resolved

## Responsibilities of Jupyter Subprojects

Unless the SSC or the Board of Directors says otherwise, Subprojects self-govern as autonomously as possible, while following the overall governance model and processes of Project Jupyter. Specifically, all Subprojects under Jupyter’s governance have the following responsibilities:
fperez marked this conversation as resolved.
Show resolved Hide resolved

- Adhere to the Jupyter Code of Conduct.
- Adhere to the [Jupyter Decision Making Guidelines and process](decision_making.md).
afshin marked this conversation as resolved.
Show resolved Hide resolved
- Where applicable, nominate and maintain a single representative to the SSC.
- Follow the licensing guidelines and practices of the project ([use of the BSD license and copyright header](https://github.com/jupyter/jupyter/blob/master/LICENSE)).
- Follow Jupyter’s trademark, branding, and intellectual property guidelines.
- Conduct its activities in a manner that is open, transparent, and inclusive. This includes coordinating with the SSC and the Board of Directors on mechanisms for information flow and updates to the broader community (details of this, project-wide, will be developed as our new governance model is adopted and implemented).
choldgraf marked this conversation as resolved.
Show resolved Hide resolved

## Incubator Subprojects

Incubator Subprojects are experimental and early-stage efforts where ideas are being explored and developed in the open and under the principles of Jupyter’s governance. Therefore, Subprojects under incubation have the same responsibilities listed above for official Jupyter projects.

The [Jupyter Incubator GitHub organization](https://github.com/jupyter-incubator) serves as a home for all Incubator Subprojects and has further details on the process to create and approve them. This organization serves as a neutral playing ground for people who can’t easily create their own repositories.

## SSC Representation

Official Jupyter Software Subprojects that have large and active enough teams to have a standalone, formal Decision Making Body will elect and maintain a single representative to the SSC. The decision making body of each such Subproject is free to set term limits or rotate this responsibility as they see fit.
afshin marked this conversation as resolved.
Show resolved Hide resolved

There exist two categories of Subprojects that, while operating under Jupyter’s governance, do not have a dedicated delegate to the SSC:

- There are a number of smaller and/or low-activity Subprojects that don’t have enough active participants to have a standalone decision making body. The SSC itself will be the formal decision making body for these Subprojects when necessary, while otherwise allowing the team to manage its day-to-day activities.
afshin marked this conversation as resolved.
Show resolved Hide resolved
- Projects in the Jupyter Incubator will only acquire official SSC representation if/once they graduate to official Jupyter Subproject status.