Skip to content
Open
Changes from all commits
Commits
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
250 changes: 250 additions & 0 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,250 @@
# Governance

This document outlines the roles and processes which govern all Bombshell projects. As a volunteer-based, community-run open source project, we value transparency in the pursuit of building a high trust organization.

Choose a reason for hiding this comment

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

Suggested change
This document outlines the roles and processes which govern all Bombshell projects. As a volunteer-based, community-run open source project, we value transparency in the pursuit of building a high trust organization.
This document outlines the roles and processes that govern all Bombshell projects. As a volunteer-based, community-run open source project, we value transparency in the pursuit of building a high-trust organization.


We bias toward clear roles and written decisions over invisible social hierarchies. Progress shouldn't depend on proximity to a small group of core contributors.

> [!IMPORTANT]
> All community members must follow the [Code of Conduct (CoC)](CODE_OF_CONDUCT.md). CoC violations are handled according to our [Moderation](#moderation) process.
## Get Involved

**Anything that supports the Bombshell community is a valuable contribution!**

Every contribution is meaningful. Whether you are writing code, fixing a typo, posting in [Discord](https://bomb.sh/chat), sharing on social media, reviewing a pull request, or writing about Bombshell on your personal blog—no contribution is too small!

Everyone can become a Bombshell contributor! We strive to recognize all contributions that improve the health of our community.

## Contributor Roles

Each level of contribution to the Bombshell community comes with a specific set of privileges and responsibilities. These levels are referred to as **Contributor Roles**.

Roles are available to **all members** of the Bombshell community and are not limited to "people who write code."

The two most important things we look for in a contributor are:

- **Being present**—the fact that you've decided to spend your valuable time contributing to our project is amazing! Thank you for being in this with us.

- **Being kind**—you go above and beyond our [Code of Conduct](CODE_OF_CONDUCT.md) to foster welcoming, healthy communication in pull requests, issue discussions, Discord conversations, and interactions outside of our immediate ecosystem.

Contributor roles are a _recognition of contributions you have already made_ to our community. If you ever wish to resign from your current role at any time, you are invited to do so—no questions asked and no hard feelings. See [Alumni](#alumni) for more information.

In extreme cases, contributors who violate our [Code of Conduct](CODE_OF_CONDUCT.md) may have their role revoked at the discretion of the Core maintainers.

### Contributor

Have you done something to contribute to the health, success, or growth of Bombshell? **Congratulations, you are now officially recognized as a Bombshell Contributor!**

#### Examples of contributions

- **GitHub:** Submitting a merged pull request.
- **GitHub:** Filing a detailed bug report.
- **GitHub:** Updating documentation.
- Helping people on GitHub, Discord, etc.
- Answering questions on Stack Overflow, BlueSky, etc.
- Blogging, Vlogging, Podcasting, and Livestreaming about Bombshell.
- **This list is incomplete!** Similar contributions are also recognized.

#### Privileges

- New role on [Discord](https://bomb.sh/chat): `@contributor`
- Early access to new projects, occasional swag drops, and more!

#### Responsibilities

This role does not come with any additional responsibilities or commitment, but we hope you stick around and keep participating in our community!

#### Nomination

You may self-nominate by reaching out in Discord or opening an issue. Any existing contributor can also recognize your contributions and nominate you. No formal vote is required—the barrier to entry is intentionally low.

### Maintainer

The **Maintainer** role is available to contributors who show up consistently and want to join the team in the long-term maintenance and growth of Bombshell.

Maintainers are not required to write code! Some Maintainers spend most of their time in Discord, maintaining a healthy community there. Others work on documentation, support, or design.

#### Privileges

- All privileges of the [Contributor role](#contributor), plus...
- `@maintainer` role on [Discord](https://bomb.sh/chat)
- Access to the private `#maintainers` channel on Discord
- Invitation to the `bombshell-dev` organization on GitHub
- Ability to moderate Discord to remove spam, harmful speech, etc.
- Ability to push branches directly to the organization (personal forks no longer needed)
- Ability to review and merge GitHub PRs
- Ability to vote on role nominations

#### Responsibilities

- Participate in the project as a team player
- Bring a friendly, welcoming voice to the Bombshell community
- Triage new issues
- Review pull requests

#### Nomination

- To be nominated, you should already be performing some of the responsibilities of a Maintainer
- Any existing Maintainer (or above) can nominate you
- Once nominated, existing Maintainers vote; simple majority approves

### Core

The **Core** role is available to Maintainers who have a larger-than-usual impact on the Bombshell project and community. Core members are seen as leaders in the project and have significant influence on project direction.

Not every Maintainer will reach this level, and that's okay! Maintainers still have significant responsibility and privileges within our community.

#### Privileges

- All privileges of the [Maintainer role](#maintainer), plus...
- `@core` role on [Discord](https://bomb.sh/chat)
- Access to the private `#core` channel on Discord
- Invitation to the `core` team on GitHub
- Ability to vote on major initiatives and RFDs

#### Responsibilities

- All of the responsibilities of Maintainer, plus...
- Ownership over specific part(s) of the project
- Ownership over the long-term health and success of Bombshell
- Leadership as a role-model to other maintainers and community members

Choose a reason for hiding this comment

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

Suggested change
- Leadership as a role-model to other maintainers and community members
- Leadership as a role model to other maintainers and community members


#### Nomination

- To be nominated, you should already be performing some of the responsibilities of a Core member
- Any existing Core member can nominate you
- Once nominated, existing Core members vote; simple majority approves

### Organizer

The **Organizer** role exists to resolve disputes, keep the project accountable, and break ties when needed.

This is not a "leader" role—the Organizer is a facilitator and tiebreaker. The role can be held by a single person and is revaluated on an annual basis.

Choose a reason for hiding this comment

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

Suggested change
This is not a "leader" role—the Organizer is a facilitator and tiebreaker. The role can be held by a single person and is revaluated on an annual basis.
This is not a "leader" role—the Organizer is a facilitator and tiebreaker. The role can be held by a single person and is reevaluated on an annual basis.


#### Responsibilities

- Resolve disputes that Core cannot reach consensus on
- Break ties in votes when needed
- Ensure governance processes are followed
- Hold the project accountable to its stated values

#### Nomination

- Core members nominate an Organizer when the need arises
- Requires consensus among Core members

## Decision Making

We bias toward async, written communication. Most decisions happen through:

- **GitHub Issues and PRs:** For code changes, bug fixes, and smaller improvements
- **Discord discussions:** For quick questions and informal coordination
- **RFDs:** For significant changes that need broader input (see below)

### Voting

When a vote is needed (role nominations, contested decisions):

- Simple majority approves for role nominations
- Core consensus for major project decisions
- Organizer breaks ties when consensus cannot be reached

## Request For Discussion (RFD)

When decisions need broader input, we use a Request For Discussion process inspired by [Oxide](https://oxide.computer/blog/rfd-1-requests-for-discussion).

### When to use an RFD

- Significant new features or architectural changes
- Process or governance changes
- Anything that benefits from written discussion and a permanent record

### Process

1. **Draft:** Author creates an RFD as a markdown file in the [`bombshell-dev/rfd`](https://github.com/bombshell-dev/rfd) repository and opens a PR
2. **Discussion:** Discussion happens async in PR comments (minimum 5 business days)
3. **Decision:** Core reviews feedback and decides; Organizer breaks ties if needed
4. **Record:** Merged RFDs become a permanent organizational record

Proposals are written down, discussed publicly, and resolved in the open.

## Other Roles

### Project Teams

Besides our contributor roles described above, there are additional teams available that community members are welcome to join. Teams are a great way to organize around different projects and initiatives in our community.

Getting involved with a team is a great way to start contributing to Bombshell!

### Moderator

**Moderator** is a special role available to Maintainers+. While all maintainers are granted permissions to moderate for bad behavior across our community, a Moderator actively takes on this responsibility.

Trivial tasks (like removing spam) can be acted on unilaterally by a Moderator. Other non-trivial tasks (like assisting with or resolving a Code of Conduct violation) should involve the entire Moderator team (and in some cases, Core).

#### Privileges

- `@mods` role on [Discord](https://bomb.sh/chat)
- Access to the private `#moderators` channel on Discord

#### Nomination

Any Maintainer (and above) can self-nominate by messaging the maintainers on Discord.

### Alumni

**Alumni** is a designation for Maintainers+ who have stepped away from the project and no longer contribute regularly.

#### Becoming Alumni

You can become Alumni in two ways:

- **Voluntary:** Resign from your role at any time by notifying Core. No questions asked, no hard feelings.
- **Inactivity:** After an extended period of inactivity, Core may reach out and offer Alumni status.

Choose a reason for hiding this comment

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

Perhaps it would be good to explain a few reasons as to why the Alumni role exists (e.g. remove administrative powers so that they pose no threat in case hacked, facilitate allocating funds between only active members, etc) and some mechanism like "if you don't answer in X days, you're moved to Alumni regardless"


#### Privileges

- `@alumni` role on [Discord](https://bomb.sh/chat)
- You remain part of the Bombshell community

Alumni are always welcome to return! Rejoining as an active contributor follows the normal nomination process for the relevant role.

## Moderation

Outlined below is the process for Code of Conduct violation reviews.

### Reporting

Anyone may report a violation. Violations can be reported:

- In private, via email to a Core member
- In private, via direct message to a Core member on Discord
- In public, via a GitHub comment (mentioning `@bombshell-dev/core`)
- In public, via the project Discord server (mentioning `@mods`)

### Review

If a report doesn't contain enough information, the reviewers will strive to obtain all relevant data before acting.

The reviewers will then review the incident and determine:

- What happened
- Whether this event constitutes a Code of Conduct violation
- Who, if anyone, was involved in the violation
- Whether this is an ongoing situation

In the event of any conflict of interest, reviewers must recuse themselves.

### Resolution

Responses will be determined by the reviewers on the basis of the information gathered. They may include:

- Taking no further action
- Issuing a reprimand (private or public)
- Asking for an apology (private or public)
- Permanent ban from the GitHub org and Discord server
- Revoked contributor status

---

Inspired by [Astro](https://github.com/withastro/.github/blob/main/GOVERNANCE.md) and [Oxide](https://oxide.computer/blog/rfd-1-requests-for-discussion)