Skip to article frontmatterSkip to article content

What would Rust-style governance look like in Jupyter?

2i2c
Project Jupyter

As I’ve written about before, I like Rust’s governance structure. I mean, who can’t get behind a community that lists governance as a top-level page on its website?

Jupyter is currently in the middle of figuring out the next phase of its governance structure, and so I have been thinking about what this might look like. This post is a quick thought-experiment to explore what it’d mean to port over Rust’s governance directly into the Jupyter community.

Note: I’m not an expert in Rust governance, so there are some assumptions made about its model based on my outside perspective. Apologies if I miss any important details about the Rust model, but this is mostly meant as as inspiration, not a report on Rust’s governance :-)

A quick recap of Rust’s governance structure

First off, how does Rust govern and organize itself? There are a few few key pieces:

What would this look like in Jupyter?

Jupyter is a complex and multi-faceted community, but so is Rust, so let’s see what this decision-making structure would look like in the Jupyter community.

General decision-making principles and goals

First off, we would adopt many of the same decision-making goals of the RFC process. Here are a few key ones as I understand it:

An RFC in the Jupyter Community

First off, the mechanism for proposing, iterating on, and making decisions. In Rust this is an RFC. in Jupyter, such a mechanism has already been proposed!

The Jupyter Enhancement Proposals have been around for quite some time, though have never been codified into law official decision-making and have become a bit stale. I suspect this is partially because it’s unclear what kind of “power” the JEP process has.

Recently, Safia kick-started a process to revitalize the JEP process, and the proposed process is quite close to what the Rust community uses. I generally think that this PR is a huge improvement, though for the sake of this thought experiment, I’m just going to directly port over my understanding of Rust into this blog post.

Here’s how a Rust-like process could work in Jupyter. Since already have JEPs, I’ll replace “RFC” with “JEP”.

The teams and peronnel needed to manage this process

The JEP process is the mechanism by which decisions get made, but what are the groups that oversee this mechanism? In the Rust community, these teams are broken down by either technical or community topics (e.g., “compilers”, “community”, or “packaging”). The Jupyter community similarly has several focus-groups that touch different parts of the interactive computing stack. Here are a few core ones that basically already exist:

One could imagine beginning with this subset of teams, and adding others organically over time. Each of the teams listed above would manage JEP processes for their respective domain. They would be given a list of repositories (and maybe a GitHub organization) to oversee, and when a new JEP came in, one of the the team members would be chosen to shepherd the process. The team would be the definitive source of decision-making for topics in that domain.

Here are a few others that come to mind - they’re a bit less well-defined and might be good candidates for team growth in the future.

There are a few other roles that would need to be created to facilitate this process:

What’s the difference between current Jupyter and JEP Jupyter?

Thinking through the above scenario, I don’t see too much distance between our current situation and a JEP-like process. We:

What we’d need to do:

What’s the difference between Jupyter and Rust?

Finally, while it’s interesting to port one community’s governance model directly onto another, there are difference between the Jupyter and Rust projects, both technical and social ones. Here are a few differences I can think of that might have an impact on how this model would work.

Wrapping up

I’m probably missing some things, but this seems like a reasonable plan! As I mentioned above, this post has mostly been a thought-experiment, but if anybody has thoughts on bringing this into the governance refactoring process, I’d be happy to talk more.