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

Proposal: Kyverno to Graduation #1217

Closed
wants to merge 7 commits into from
Closed
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
391 changes: 391 additions & 0 deletions .github/ISSUE_TEMPLATE/graduation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,391 @@
---
name: Project Graduation Application
about: This template provides the project with a framework to inform the TOC of their conformance to the Graduation Level Criteria.
title: "[Graduation] $PROJECT Graduation Application"
labels: graduation
---

# Kyverno Graduation Application

Project Repo(s): https://github.com/kyverno/kyverno (subprojects are under https://github.com/kyverno)
Project Site: https://kyverno.io/
Sub-Projects: kyverno-json, chainsaw, policy-reporter, reports-server, kyverno-envoy-plugin, playground
Communication: #kyverno, #kyverno-dev on Kubernetes Slack, #kyverno on CNCF slack, [community meetings](https://kyverno.io/community/#community-meetings), mailing list ([email protected])

Project points of contacts:
* Shuting Zhao, [email protected]
* Jim Bugwadia, [email protected]
* Kyverno maintainers mailing list: [email protected]
* #kyverno-dev channel on Kubernetes Slack

## Graduation Criteria Summary for Kyverno

### Adoption Assertion

_The project has been adopted by the following organizations in a testing and integration or production capacity:_

### Criteria

## Application Process Principles

### Suggested

N/A

### Required

- [ ] **Give a presentation and engage with the domain specific TAG(s) to increase awareness**
- [ ] TAG Security
- [ ] TAG Contributor Strategy

<!-- (Project assertion goes here) -->

- [ ] **TAG provides insight/recommendation of the project in the context of the landscape**

<!-- (Project assertion goes here) -->

- [x] **All project metadata and resources are [vendor-neutral](https://contribute.cncf.io/maintainers/community/vendor-neutrality/).**

Kyverno follows the CNCF vendor neutrality guidelines, [link](https://github.com/kyverno/community/blob/main/GOVERNANCE.md#vendor-neutrality).

<!-- (Project assertion goes here) -->

- [x] **Review and acknowledgement of expectations for graduated projects and requirements for moving forward through the CNCF Maturity levels.**
- [x] Met during Project's application on 08-12-2023, initial Graduation PR [Proposal: Kyverno to Graduation #1217](https://github.com/cncf/toc/pull/1217)

<!-- (Project assertion goes here) -->

Completion of this due diligence document, resolution of concerns raised, and presented for public comment satisifies the Due Diligence Review criteria.

- [x] **Additional documentation as appropriate for project type, e.g.: installation documentation, end user documentation, reference implementation and/or code samples.**

<!-- (Project assertion goes here) -->

## Governance and Maintainers

Note: this section may be augmented by the completion of a Governance Review from TAG Contributor Strategy.

### Suggested

- [x] **Governance has continuously been iterated upon by the project as a result of their experience applying it, with the governance history demonstrating evolution of maturity alongside the project's maturity evolution.**

<!-- (Project assertion goes here) -->

The strategies for major Project Governance were discussed and refined during the Kyverno maintainers' meeting. You can find the meeting notes [here](https://docs.google.com/document/d/1I_GWsz32gLw8sQyuu_Wv0-WQrtRLjn9FuX2KGNkvUY4/edit):
* 05-21-2024
* 02-20-2024
* 12-05-2023

The Governance page has been maintained and updated through kyverno/community Github repo, link:

https://github.com/kyverno/community/blob/main/GOVERNANCE.md

### Required

- [x] **Clear and discoverable project governance documentation.**

<!-- (Project assertion goes here) -->

* [Project Governance](https://main.kyverno.io/community/#project-governance).
* https://github.com/kyverno/community/blob/main/GOVERNANCE.md

- [x] **Governance is up to date with actual project activities, including any meetings, elections, leadership, or approval processes.**

<!-- (Project assertion goes here) -->

Governance docs are up to date and available at https://kyverno.io/community/.

- [x] **Governance clearly documents [vendor-neutrality](https://contribute.cncf.io/maintainers/community/vendor-neutrality/) of project direction.**

Kyverno follows the CNCF vendor neutrality guidelines, [link](https://github.com/kyverno/community/blob/main/GOVERNANCE.md#vendor-neutrality).

<!-- (Project assertion goes here) -->

- [ ] **Document how the project makes decisions on leadership roles, contribution acceptance, requests to the CNCF, and changes to governance or project goals.**

<!-- (Project assertion goes here) -->

- [x] **Document how role, function-based members, or sub-teams are assigned, onboarded, and removed for specific teams (example: Security Response Committee).**

<!-- (Project assertion goes here) -->

[Project roles](https://kyverno.io/community/#project-roles).

- [x] **Document complete list of current maintainers, including names, contact information, domain of responsibility, and affiliation.**

<!-- (Project assertion goes here) -->

[Maintainers](https://github.com/kyverno/kyverno/blob/main/MAINTAINERS.md).

- [x] **A number of active maintainers which is appropriate to the size and scope of the project.**

<!-- (Project assertion goes here) -->

The Kyverno project had eight (8) maintainers from (4) affiliations at the time this PR was created, but with recent changes now has five (5) maintainers from one (1) affiliation. We are in actively discussing this situation to determine the best path forward.

- [x] **Document a complete maintainer lifecycle process (including roles, onboarding, offboarding, and emeritus status).**

<!-- (Project assertion goes here) -->

This is documented under [Maintainers](https://kyverno.io/community/#maintainers) section.

- [x] **Demonstrate usage of the maintainer lifecycle with outcomes, either through the addition or replacement of maintainers as project events have required.**

<!-- (Project assertion goes here) -->

The process of onboarding a maintainer is initiated by submitting a pull request.

For example, [feat: add myself (vishal-chdhry) to maintainers list #9125](https://github.com/kyverno/kyverno/pull/9125).

The same with offboarding process, and emeritus maintainers are listed at:

https://github.com/kyverno/kyverno/blob/main/MAINTAINERS.md#maintainers


- [ ] **Project maintainers from at least 2 organizations that demonstrates survivability.**

<!-- (Project assertion goes here) -->

Currently maintainers are from one (1) organizations, Nirmata.

- [x] **Code and Doc ownership in Github and elsewhere matches documented governance roles.**
- [x] [CODEOWNERS](https://github.com/kyverno/kyverno/blob/main/CODEOWNERS)
- [x] [Doc Owners](https://github.com/kyverno/website/blob/main/OWNERS.md)

<!-- (Project assertion goes here) -->

- [x] **Document agreement that project will adopt CNCF Code of Conduct.**

<!-- (Project assertion goes here) -->

Kyverno follows the [Code of Conduct](https://github.com/kyverno/kyverno/blob/main/CODE_OF_CONDUCT.md), which is aligned with the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md).


- [x] **CNCF Code of Conduct is cross-linked from other governance documents.**

<!-- (Project assertion goes here) -->

This is documented on Github [Code of Conduct](https://github.com/kyverno/kyverno/blob/main/GOVERNANCE.md#code-of-conduct) and Kyverno website under Project Governance, see [here](https://kyverno.io/community/#project-governance).

- [ ] **All subprojects, if any, are listed.**

<!-- (Project assertion goes here) -->


- [x] **If the project has subprojects: subproject leadership, contribution, maturity status documented, including add/remove process.**

<!-- (Project assertion goes here) -->

This is clarified in the [Project Governance section](https://github.com/kyverno/community/blob/main/GOVERNANCE.md).

## Contributors and Community

Note: this section may be augmented by the completion of a Governance Review from TAG Contributor Strategy.

### Suggested

- [x] **Contributor ladder with multiple roles for contributors.**

<!-- (Project assertion goes here) -->

This is defined in [Project Roles](https://kyverno.io/community/#project-roles).

### Required

- [x] **Clearly defined and discoverable process to submit issues or changes.**

<!-- (Project assertion goes here) -->

This is documented in [contributing guidelines](https://github.com/kyverno/kyverno/blob/main/CONTRIBUTING.md#contributing-guidelines-for-kyverno).

- [x] **Project must have, and document, at least one public communications channel for users and/or contributors.**

<!-- (Project assertion goes here) -->

This is documented in the [Slack Channel](https://kyverno.io/community/#slack-channel) section.


- [x] **List and document all project communication channels, including subprojects (mail list/slack/etc.). List any non-public communications channels and what their special purpose is.**

<!-- (Project assertion goes here) -->

Public channels:

[Kyverno Slack](https://kyverno.io/community/#slack-channel):
* #kyverno, #kyverno-dev under Kubernetes workspace
* #kyverno under CNCF workspace

[Kyverno Chainsaw Slack](https://github.com/kyverno/chainsaw?tab=readme-ov-file#slack-channels):
* #kyverno-chainsaw under Kubernetes workspaceunder Kubernetes workspace

Private channels:
* #kyverno-maintainers under CNCF workspace

- [ ] **Up-to-date public meeting schedulers and/or integration with CNCF calendar.**

<!-- (Project assertion goes here) -->

Meeting schedule can be found [here](https://kyverno.io/community/#community-meetings). I have reached out to CNCF to add weekly community meetings.

- [x] **Documentation of how to contribute, with increasing detail as the project matures.**

<!-- (Project assertion goes here) -->

[Contributing Guidelines](https://github.com/kyverno/kyverno/blob/main/CONTRIBUTING.md#contributing-guidelines-for-kyverno).

- [ ] **Demonstrate contributor activity and recruitment.**

New contributors are onboarded once they meet the requirements. We have integrated a welcome bot into the GitHub repository for their initial contributions.

The contributor's list is actively growing: https://github.com/kyverno/kyverno/blob/main/CONTRIBUTORS.md.

<!-- (Project assertion goes here) -->

## Engineering Principles

- [] **Document project goals and objectives that illustrate the project’s differentiation in the Cloud Native landscape as well as outlines how this project fulfills an outstanding need and/or solves a problem differently.**

<!-- (Project assertion goes here) -->

>Kubernetes Native Policy Management


- [x] **Document what the project does, and why it does it - including viable cloud native use cases.**

<!-- (Project assertion goes here) -->

Comprehensive documentation can be found here https://kyverno.io/.

- [x] **Document and maintain a public roadmap or other forward looking planning document or tracking mechanism.**

The roadmap is available in the Kyverno Github repo: https://github.com/kyverno/kyverno/blob/main/ROADMAP.md.

<!-- (Project assertion goes here) -->

- [ ] **Roadmap change process is documented.**

<!-- (Project assertion goes here) -->

- [x] **Document overview of project architecture and software design that demonstrates viable cloud native use cases, as part of the project's documentation.**

<!-- (Project assertion goes here) -->

This is available on the introduction page [here](https://kyverno.io/docs/introduction/).

- [x] **Document the project's release process and guidelines publicly in a RELEASES.md or equivalent file that defines:**

- [x] Release expectations (scheduled or based on feature implementation)
- [x] Tagging as stable, unstable, and security related releases
- [x] Information on branch and tag strategies
- [x] Branch and platform support and length of support
- [x] Artifacts included in the release.
- Additional information on topics such as LTS and edge releases are optional. Release expectations are a social contract between the project and its end users and hence changes to these should be well thought out, discussed, socialized and as necessary agreed upon by project leadership before getting rolled out.

<!-- (Project assertion goes here) -->

The release process is documented on the Kyverno website [release page](https://kyverno.io/docs/releases/).

- [x] **History of regular, quality releases.**

<!-- (Project assertion goes here) -->

Supported releases https://kyverno.io/docs/installation/#compatibility-matrix.

## Security

Note: this section may be augemented by a joint-assessment performed by TAG Security.

### Suggested

- [x] **Achieving OpenSSF Best Practices silver or gold badge.**

<!-- (Project assertion goes here) -->

[Kyverno](https://www.bestpractices.dev/en/projects?q=kyverno) passes the OpenSSF Best Practices evaluation at 135% (tiered).

### Required

- [x] **Clearly defined and discoverable process to report security issues.**

<!-- (Project assertion goes here) -->

This is documented in [SECURITY.md](https://github.com/kyverno/kyverno/blob/main/SECURITY.md).

- [x] **Enforcing Access Control Rules to secure the code base against attacks (Example: two factor authentication enforcement, and/or use of ACL tools.)**

<!-- (Project assertion goes here) -->

2FA required for GitHub org members.

- [x] **Document assignment of security response roles and how reports are handled.**

<!-- (Project assertion goes here) -->

This is documented in [SECURITY.md](https://github.com/kyverno/kyverno/blob/main/SECURITY.md).

- [ ] **Document Security Self-Assessment.**

<!-- (Project assertion goes here) -->

- [x] **Third Party Security Review.**

- [x] Moderate and low findings from the Third Party Security Review are planned/tracked for resolution as well as overall thematic findings, such as: improving project contribution guide providing a PR review guide to look for memory leaks and other vulnerabilities the project may be susceptible to by design or language choice ensuring adequate test coverage on all PRs.

<!-- (Project assertion goes here) -->

Kyverno completed the third-party security audit conducted by Ada logics:

https://kyverno.io/blog/2023/11/28/kyverno-completes-third-party-security-audit/

- [x] **Achieve the Open Source Security Foundation (OpenSSF) Best Practices passing badge.**

<!-- (Project assertion goes here) -->

Achieved https://www.bestpractices.dev/en/projects/5327.

## Ecosystem

### Suggested

N/A

### Required

- [x] **Publicly documented list of adopters, which may indicate their adoption level (dev/trialing, prod, etc.)**

<!-- (Project assertion goes here) -->

Public adopters are listed in [ADOPTERS.md](https://github.com/kyverno/kyverno/blob/main/ADOPTERS.md).

- [x] **Used in appropriate capacity by at least 3 independent + indirect/direct adopters, (these are not required to be in the publicly documented list of adopters)**

<!-- (Project assertion goes here) -->

The project provided the TOC with a list of adopters for verification of use of the project at the level expected, i.e. production use for graduation, dev/test for incubation.

- [ ] **TOC verification of adopters.**

<!-- (Project assertion goes here) -->

Refer to the Adoption portion of this document.

- [ ] **Clearly documented integrations and/or compatibility with other CNCF projects as well as non-CNCF projects.**

<!-- (Project assertion goes here) -->

#### Adoption

##### Adopter 1 - $COMPANY/$INDUSTRY

_If the Adopting organization needs to remain anonymous, stating the industry vertical is sufficient._
MONTH YEAR

##### Adopter 2 - $COMPANY/$INDUSTRY

_If the Adopting organization needs to remain anonymous, stating the industry vertical is sufficient._
MONTH YEAR

##### Adopter 3 - $COMPANY/$INDUSTRY

_If the Adopting organization needs to remain anonymous, stating the industry vertical is sufficient._
MONTH YEAR