-
Notifications
You must be signed in to change notification settings - Fork 0
Add governance doc #3
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| 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. | ||||||
|
|
||||||
| 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 | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
|
||||||
| #### 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. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
|
||||||
| #### 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. | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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) | ||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.