Skip to content

Commit 330c762

Browse files
committed
add SIP for governance.md
Signed-off-by: Michelle Dhanani <[email protected]>
1 parent 1edc4f0 commit 330c762

File tree

3 files changed

+134
-0
lines changed

3 files changed

+134
-0
lines changed

GOVERNANCE.md

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
## Overview
2+
3+
This document describes the governance of the Spin project.
4+
5+
The Spin project consists of several codebases with different release cycles. These codebases include:
6+
7+
- Core Spin:
8+
- [Spin](https://github.com/fermyon/spin)
9+
- SDKs:
10+
- [Spin Python SDK](https://github.com/fermyon/spin-python-sdk)
11+
- [Spin JavaScript SDK](https://github.com/fermyon/spin-js-sdk)
12+
- [Spin Rust SDK](https://github.com/fermyon/spin-rust-sdk)
13+
- [Spin .NET SDK](https://github.com/fermyon/spin-dotnet-sdk)
14+
- [Spin Nim SDK](https://github.com/fermyon/spin-nim-sdk)
15+
- Plugins:
16+
- [Spin Plugins Index Repository](https://github.com/fermyon/spin-plugins)
17+
- [Fermyon Platform Plugin](https://github.com/fermyon/platform-plugin)
18+
- [Spin Test Plugin](https://github.com/fermyon/spin-test)
19+
- [Cloud Plugin](https://github.com/fermyon/cloud-plugin)
20+
- [Spin Cloud GPU Plugin](https://github.com/fermyon/spin-cloud-gpu)
21+
- Triggers:
22+
- [Spin Command Trigger](https://github.com/fermyon/spin-trigger-command)
23+
- [Spin SQS Trigger](https://github.com/fermyon/spin-trigger-sqs)
24+
- [Spin Cron Trigger](https://github.com/fermyon/spin-trigger-cron)
25+
26+
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. Major changes and features to the project including additions to the repository list above are to be proposed through the [Spin Improvement Proposal](docs/content/sips/index.md) process.
27+
28+
## Spin Project Maintainers
29+
30+
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 Spin Governance Committee (discussed below).
31+
32+
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.
33+
34+
Project maintainers and emeritus maintainers for each project should be outlined in the MAINTAINERS.md file in the corresponding GitHub repository.
35+
36+
Changes to project maintainers use the following:
37+
38+
- A project maintainer may step down by emailing the mailing list. When a project maintainer steps down, they become an emeritus maintainer.
39+
- Project maintainers MUST remain active on the project. If they are unresponsive for > 3 months, they will lose project maintainer-ship, unless the remaining project maintainers of the given project and the Spin Governance Committee agree to extend the period to be greater than 3 months.
40+
- New maintainers must be nominated by existing maintainers. Maintainers are to discuss and agree in a private setting adding a new maintainer. Once a descision has been made, a maintainer may be added to the project via a pull request to the relevant MAINTAINERS.md file.
41+
- A maintainer may be removed for a [code of conduct](CODE_OF_CONDUCT.md) violation by 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.
42+
- When a project has no active 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
43+
44+
### Decision Making
45+
46+
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.
47+
48+
Decision making scenarios should be promoted appropriately by the maintainer overseeing the issue:
49+
50+
- tag maintainers in relevant issues / SIPs
51+
- send out mailing list reminders
52+
- communicate updates in meetings
53+
54+
In the extreme case that objection-free consensus cannot be reached after a reasonable amount of time and effort,
55+
a maintainer can call for a [supermajority](https://en.wikipedia.org/wiki/Supermajority#Two-thirds_vote) vote from the project maintainers for a repo on a decision. If quorum cannot be met for a decision, all members of the Spin Governance Committee are added to the relevant vote.
56+
57+
If a 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 decision from the Spin Governance Committee.
58+
59+
## Spin Governance Committee
60+
61+
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:
62+
63+
- Maintaining the mission, vision, values, and scope of the project
64+
- Refining this governance document
65+
- Making project level decisions
66+
- Making decisions about project licensing, contribution requirements, and other legal matters
67+
- Resolving escalated project decisions when responsible project maintainers are blocked
68+
- Managing the Spin brand
69+
- Managing access to Spin assets such as source repositories, hosting, project calendars
70+
- Handling code of conduct violations for any repository under the Spin project
71+
- Deciding what sub-groups and repositories are part of the Spin project
72+
- Overseeing the resolution and disclosure of security issues
73+
- Managing financial decisions related to the project
74+
75+
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 should then establish additional governance structures as it sees fit (e.g., a Code of Conduct Committee for project moderation).
76+
77+
The Spin Governance Committee have to match the following criteria:
78+
79+
- Spin Governance Committee members MUST remain active on the project. If they are unresponsive for > 3 months, they will lose membership, unless the remaining members of the committee agree to extend the period to be greater than 3 months
80+
81+
The Spin Governance Committee will select a chair to set agendas, call meetings, and oversee the decision making process.
82+
83+
### Decision Making
84+
85+
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. The process for making governance related changes is described below.
86+
87+
Decision making scenarios should be promoted appropriately by the member overseeing the issue.
88+
89+
In the extreme case that objection-free consensus cannot be reached after a reasonable amount of time and effort,
90+
a member can call for a supermajority vote from the committee.
91+
92+
### Changes to Governance
93+
94+
The process for changes to the GOVERNANCE.md file is as follows:
95+
96+
1. Decide whether the change is substantial in nature. A substantial change is one that changes the project governance itself, instead of editorial changes providing clarifications, small bugfixes, etc
97+
2. Then,
98+
- For substantial changes:
99+
i. Open a new SIP for the changes
100+
ii. Follow the [normal SIP process](https://github.com/fermyon/spin/blob/main/docs/content/sips/index.md), requiring a supermajority for acceptance
101+
- For editorial changes:
102+
i. Open a PR with the changes to GOVERNANCE.md
103+
ii. Land the PR after getting at least two positive reviews, and waiting for at least 3 workdays across all time zones
104+
105+
_Note: PRs landed without SIPs can be challenged as substantial for up to 2 weeks afterwards, at which point they have to be backed out, and the proposed changes have to go through the SIP process instead._
106+
107+
## Glossary
108+
109+
- 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.
110+
- 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).
111+
- 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).

docs/content/sips/019-governance.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
title = "SIP 019 - Spin Governance"
2+
template = "main"
3+
date = "2024-06-18T23:00:00Z"
4+
5+
---
6+
7+
Summary: Adding governance to the Spin project
8+
9+
10+
11+
Created: June 18, 2024
12+
13+
## Background
14+
15+
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.
16+
17+
## Proposal
18+
19+
This SIP is a proposal to add a GOVERNANCE.md file (submitted with this SIP) to the root of the Spin repository. The governance structure described in the governance document file aims to describe transparently a process close to how we've been doing things so far in the project and how to make changes. It formally opens up the project for maintainers from multiple organizations, defines maintainership roles, describes decision making processes and more.
20+
21+
The structure outlined in the governance document is established as a temporary bootstrapping phase on the road to a more permanent, multi-stakeholder model. The Spin Governance Committee established in the current governance document should eventually be dismantled and replaced with a smaller, more well defined group only tasked with governing the Spin project as a whole (a "Steering Committee"). This group will in turn establish other committees for handling more specific governance concerns (e.g., Project moderation and CoC enforcement).

docs/content/sips/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@ Here is a list of accepted SIPs:
2828
- [Generic Interface for LLMs](../sips/015-llm.md)
2929
- [Support for Inbound WebSockets](../sips/016-inbound-websockets.md)
3030
- [Application-Internal Service Chaining](../sips/017-service-chaining.md)
31+
- [Adding OTel tracing to Spin](../sips/018-adding-otel-tracing-to-spin.md)
32+
- [Spin Governance](../sips/019-governance.md)

0 commit comments

Comments
 (0)