Skip to content
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

Governance Model Template #94

Merged
merged 3 commits into from
May 19, 2023
Merged
Show file tree
Hide file tree
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
4 changes: 4 additions & 0 deletions documentation/starter-kits/CONTRIBUTING/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ Our project has our licensing terms, including rules governing redistribution, d

Our Code of Conduct helps facilitate a positive interaction environment for everyone involved with the team, and provides guidance on what to do if you experience problematic behavior. Read more in our [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md), and make sure you agree to its terms.

### Governance Model

Our Governance model helps outline our project's decision making and roles-based expectations. Read more in our [GOVERNANCE.md](GOVERNANCE.md).

### Developer Environment

For patch contributions, see our [Developer Documentation]([INSERT YOUR DEVELOPMENT GUIDE LINK HERE]) for more details on how to set up your local environment, to best contribute to our project.
Expand Down
131 changes: 131 additions & 0 deletions documentation/starter-kits/GOVERNANCE/GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# [INSERT PROJECT NAME] Project Governance

This governance model aims to create an open source community that encourages transparency, contributions, and collaboration, but maintains sound technical and quality standards. Our goal is to build a community comprised of members across the [INSERT PROJECT DOMAIN] community and beyond, including from private organizations, universities, government organizations, and international organizations.

The project follows a fairly liberal contribution model where people and/or organizations who do the most work will have the most influence on project direction. Roles determine decision making influence, and governing committees (e.g. technical steering, project steering) are set up to ensure the project's direction is in-line with requirements / goals while supporting flexibility for future growth and membership. Technical decision making will primarily be made through a "[consensus-seeking](https://en.wikipedia.org/wiki/Consensus-seeking_decision-making)" approach within the respective governing committees.

## Roles

| Role | Restricted To | Description | Read/Clone | Propose Pull Request | Comment in Tickets / Discussions | Triage | Review | Commit | Technical Decisions | Project Decisions |
| ----------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ | ------------------------------------ |
| User | None | Anyone downloading, deploying, or operating the software to meet a specific objective. | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Contributor | None | Anyone providing input to the project, including: code, issues, documentation, graphics, etc. | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Triager | Contributor | Subset of contributors demonstrating a strong familiarity with the project. | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Collaborator | Contributor | Subset of contributors granted write access to one or more of the project repositories upon selection by TSC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Technical Steering Committee Member | Collaborator | A subset of collaborators having technical decision making authority and admin privileges | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Project Steering Committee Member | Stakeholders | Sponsor organization representatives (i.e. those providing funding to the project) and key stakeholders with authority to guide project based on requirements, budget, schedule, etc. | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Product Manager | Stakeholders | Overall manager of project with final authority over all key decisions when consensus cannot be reached | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |

### User

Anyone who has downloaded, deployed, or operated [INSERT PROJECT NAME] to meet a specific objective. This project was primarily designed for [INSERT DESCRIPTION OF PROJECT PURPOSE], but let us know if you've found other uses for it.

### Contributor

Contributors include anyone that provides input to the project. This includes code, issues, documentation, graphics, designs, or anything else that tangibly improves the project. We encourage you to start contributing right away by joining our [Discussions]([INSERT LINK TO DISCUSSION BOARD OR MAILING LIST(S)]) or submitting an [Issue]([INSERT LINK TO ISSUE TRACKING SYSTEM]).

### Triager

Subset of contributors who have demonstrated a strong familiarity with the project and are regularly contributing to the project via issue creation, commenting, discussions, etc. Triagers are given specific permissions do the following:

- Label issues and pull requests
- Comment, close, and reopen issues and pull requests

[List of current Triagers]([INSERT LINK TO GITHUB, GITLAB, ETC. TEAM ASSOCIATED WITH TRIAGERS])

### Collaborator

Subset of contributors who have been given write access to one or more project repositories. Both contributors and collaborators can propose changes to the project via pull requests, but only collaborators can formally review and approve (merge) these requests. Any contributor who has made a non-trivial contribution should be on-boarded as a collaborator in a timely manner.

