-
Notifications
You must be signed in to change notification settings - Fork 261
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by: Michelle Dhanani <michelle@fermyon.com>
- Loading branch information
Showing
2 changed files
with
128 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,126 @@ | ||
title = "SIP 019 - Spin Governance" | ||
template = "main" | ||
date = "2024-06-18T23:00:00Z" | ||
|
||
--- | ||
|
||
Summary: Adding governance to the Spin project | ||
|
||
Owner: michelle@fermyon.com | ||
|
||
Created: June 18, 2024 | ||
|
||
## Background | ||
|
||
Spin is a project now used by many organizations and individuals across the software ecosystem. In order for the Spin community to continue to rely on, build on, and integrate with Spin, there should be a public collective understanding of how the Spin project is governed and how to iterate on governance. | ||
|
||
## Proposal | ||
|
||
This SIP is a proposal to add the following in a Governance.md file to the root of the Spin repository. This governance structure aims to describe transparently how we've been doing things so far. It formally opens up the project for maintainers from multiple organizations. It also includes some future directives for working toward a proper multi stakeholder governed project. | ||
|
||
```Governance.md | ||
## Overview | ||
This document describes the governance of the Spin project. | ||
The Spin project consists of several codebases with different release cycles: These codebases include: | ||
- https://github.com/fermyon/spin | ||
- SDKs: | ||
- https://github.com/fermyon/spin-python-sdk | ||
- https://github.com/fermyon/spin-js-sdk | ||
- https://github.com/fermyon/spin-rust-sdk | ||
- https://github.com/fermyon/spin-dotnet-sdk | ||
- https://github.com/fermyon/spin-nim-sdk | ||
- Plugins: | ||
- https://github.com/fermyon/spin-test | ||
- https://github.com/fermyon/cloud-plugin | ||
- https://github.com/fermyon/spin-cloud-gpu | ||
- https://github.com/fermyon/spin-plugins | ||
- https://github.com/fermyon/platform-plugin | ||
- Triggers: | ||
- https://github.com/fermyon/spin-trigger-command | ||
- https://github.com/fermyon/spin-trigger-sqs | ||
- https://github.com/fermyon/spin-trigger-cron | ||
Each repository is subject to the same overall governance model, but has different teams of people (“maintainers”) with permissions and access to the repository. This is meant to increase diversity of maintainers in the Spin project and also increases the velocity of code changes. | ||
## **Spin Project Maintainers** | ||
Project maintainers are responsible for activities surrounding the development and release cycle of a specific repository they own. Technical decisions for code resides with the project maintainers, unless there is a decision related to cross maintainer groups that cannot be resolved by those groups. Those cases can be escalated to the maintainers of [fermyon/spin](https://github.com/fermyon/spin). | ||
Project maintainers do not need to be software developers. No explicit role is placed upon them, and they can be anyone appropriate for the work being produced. | ||
Project maintainers and emeritus maintainers for each project should be outlined in the MAINTAINERS.md file in the corresponding GitHub repository. | ||
Changes to project maintainers use the following: | ||
- A project maintainer may step down by emailing the mailing list. When a project maintainer steps down, they become an emeritus maintainer. | ||
- Project maintainers MUST remain active on the project. If they are unresponsive for > 3 months, they will lose project maintainer-ship, unless a [supermajority](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote) (two-thirds majority) of the project maintainers of the given project agrees to extend the period to be greater than 3 months. If two-thirds majority is not possible, the Spin Governance Committee members will be included in the group of people voting on this decision in addition to the project maintainers of the project. | ||
- New maintainers can be added to a project by a [supermajority](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote) vote of the project’s existing maintainers. New maintainers must be nominated by existing maintainers. If quorum is not met, the Spin Govenance Committee members will be included in this vote. | ||
- A maintainer may be removed for a [code of conduct](../../../CODE_OF_CONDUCT.md) violation via a supermajority vote of the Spin Governance Committee. Code of conduct violations may be submitted to any member(s) on the Spin Governance Committee by email. See email information on MAINTAINERS.md. | ||
- When a project has no maintainers the maintainers of the [fermyon/spin Github repo](https://github.com/fermyon/spin) become responsible for it, and may archive the project, or find new maintainers | ||
### **Decision Making** | ||
The default decision making process is objection-free consensus. In other words, a decision is made when all decision makers have had time to consider the decision and do not raise any objections. Silence on any consensus decision is equivalent to non-objection. Explicit agreement may be stated at will. | ||
Decision making scenarios should be promoted appropriately by the maintainer overseeing the issue: | ||
- tag maintainers in relevant issues | ||
- send out mailing list reminders | ||
- communicate updates in meetings | ||
When a consensus cannot be found, a maintainer can call for a [simple majority](https://en.wikipedia.org/wiki/Majority) vote from the project maintainers for a repo on a decision. If the decision impacts multiple repositories or requires a coordinated effort across multiple repositories and project maintainers are unable to reach a decision on their own for the relevant projects, a maintainer can call for a simple majority vote from the Spin Governance Committee. If quorum cannot be met for a decision, all members of the Spin Governance Committee are added to the relevant vote. | ||
## **Spin Governance Committee** | ||
The project maintainers for [github.com/fermyon/spin](http://github.com/fermyon/spin) also serve as the Spin Governance Committee and have the following additional responsibilities: | ||
- Maintaining the mission, vision, values, and scope of the project | ||
- Refining the governance and charter as needed | ||
- Making project level decisions | ||
- Resolving escalated project decisions when responsible project maintainers are blocked | ||
- Managing the Spin brand | ||
- Managing access to Spin assets such as source repositories, hosting, project calendars | ||
- Handling code of conduct violations for any repository under the Spin project | ||
- Deciding what sub-groups and repositories are part of the Spin project | ||
- Overseeing the resolution and disclosure of security issues | ||
- Managing financial decisions related to the project | ||
In addition to the responsibilities listed above, this group is also responsible for bootstrapping a multi-stakeholder steering committee of 5-7 people to govern the project. The group is responsible for creating a steering committee Charter and shaping and executing the processes around selecting committee members. Once a steering committee is in place, the Spin Governance Committee will be dismantled and replaced with the Spin Steering Committee. The Spin Steering Committee will be responsible for bootstrapping a Code of Conduct Committee. | ||
The Spin Governance Committee have to match the following criteria: | ||
- Spin Governance Committee MUST remain active on the project. If they are unresponsive for > 3 months, they will lose membership, unless a [supermajority](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote) of the other governance members agrees to extend the period to be greater than 3 months | ||
The Spin Governance Committee will select a chair to set agendas, call meetings, and oversee voting. | ||
### **Decision Making** | ||
The default decision making process is objection-free consensus except for changes to the Governance of the project which requires a supermajority agreement of the committee. | ||
Decision making scenarios should be promoted appropriately by the member overseeing the issue. | ||
When a consensus cannot be found, a member can call for a supermajority vote from the committee. | ||
### Changes to Governance.md | ||
The process for changes to the Governance.md file is as follows: | ||
1) Open an issue | ||
2) Open a pull request to this SIP describing changes and the Governance.md file with proposed changes. | ||
3) Spin Govenance Committee will review pull request. Pull request may be merged when a supermajority of Spin Governance Committee has approved the pull request. | ||
## Glossary | ||
- Objection-free consensus: A decision is made when all decision makers have had time to consider the decision and do not raise any objections. Silence on any consensus decision is equivalent to non-objection. Explicit agreement may be stated at will. | ||
- Supermajority: Two-thirds majority where at least two-thirds of the group is in favor of the decision being made. More context [here](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote). | ||
- [Simple-majority](https://en.wikipedia.org/wiki/Majority) | ||
- Emeritus Maintainer: These are project maintainers that are no longer active. We model this after the Helm Emeritus Maintainer role. More context [here](http://technosophos.com/2018/01/11/introducing-helm-emeritus-core-maintainers.html). | ||
``` | ||
|
||
## Additional Considerations | ||
|
||
The Code of Conduct for the Spin project currently points to the Fermyon Code of Conduct which has an enforcement section that that is Fermyon specific. We should decouple the Spin project from the Fermyon Code of Conduct at this time. The Spin project should adopt a standard open source code of conduct like the [contributor covernant](https://www.contributor-covenant.org/version/2/1/code_of_conduct/code_of_conduct.md) and add a Spin specific enforcement section. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters