Skip to content

Commit b077b8b

Browse files
committed
Consolidate project-review docs
Signed-off-by: Bob Killen <[email protected]>
1 parent 4fd86b2 commit b077b8b

File tree

5 files changed

+657
-0
lines changed

5 files changed

+657
-0
lines changed
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
# General Technical Review questions
2+
v1.0
3+
## Introduction
4+
5+
The General Technical Review questions can be completed by a project in lieu of a presentation to a Technical Advisory Group (TAG) as well as to satisfy the Engineering Principle requirements of a Sandbox application or Due Diligence for moving levels.
6+
7+
The questions are designed to prompt **_design thinking_** for projects that would like to one day be a graduated project.
8+
9+
The intent is to understand how the project has adopted and aligned with the CNCF maturation levels as well as encourage good design & security best practices.
10+
11+
12+
<!--
13+
The General Technical Review questions can be completed by a project team in lieu of a presentation to a Technical Advisory Group (TAG) as well as to satisfy several of the Engineering Principle requirements for applying to CNCF Sandbox as well as applying to move to Incubation and Graduation.
14+
15+
For the purposes of the general technical review and further domain reviews, the questions are designed to prompt design thinking for ready-for-production projects and architecture. The intent is to understand and validate the cloud native software lifecycle of the project and whether it is in line with the CNCF Maturation process and levels.
16+
17+
Project maintainers are expected to have designed the project for cloud native use cases and workloads, as well as taking a ‘secure by design and secure by default’ approach that enables adopters and consumers of the project the ability to ‘loosen’ the defaults in a manner that suits their environment, requirements and risk tolerance.
18+
19+
These questions are to gather knowledge about the project. Project maintainers are expected to answer to the best of their ability. **_Not every question will be addressable by every project._**
20+
21+
**Suggestion:** A recorded demo or diagram(s) may be easier to convey some of the concepts in the questions below. The project maintainers may provide a link to a recorded demo or add architectural diagrams along with your GTR questionnaire.
22+
23+
-->
24+
25+
### General Technical Review questions
26+
27+
The questions follow the cloud native software lifecycle day schemas:
28+
29+
**Day 0 - Planning Phase. (Sandbox)** - This phase covers design and architecture of the cloud native project.
30+
31+
**Day 1 - Installation and Deployment Phase (Incubation)** - This phase covers initial installation and deployment of the design developed during Day 0 - Planning Phase.
32+
33+
**Day 2 - Day-to-Day Operations Phase (Graduated)** - This phase covers post-deployment operations in production-ready environments to include monitoring, maintenance, auditing and troubleshooting.
34+
35+
36+
### How to use this template
37+
38+
Make a copy of the template below and answer questions related to your project level to the best of your ability.
39+
_**Not every question will be addressable or relevant to every project.**_
40+
If this is the case for your project, please mark it as not-applicable (N/A) and provide a brief explanation.
41+
42+
**NOTE:** The questions are cumulative e.g. if you are applying for incubation or graduation, you should answer both day 0 and day 1 questions etc.
43+
44+
#### Tips
45+
46+
* Treat the GTR questionnaire as a living document and keep a copy of it in your project's own repo. The GTR questions are helpful to both contributors and users and will make updating it in the future less work when you want to apply to move levels.
47+
* Answer more questions than the requirement for your level if it _makes sense for your project_. e.g. if you have documentation covering the different forms of observability in the Day-2 requirements.
48+
* You **CAN** link out to your own project's documentation, but be sure to link to it in a _versioned_ form. e.g. link to it at a specific commit instead of the `main` branch, or versioned website.
49+
* A recorded demo or diagram(s) may be easier to convey some of the concepts in the questions below. You may provide a link to a recorded demo or add architectural diagrams along with your GTR questionnaire.
50+
* If you are unsure or have a question about any section below, **please ask**. Chances are you're not the only one with a question and the template should be updated with additional guidance.
51+
52+
---
53+
54+
# General Technical Review - [Project Name] / [Level]
55+
56+
- **Project:**
57+
- **Project Version:**
58+
- **Website:**
59+
- **Date Updated:** YYYY-MM-DD
60+
- **Template Version:** v1.0
61+
- **Description:** <!-- Short project description -->
62+
63+
64+
65+
## Day 0 - Planning Phase
66+
67+
### Scope
68+
69+
* Describe the roadmap process, how scope is determined for mid to long term features, as well as how the roadmap maps back to current contributions and maintainer ladder?
70+
* Describe the target persona or user(s) for the project?
71+
* Explain the primary use case for the project. What additional use cases are supported by the project?
72+
* Explain which use cases have been identified as unsupported by the project.
73+
* Describe the intended types of organizations who would benefit from adopting this project. (i.e. financial services, any software manufacturer, organizations providing platform engineering services)?
74+
* Please describe any completed end user research and link to any reports.
75+
76+
### Usability
77+
78+
* How should the target personas interact with your project?
79+
* Describe the user experience (UX) and user interface (UI) of the project.
80+
* Describe how this project integrates with other projects in a production environment.
81+
82+
### Design
83+
84+
* Explain the design principles and best practices the project is following.
85+
* Outline or link to the project’s architecture requirements? Describe how they differ for Proof of Concept, Development, Test and Production environments, as applicable.
86+
* Define any specific service dependencies the project relies on in the cluster.
87+
* Describe how the project implements Identity and Access Management.
88+
* Describe how the project has addressed sovereignty.
89+
* Describe any compliance requirements addressed by the project.
90+
* Describe the project’s High Availability requirements.
91+
* Describe the project’s resource requirements, including CPU, Network and Memory.
92+
* Describe the project’s storage requirements, including its use of ephemeral and/or persistent storage.
93+
* Please outline the project’s API Design:
94+
* Describe the project’s API topology and conventions
95+
* Describe the project defaults
96+
* Outline any additional configurations from default to make reasonable use of the project
97+
* Describe any new or changed API types and calls \- including to cloud providers \- that will result from this project being enabled and used
98+
* Describe compatibility of any new or changed APIs with API servers, including the Kubernetes API server
99+
* Describe versioning of any new or changed APIs, including how breaking changes are handled
100+
* Describe the project’s release processes, including major, minor and patch releases.
101+
102+
### Installation
103+
104+
* Describe how the project is installed and initialized, e.g. a minimal install with a few lines of code or does it require more complex integration and configuration?
105+
* How does an adopter test and validate the installation?
106+
107+
### Security
108+
109+
* Please provide a link to the project’s cloud native [security self assessment](https://tag-security.cncf.io/community/assessments/).
110+
* Please review the [Cloud Native Security Tenets](https://github.com/cncf/tag-security/blob/main/security-whitepaper/secure-defaults-cloud-native-8.md) from TAG Security.
111+
* How are you satisfying the tenets of cloud native security projects?
112+
* Describe how each of the cloud native principles apply to your project.
113+
* How do you recommend users alter security defaults in order to "loosen" the security of the project? Please link to any documentation the project has written concerning these use cases.
114+
* Security Hygiene
115+
* Please describe the frameworks, practices and procedures the project uses to maintain the basic health and security of the project.
116+
* Describe how the project has evaluated which features will be a security risk to users if they are not maintained by the project?
117+
* Cloud Native Threat Modeling
118+
* Explain the least minimal privileges required by the project and reasons for additional privileges.
119+
* Describe how the project is handling certificate rotation and mitigates any issues with certificates.
120+
* Describe how the project is following and implementing [secure software supply chain best practices](https://project.linuxfoundation.org/hubfs/CNCF\_SSCP\_v1.pdf)
121+
122+
## Day 1 \- Installation and Deployment Phase
123+
124+
### Project Installation and Configuration
125+
126+
* Describe what project installation and configuration look like.
127+
128+
### Project Enablement and Rollback
129+
130+
* How can this project be enabled or disabled in a live cluster? Please describe any downtime required of the control plane or nodes.
131+
* Describe how enabling the project changes any default behavior of the cluster or running workloads.
132+
* Describe how the project tests enablement and disablement.
133+
* How does the project clean up any resources created, including CRDs?
134+
135+
### Rollout, Upgrade and Rollback Planning
136+
137+
* How does the project intend to provide and maintain compatibility with infrastructure and orchestration management tools like Kubernetes and with what frequency?
138+
* Describe how the project handles rollback procedures.
139+
* How can a rollout or rollback fail? Describe any impact to already running workloads.
140+
* Describe any specific metrics that should inform a rollback.
141+
* Explain how upgrades and rollbacks were tested and how the upgrade-\>downgrade-\>upgrade path was tested.
142+
* Explain how the project informs users of deprecations and removals of features and APIs.
143+
* Explain how the project permits utilization of alpha and beta capabilities as part of a rollout.
144+
145+
## Day 2 \- Day-to-Day Operations Phase
146+
147+
### Scalability/Reliability
148+
149+
* Describe how the project increases the size or count of existing API objects.
150+
* Describe how the project defines Service Level Objectives (SLOs) and Service Level Indicators (SLIs).
151+
* Describe any operations that will increase in time covered by existing SLIs/SLOs.
152+
* Describe the increase in resource usage in any components as a result of enabling this project, to include CPU, Memory, Storage, Throughput.
153+
* Describe which conditions enabling / using this project would result in resource exhaustion of some node resources (PIDs, sockets, inodes, etc.)
154+
* Describe the load testing that has been performed on the project and the results.
155+
* Describe the recommended limits of users, requests, system resources, etc. and how they were obtained.
156+
* Describe which resilience pattern the project uses and how, including the circuit breaker pattern.
157+
158+
### Observability Requirements
159+
160+
* Describe the signals the project is using or producing, including logs, metrics, profiles and traces. Please include supported formats, recommended configurations and data storage.
161+
* Describe how the project captures audit logging.
162+
* Describe any dashboards the project uses or implements as well as any dashboard requirements.
163+
* Describe how the project surfaces project resource requirements for adopters to monitor cloud and infrastructure costs, e.g. FinOps
164+
* Which parameters is the project covering to ensure the health of the application/service and its workloads?
165+
* How can an operator determine if the project is in use by workloads?
166+
* How can someone using this project know that it is working for their instance?
167+
* Describe the SLOs (Service Level Objectives) for this project.
168+
* What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service?
169+
170+
### Dependencies
171+
172+
* Describe the specific running services the project depends on in the cluster.
173+
* Describe the project’s dependency lifecycle policy.
174+
* How does the project incorporate and consider source composition analysis as part of its development and security hygiene? Describe how this source composition analysis (SCA) is tracked.
175+
* Describe how the project implements changes based on source composition analysis (SCA) and the timescale.
176+
177+
### Troubleshooting
178+
179+
* How does this project recover if a key component or feature becomes unavailable? e.g Kubernetes API server, etcd, database, leader node, etc.
180+
* Describe the known failure modes.
181+
182+
### Security
183+
184+
* Security Hygiene
185+
* How is the project executing access control?
186+
* Cloud Native Threat Modeling
187+
* How does the project ensure its security reporting and response team is representative of its community diversity (organizational and individual)?
188+
* How does the project invite and rotate security reporting team members?
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Governance Reviewer Role Handbook
2+
3+
WIP: This guide is not complete, but the instructions it contains are a starting point.
4+
5+
# Goals
6+
7+
The goal of the Governance Review process is to help projects improve their own governance. As a reviewer, it is your goal to:
8+
9+
1. Perform one or more Governance Reviews in order to help projects complete their requirements for matriculation
10+
2. Assist projects in identifying areas where their governance could use improvement and carrying out that improvement
11+
12+
A successful Governance Review results in projects discovering, and fixing, issues around their governance processes or documentation, and to make a plan to gradually improve their governance continuously over the life of the project.
13+
14+
15+
# Requirements
16+
17+
Governance reviewers should fulfill the following requirements:
18+
19+
* More than one year experience in any leadership position in a public open source project, or some other equivalent community management experience
20+
* Familiarity with the CNCF governance and matriculation requirements
21+
* Commitment to a principled impartial review
22+
* This may prevent reviewing projects where the reviewer has a conflict of interest (see below)
23+
* Availability to spend 2-4 hours performing a review, and complete it in a timely fashion
24+
25+
# Process
26+
27+
For anybody interested in doing governance reviews, I wanted to write a summary of how to get started with that work:
28+
29+
* Projects send a request by filling in a [form](https://github.com/cncf/tag-contributor-strategy/issues/new?assignees=jberkus%2Cgeekygirldawn&labels=wg%2Fgovernance&projects=&template=governance-review-request.yaml&title=%5BGovernance+Review%5D%3A+PROJECT+NAME) (some open requests are [here](https://github.com/cncf/tag-contributor-strategy/issues?q=is%3Aissue+is%3Aopen+label%3Awg%2Fgovernance+%22governance+review%22))
30+
* That form should have pointers to governance documents, activities and other things necessary for your assessment.
31+
* The review should follow this [template](https://github.com/cncf/tag-contributor-strategy/blob/main/governance/reviews/template.md). There are markdown comments in that template, not shown in GitHub UI. See the [raw](https://raw.githubusercontent.com/cncf/tag-contributor-strategy/main/governance/reviews/template.md) file for that.
32+
* When the template is filled with the assessment, the output should be in a PR, to be put in the TAG repository under [governance/assessments/projects](https://github.com/cncf/tag-contributor-strategy/tree/main/governance/assessments/projects). Each project gets a folder, and reviews are saved under the date the first draft of the review was completed.
33+
* The assessment is to be done for a snapshot of a project governance. No need to wait for things to be fixed to get the PR merged.
34+
* The PR can only be merged after the TOC Liaison approves the PR.
35+
36+
You can collaborate with other TAG members using Google Docs.
37+
The discussions (disagreements about a certain governance aspect that you find unsatisfactory for example) with projects should be done on the PR when it is opened.
38+
That doesn't mean you can't interact with the projects of course and ask them questions and get their help to find out where something is (e.g. meeting recordings, governance docs, etc)
39+
40+
# Conflicts of Interest
41+
42+
The following kinds of projects may impose a conflict of interest on reviewers, so in general each reviewer should avoid taking on reviews that would cause them.
43+
44+
* The reviewer's employer is the primary sponsor of the project
45+
* The project competes with a project in which the reviewer has a leadership role
46+
* The reviewer has had personal conflicts with one or more leaders of the project
47+
* The reviewer has some other close personal relationship with one or more leaders of the project
48+
49+
If you are assigned a project that triggers a conflict of interest, please alert one of the leads for the Governance WG so that you can be re-assigned.

0 commit comments

Comments
 (0)