If you are planning on making a substantial contribution to the project or feel as though you should be given write access to a repository, please send a request to [INSERT LINK TO EMAIL/GITHUB USER HANDLE]

[List of current collaborators]([INSERT LINK TO GITHUB, GITLAB, ETC. TEAM ASSOCIATED WITH COLLABORATORS])

### Technical Steering Committee Member

A subset of the collaborators forms the Technical Steering Committee (TSC). The TSC has authority over the following aspects of this project:

- Technical direction and guidance
- Committee governance and process
- Contribution policy
- Conduct guidelines
- Maintaining the list of collaborators

#### TSC Committee Members
- [INSERT MEMBER NAME] ([username1]([INSERT LINK TO USERNAME]), [INSERT ORG ASSOCIATION]
- [INSERT MEMBER NAME] ([username1]([INSERT LINK TO USERNAME]), [INSERT ORG ASSOCIATION]


<details>

<summary>Emeriti</summary>

#### TSC Emeriti
- [INSERT MEMBER NAME] ([username1]([INSERT LINK TO USERNAME]), [INSERT ORG ASSOCIATION]

</details>

#### Scope

The TSC is primarily responsible for the following project repositories:

- [INSERT LINK TO PROJECT REPOSITORIES]

However, the TSC also has the responsibility to interface with and monitor third-party dependencies of the project for key changes impacting [INSERT PROJECT NAME]. These third-party dependencies include:

- [INSERT LINK TO DEPENDENT PROJECT REPOSITORIES]


#### Decision Making Process

Any community member can create an issue or comment asking the TSC to review something. Prior to implementing a substantial contribution, the design of that contribution should be reviewed by at least one member of the TSC. If consensus-seeking fails during the review of a pull request or in design discussions, the issue will be addressed by the TSC to make a determination on direction. TSC members will meet regularly and will keep track of decisions made when consensus was not met.

The TSC can nominate new members at any time. Candidates for membership tend to be collaborators who have shown great dedication to the project and/or experts in a particular domain or project component. TSC members are expected to be active contributors or members who have made significant contributions within the past 12 months.

### Project Management Committee (PMC) Member

The Project Management Committee (PMC) is made up of sponsor organization representatives (i.e. those providing funding to the project) and key stakeholders who rely or plan to rely on the project to meet a critical need. The PMC has the following responsibilities:

- Maintaining the overall project roadmap
- Determining project requirements and commitments to sponsors and stakeholders
- Assessing available resources and allocating them across the project
- Monitoring and reporting on progress against the roadmap
- On-boarding new sponsors and stakeholders
- Overall project governance (including this policy)
- Addressing any legal considerations

#### PMC Committee Members
- [INSERT MEMBER NAME] ([username1]([INSERT LINK TO USERNAME]), [INSERT ORG ASSOCIATION]
- [INSERT MEMBER NAME] ([username1]([INSERT LINK TO USERNAME]), [INSERT ORG ASSOCIATION]

<details>

<summary>Emeriti</summary>

#### PMC Emeriti
- [INSERT MEMBER NAME] ([username1]([INSERT LINK TO USERNAME]), [INSERT ORG ASSOCIATION]

</details>

#### Scope

The PMC has management authority over the same project repositories over which the TSC has technical authority over.

#### Decision Making Process

The PMC will consist of a product manager and additional representative from sponsors and key stakeholders. The PMC or sponsoring organizations can nominate new members at any time. Care should be taken not to include too many members from a single stakeholder project or organization.

Regular stakeholder meetings are held to discuss current project status and propose changes to the project roadmap. If stakeholder representatives and sponsors concur with these proposals during the meeting, they will be immediately adopted. A member of the PMC will ensure the changes have been captured and recorded. Regular stakeholder meetings will be open to the entire community, but only members of the PMC have decision making authority.

Additional meetings may be held if consensus is not met or to discuss significant changes to the roadmap due to changes in stakeholder priorities or available resources. Any decision made outside of stakeholder meetings must still be approved by all sponsors and stakeholders. If full consensus cannot be made, the product manager has the final authority to determine project direction. Any non-concurrences from stakeholders or sponsors will be noted.

### Product Manager

Overall manager of the project with final authority over all key decisions when consensus cannot be reached within the TSC or PSC. The product manager is often chosen at the onset of project initiation and can be reassigned by the PMC (with institutional approval, if applicable).

# Acknowledgements

Much of this governance model was adapted from the other notable open source projects including [node.js](https://github.com/nodejs/node/blob/main/GOVERNANCE.md), [OpenSSL](https://www.openssl.org/policies/omc-bylaws.html), [PostgresQL](https://www.postgresql.org/developer/), and [OpenMCT](https://github.com/nasa/openmct/blob/master/CONTRIBUTING.md). We would like to thank those projects for setting the foundation upon which this model was built.



26 changes: 26 additions & 0 deletions documentation/starter-kits/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,32 @@

This page contains starter kit information, which represent templates, code and configuration to help you get started quickly with documentation best practices described in this overall guide. Please see categories and links below for details.

## Governance

Project governance can be defined as the institutional mechanisms by which a project is organized and enacted. It consists of a set of roles, decision-making process and limitations that can be expected with how a project functions day-to-day and how that project interacts with new and existing contributors.

### Governance Model (Markdown)

This governance model template seeks to generalize how most government-sponsored open source projects can expect to operate in the open source arena. It is targeted towards medium and large-sized teams. This template governance model can be included in your repository under the file name `GOVERNANCE.md`. There are two key philosophies behind this governance model to keep note of:
- Liberal acceptance, encouragement and promotion of open source contributors from the public
- Retention of decision-making authority to sources of funding

Template:
- [Markdown](https://github.com/nasa-ammos/slim/blob/main/documentation/starter-kits/GOVERNANCE/GOVERNANCE.md) of template

To leverage this template, make sure to do the following:
1. Talk with your team (including stakeholders) about leveraging this template, and seek wide agreement before you adopt. In particular, ensure there's buy-in for the philosophy of the governance approach (i.e. liberal acceptance of contributors) and role-based committees for governing (i.e. technical / project steering committees).
2. Copy the template text and place in a file within your repository called `GOVERNANCE.md`
3. Search and replace the `[INSERT ...` text within the file with specifics for your project
4. Add a link to the `GOVERNANCE.md` to your `README.md` file within the `Contributing` section

This template was developed by evaluating best `GOVERNANCE.md` practices in the following organizations:
- [NASA AMMOS AERIE](https://github.com/NASA-AMMOS/aerie/blob/develop/docs/GOVERNANCE.md)
- [node.js](https://github.com/nodejs/node/blob/main/GOVERNANCE.md)
- [OpenSSL](https://www.openssl.org/policies/omc-bylaws.html)
- [PostgresQL](https://www.postgresql.org/developer/)
- [OpenMCT](https://github.com/nasa/openmct/blob/master/CONTRIBUTING.md)

## README

This section contains links to sample `README.md` templates that can be used to help developers and users understand your repository concisely and clearly. For each readme template provided below, see the `Markdown` version for the raw template which you can copy/paste into your own `README.md`, and see the `Demo` for a working example of the template in action.
Expand Down
5 changes: 5 additions & 0 deletions documentation/starter-kits/READMEs/README-sw-proj-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,11 @@ For guidance on how to interact with our team, please see our code of conduct lo

<!-- ☝️ Replace with a text describing how people may contribute to your project, or link to your contribution guide directly ☝️ -->

[INSERT LINK TO YOUR GOVERNANCE.md OR SHARE TEXT HERE]
<!-- example link to GOVERNANCE.md>
For guidance on our governance approach, including decision-making process and our various roles, please see our governance model at: [GOVERNANCE.md](GOVERNANCE.md)
-->

## License

See our: [LICENSE](LICENSE)
Expand Down