Skip to content

Commit

Permalink
Update governance (#1307)
Browse files Browse the repository at this point in the history
* Update governance

Signed-off-by: Jim Bugwadia <[email protected]>

* fix links

Signed-off-by: Jim Bugwadia <[email protected]>

* update main page and add sub-projects

Signed-off-by: Jim Bugwadia <[email protected]>

* Update content/en/_index.md

Signed-off-by: shuting <[email protected]>

---------

Signed-off-by: Jim Bugwadia <[email protected]>
Signed-off-by: shuting <[email protected]>
Co-authored-by: shuting <[email protected]>
  • Loading branch information
JimBugwadia and realshuting authored Jul 17, 2024
1 parent 6bf9300 commit bbdb8dc
Show file tree
Hide file tree
Showing 8 changed files with 74 additions and 179 deletions.
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ Kyverno maintains a thriving community with two different opportunities to parti

#### Community Meetings

For the available Kyverno meetings, see [here](https://kyverno.io/community/#community-meetings).
For the available Kyverno meetings, see [here](https://kyverno.io/community/#meetings).

## Developer Certificate of Origin (DCO) Sign off

Expand Down
22 changes: 12 additions & 10 deletions content/en/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ linkTitle = "Kyverno"
+++

{{< blocks/cover title="Kyverno" image_anchor="top" height="full" color="dark" >}}
# Kubernetes Native Policy Management { class="text-center" }
# Cloud Native Policy Management { class="text-center" }

<div class="mt-5 mx-auto">
<a class="btn btn-lg btn-primary mr-3 mb-4" href="#kyverno-is-a-policy-engine-designed-for-kubernetes">
<a class="btn btn-lg btn-primary mr-3 mb-4" href="#about-kyverno">
Learn More <i class="fa fa-chalkboard-teacher ml-2"></i>
</a>
<a class="btn btn-lg btn-secondary mr-3 mb-4" href="docs/introduction/#quick-start-guides">
Get Started <i class="fa fa-arrow-alt-circle-right ml-2 "></i>
</a>

<a class="btn btn-link text-info" href="#kyverno-is-a-policy-engine-designed-for-kubernetes" aria-label="Read more"><i class="fa fa-chevron-circle-down" style="font-size: 400%"></i></a>
<a class="btn btn-link text-info" href="#about-kyverno" aria-label="Read more"><i class="fa fa-chevron-circle-down" style="font-size: 400%"></i></a>

</div>
{{< /blocks/cover >}}
Expand All @@ -23,18 +23,20 @@ linkTitle = "Kyverno"
{{% blocks/lead color="light" %}}
<br/>

# Kyverno is a policy engine **designed for Kubernetes** { class="text-center" }

# About Kyverno { class="text-center" }
<br/>
<br/>

Policies are managed as Kubernetes resources and **no new language is required** to write policies.

This allows using familiar tools such as <code style="font-size: 1.35rem">kubectl</code>, <code style="font-size: 1.35rem">git</code>, and <code style="font-size: 1.35rem">kustomize</code> to manage policies.
<h2>
Kyverno is a policy engine built for Kubernetes and cloud native environments.
</h2>
<br/>

Kyverno policies can **validate, mutate, generate, and cleanup** Kubernetes resources, and **verify image** signatures and artifacts to help secure the software supply chain.
<p style="line-height:1.5">
Kyverno policies are declarative Kubernetes resources and <b>no new language</b> is required to write policies. This allows using familiar tools such as <code style="font-size: 1.35rem">kubectl</code>, <code style="font-size: 1.35rem">git</code>, and <code style="font-size: 1.35rem">kustomize</code> to manage policies. Kyverno policies can <b>validate, mutate, generate, and cleanup</b> any Kubernetes resource, including custom resrources. To help secure the software supply chain Kyverno policies can <b>verify OCI container image signatures and artifacts</b>.

The Kyverno CLI can be used to test policies and validate resources as part of a **CI/CD pipeline**.
The **Kyverno CLI** can be used to test policies and validate resources off-cluster e.g. as part of a CI/CD pipeline. Kyverno policy reports and policy exceptions are also Kubernetes resources. The **Policy Reporter** provides in-cluster report management with a grapgical web-based user interface. **Kyverno JSON** allows applying Kyverno policies in non-Kubernetes environments and on any JSON payload. **Kyverno Chainsaw** provides declarative end-to-end testing for policies and controllers.
</p>

<div class="mt-5 mx-auto">
<a class="btn btn-lg btn-primary mr-3 mb-4" href="docs/introduction/">
Expand Down
2 changes: 1 addition & 1 deletion content/en/blog/releases/1-10-0/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,6 @@ For these breaking changes, and others, please carefully read the extensive and

## Closing

Kyverno 1.10 is quite the loaded release as you can probably see. After about four months and close to 500 PRs, there were a tremendous number of changes from the Kyverno community. And if you were one of the many, many contributors who pitched in to make this release a reality, a hearty THANK YOU for all your work! Hopefully what you've seen makes you excited to try out 1.10 for yourself. Come engage with us in the Kyverno channel on [Kubernetes Slack](/community/#slack-channel), attend one of our [community meetings](/community/#community-meetings), or just catch us on [Twitter](https://twitter.com/kyverno).
Kyverno 1.10 is quite the loaded release as you can probably see. After about four months and close to 500 PRs, there were a tremendous number of changes from the Kyverno community. And if you were one of the many, many contributors who pitched in to make this release a reality, a hearty THANK YOU for all your work! Hopefully what you've seen makes you excited to try out 1.10 for yourself. Come engage with us in the Kyverno channel on [Kubernetes Slack](../../../community/_index.md#slack-channel), attend one of our [community meetings](../../../community/_index.md#meetings), or just catch us on [Twitter](https://twitter.com/kyverno).

And if you're already a Kyverno adopter, sign up to be an official adopter by updating the Adopters form [here](https://github.com/kyverno/kyverno/blob/main/ADOPTERS.md).
2 changes: 1 addition & 1 deletion content/en/blog/releases/1-9-0/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,4 +140,4 @@ One change we do want to make you aware of, which actually came in 1.8.3, which

## Closing

With so many new features, enhancements, and well over 200 fixes, there's so much to get excited about in this release. Hopefully what you've seen makes you excited to try out the 1.9 release and provide your feedback. Come engage with us in the Kyverno channel on [Kubernetes Slack](../../../community/_index.md#slack-channel), attend one of our [community meetings](../../../community/_index.md#community-meetings), or just catch us on [Twitter](https://twitter.com/kyverno).
With so many new features, enhancements, and well over 200 fixes, there's so much to get excited about in this release. Hopefully what you've seen makes you excited to try out the 1.9 release and provide your feedback. Come engage with us in the Kyverno channel on [Kubernetes Slack](../../../community/_index.md#slack-channel), attend one of our [community meetings](../../../community/_index.md#meetings), or just catch us on [Twitter](https://twitter.com/kyverno).
171 changes: 5 additions & 166 deletions content/en/community/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ The [Kyverno source code](https://github.com/kyverno/kyverno/) and project artif

Kyverno maintains a thriving community with two different opportunities to participate. The largest is the [Kubernetes Slack workspace](https://slack.k8s.io/#kyverno), where end-users engage in the [#kyverno](https://slack.k8s.io/#kyverno) channel and contributors collaborate in the [#kyverno-dev](https://slack.k8s.io/#kyverno-dev) channel. The other is the [CNCF Slack workspace](https://cloud-native.slack.com/#kyverno), where the [#kyverno](https://slack.k8s.io/#kyverno) channel is dedicated to end-user interactions.

## Community Meetings
## Meetings

The Kyverno project holds two weekly meetings:

### Community Meeting

Expand All @@ -27,22 +29,11 @@ To attend our community meetings, join the [Kyverno group](https://groups.google

This is a public, weekly meetings for maintainers to discuss issues and PRs pertaining to Kyverno's development and roadmap.

Topics are proposed by maintainers. Contributors and end users are welcome to attend and contributors, but may not propose new agenda items here but instead add to the [community meeting](#community-meeting) agenda.
Topics are proposed by maintainers. All in the community are welcome to attend, but non-maintainers may not propose new agenda items in this forum (they can instead to the [community meeting](#community-meeting) agenda.

- Weekly every Tuesday at 7:30 AM PST
- [Agenda and meeting notes](https://docs.google.com/document/d/1I_GWsz32gLw8sQyuu_Wv0-WQrtRLjn9FuX2KGNkvUY4/edit?usp=sharing)


### Nirmata Office Hours

This is a monthly meeting for the broader community where the Kyverno maintainers from [Nirmata](https://nirmata.com/) cover one or more topics with preference given to open community discussion, question and answer, etc.

The meeting is live streamed on YouTube with recordings available after. Either join in person or attend in view-only mode:

- Monthly on the second Thursday at 7:00 AM PST
- [GitHub repository](https://github.com/nirmata/office-hours-for-kyverno)


## Get in touch

If you are unable to attend a community meeting, feel free to reach out anytime on the [Kyverno Slack channel in the Kubernetes workspace](https://slack.k8s.io/#kyverno), or the Kyverno [mailing list](https://groups.google.com/g/kyverno).
Expand Down Expand Up @@ -71,156 +62,4 @@ To participate, fill out the [Kyverno adopters form](https://forms.gle/K5CApcBAD

## Project Governance

This document highlights the roles and responsibilities for the Kyverno community members. It also outlines the requirements for anyone who is looking to take on leadership roles in the Kyverno project. The following governance applies to all Kyverno subprojects.

**Note:** Please make sure to read the CNCF [Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).

### Project Roles

The table below summarizes project roles and responsibilities. Details are provided in the sections following the table:

| Role | Requirements | Ongoing Responsibilities | Defined by |
| ------------ | --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Contributors | At least five (5) contributions to the project. | None | CONTRIBUTORS.md |
| Code Owner | At least ten (10) significant contributions and appointed by 2 maintainers. Highly experienced and active reviewer + contributor to a subproject. | Active contributions, assist maintainers, review and approve contributions.| Maintainers, [CODEOWNERS](https://help.github.com/en/articles/about-code-owners), GitHub organization member. |
| Maintainer | Highly experienced and active contributor + Kyverno Certification + Voted in by Kyverno maintainers. | Code Owner, monitor project growth, set direction and priorities for a subproject. | Voted in by the Kyverno maintainers, listing in `MAINTAINERS.md`, GitHub organization member, and repository owner. |

#### Contributors

Contributors are individuals who have made at least five (5) contributions to the project; by authoring PRs, commenting on issues and pull requests, and participating in community discussions on Slack or the mailing list.

**Checklist before becoming a Contributor**

- Have at least five (5) PRs successfully merged for any repositories under the Kyverno organization
- Member of the kyverno channel on Kubernetes and/or CNCF Slack
- Attended one (1) Contributors Meeting as documented
- Registered for the Kyverno [mailing list](https://groups.google.com/g/kyverno)

**Privileges of a Contributor**

- Listed in the file in at least one (1) organization repository
- Kyverno contributor badge issued

To join the Kyverno project as a Contributor create a Pull Request (PR) in the [Kyverno repository](https://github.com/kyverno/kyverno) with the following:
1. Changes to add yourself to the [CONTRIBUTORS.md](https://github.com/kyverno/kyverno/blob/main/CONTRIBUTORS.md) file.
2. Links to your prior contributions (at least five).
3. Links to slack discussions, issue comments, etc.

#### Code Owners

Code Owners are a special type of contributor and have _significantly_ contributed and maintain an _active_ status within the organization. They can have issues and PRs assigned to them and are responsible for providing PR reviews. Unlike Contributors, Code Owners have responsibilities and must maintain an active status defined below to remain a Code Owner.

**Checklist before becoming a Code Owner**

- Have at least ten (10) significant PRs successfully merged for any combination of repositories under the Kyverno organization
- Member of the kyverno channel on Kubernetes and/or CNCF Slack
- Attended five (5) Contributors Meetings as documented
- Registered for the Kyverno [mailing list](https://groups.google.com/g/kyverno)
- Create a pull request to add self to `CODEOWNERS` file in at least one (1) repository
- Attained a minimum of two (2) positive votes from maintainers
- Respond to reviews from maintainers on pull requests

**Responsibilities of a Code Owner**

- Maintain an active status in a three (3) month period to include any of the following:
- One (1) PR filed
- Any request for PR review responded to
- One (1) issue or PR responded to
- One (1) Slack thread responded to
- Two (2) attendance at weekly Contributors Meetings

**Privileges of a Code Owner**

- Listed as an organization member
- Listed in `CODEOWNERS` in at least one (1) repository
- Kyverno contributor badge issued
- Have issues assigned to them
- Have PRs assigned to them

**On-boarding Criteria**

- Voted in by a majority of current maintainers, raised in a PR by the proposed member to add themselves to `CODEOWNERS`, during a voting period lasting seven (7) days

**Off-boarding Criteria**

- Voted out by a majority of current maintainers via a GitHub issue during a voting period lasting seven (7) days. A vote may be called by any maintainer after the point at which the responsibilities have not been met. A positive vote will result in removal from `CODEOWNERS` and from organization membership.

#### Maintainers

Maintainers are individuals who go beyond the status of code owner who have shown good technical judgement in feature design/development in the past. Maintainers have overall knowledge of the project and features in the project. They can read, clone, and push to the repository. They can also manage issues, pull requests, and some repository settings.

[Maintainers](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#repository-access-for-each-permission-level) are the technical authority for a subproject and are considered leaders for the organization as a whole. They must have demonstrated both good judgement and responsibility towards the health of the subproject. Maintainers must set technical direction and make or approve design decisions for their subproject, either directly or through delegation of these responsibilities. Unlike contributors and code owners, maintainers have the highest degree of responsibility and ownership for the project. Maintainer status may be subject to a vote and, if the minimum level of activity is not maintained, may be moved to an _emeritus_ status.

**Checklist before becoming a Maintainer:**

- Proficient in GitHub, YAML, Markdown, and Git
- Exhibits strong attention to detail when reviewing commits and provides generous guidance and feedback
- Helps others achieve their goals with open-source and community contributions
- Understands the workflow of the Issues and Pull Requests
- Makes consistent contributions to the Kyverno project
- Consistently initiates and participates in [Kyverno discussions](https://slack.k8s.io/#kyverno)
- Has knowledge and interest that aligns with the overall project goals, specifications, and design principles of the Kyverno project
- Makes contributions that are considered notable
- Demonstrates ability to help troubleshoot and resolve user issues
- Has achieved the Kyverno Certification or demonstrated an equivalent mastery of Kyverno
- Meets or exceeds all the requirements of a Code Owner
- Maintains an active status as a Code Owner for a period of six (6) months

**Responsibilities of a Maintainer**

- All the responsibilities of a Code Owner
- Tracks and ensures adequate health of the modules and subprojects they are in charge of
- Ensures adequate test coverage to confidently release new features and fixes
- Ensures that tests are passing reliably (i.e. not flaky) and are fixed when they fail
- Mentors and guides code owners, reviewers, and contributors
- Actively participates in the processes for discussion and decision making in the project
- Merges Pull Requests and helps prepare releases
- Makes and approves technical design decisions for the subproject
- Helps define milestones and releases
- Decides on when PRs are merged to control the release scope
- Works with other maintainers to maintain the project's overall health and success holistically

**Privileges of a Maintainer**

- Privileges of a Code Owner
- Receives a Kyverno Maintainer Badge
- Listed in `MAINTAINERS.md`

**On-boarding Criteria**

- Voted in by a majority of current maintainers, raised in a PR by the proposed member to add themselves to `MAINTAINERS.md`, during a voting period lasting seven (7) days

**Off-boarding Criteria**

An off-boarding vote may be called by any maintainer if any of the following criteria are met:
- A maintainer has made less than 30 contributions over a span of 6 months.
- Contributions can be tracked using the [DevStats dashboard](https://kyverno.devstats.cncf.io/d/66/developer-activity-counts-by-companies?orgId=1&var-period_name=Last%206%20months&var-metric=contributions&var-repogroup_name=All&var-country_name=All&from=1522810884223&to=1680577284223&var-companies=All).
- Other relevant data will be collected and evaluated to assess the maintainer's contributions. This includes their involvement in discussions, conversations on Slack, and any other relevant interactions.

The off-boarding process includes the following steps:
- The off-boarding process is initiated by any currently active maintainer who conducts a review of the maintainers list and proceeds to initialize the off-boarding process if the above criteria are met.
- The plans of off-boarding process is sent in a private Slack message or email to the candidate.
- If the candidate for removal states plans to continue participating, another 6 months will be granted to the candidate to make contributions and the new cycle starts. No action is taken and this process terminates.
- If the candidate fails to meet the criteria during the second attempt to make contributions, the off-boarding process continues.
- A pull request (PR) proposing movement of the candidate is sent, initiating the public voting phase.
- The vote passes if a majority of current maintainers vote yes during a voting period lasting seven (7) days.
- A positive vote will result in movement to an _emeritus_ status within `MAINTAINERS.md` and removal from organization membership.

#### Admins

These are persons who have full access to the project, including sensitive and destructive actions like managing security or deleting a repository. Admins can read, clone, and push to this repository. They can also manage issues, pull requests, and repository settings, including adding collaborators.

#### Mapping Project Roles to GitHub Roles

The roles used in this document are custom roles mapped according to the [GitHub roles and responsibilities](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization).

| Project Role | GitHub Role |
| -------------- | -------------- |
| Contributor | Triage |
| Code Owner | Write |
| Maintainer | Maintain |
| Administrator | Admin |

### Off-boarding Guidance

If any of the above roles hasn't contributed in any phases (including, but not limited to: code changes, doc updates, issue discussions) in 3 months, the administrator needs to inform the member and remove one's roles and GitHub permissions.
[Kyverno and its sub-projects](https://github.com/kyverno#projects) follow the governance published and maintained at https://github.com/kyverno/community/blob/main/GOVERNANCE.md.
Loading

0 comments on commit bbdb8dc

Please sign in to comment.