Skip to content

Commit b1b45e4

Browse files
author
Amye Scavarda Perrin
authored
Merge pull request #996 from duglin/cloudeventsGraduation
CloudEvents Graduation Proposal + DD
2 parents a79f206 + 845ec88 commit b1b45e4

File tree

2 files changed

+354
-0
lines changed

2 files changed

+354
-0
lines changed
+238
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,238 @@
1+
# CloudEvents Due Diligence
2+
3+
## Statement of CNCF Alignment to TOC Principles
4+
1. Project is self-governing
5+
6+
Yes
7+
8+
2. Is there a documented Code of Conduct that adheres to the CNCF guidelines?
9+
Yes. The governance docs point to: https://github.com/cncf/foundation/blob/master/code-of-conduct.md
10+
11+
3. Does the project have production deployments that are high quality and high-velocity? (for incubation and graduated projects).
12+
13+
Yes. While CloudEvents itself, at its core, is a specification without an official implementation we have a list of known adopters of the specification on our https://cloudevents.io website and have gathered a list of companies who would be willing to discuss their usage of CloudEvents with the TOC members as part of the application for graduated status.
14+
15+
While not an exhaustive list, vendors such as [Google](https://cloud.google.com/functions/docs/writing/write-event-driven-functions) and [Microsoft](https://learn.microsoft.com/en-us/azure/event-grid/cloudevents-schema) have public documentation on using CloudEvents. And numerous open source projects have support for CloudEvents beyond what is listed in the [open source](https://github.com/cloudevents/spec/blob/main/docs/open-source.md) list. As examples, [dapr](https://docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-overview/),
16+
[knative](https://knative.dev/docs/eventing/), [opentelemetry](https://opentelemetry.io/docs/reference/specification/trace/semantic_conventions/cloudevents/),
17+
[spring](https://spring.io/blog/2020/12/10/cloud-events-and-spring-part-1).
18+
19+
Additionally, the CloudEvents github repo hosts community driven SDKs that support a wide range of languages (CSharp, Go, Java, Javascript, PHP, PowerShell, Python, Ruby and Rust) as well as many of the CloudEvent protocol bindings.
20+
21+
4. Is the project committed to achieving the CNCF principles and do they have a committed roadmap to address any areas of concern raised by the community?
22+
23+
Yes. Concerns raised by the community will be managed through github
24+
issues: https://github.com/cloudevents/spec/issues. See the
25+
[Contributing doc](https://github.com/cloudevents/spec/blob/main/docs/CONTRIBUTING.md)
26+
for more information.
27+
28+
5. Document that the project has a fundamentally sound design without obvious critical compromises that will inhibit potential widespread adoption
29+
30+
List of adopters can be found on the "adopters" section of the
31+
[website](https://cloudevents.io) as well as the list of OSS projects
32+
that are using it
33+
[here](https://github.com/cloudevents/spec/blob/main/docs/open-source.md).
34+
35+
6. Document that the project is useful for cloud native deployments & degree that it's architected in a cloud native style
36+
37+
See previous bullet.
38+
39+
7. Document that the project has an affinity for how CNCF operates and understand the expectation of being a CNCF project.
40+
41+
CloudEvents has been a CNCF project since 2018 and as such has a history of
42+
being a good, and successful, member of the CNCF community.
43+
44+
### Incubating Stage Graduation (Exit Requirements)
45+
1. Document that it is being used successfully in production by at least three independent direct adopters which with focus on adequate quality and scope defined.
46+
47+
Some adopters include: Adobe, Alibaba, European Commission, Google, IBM, Microsoft, Tencent, TriggerMesh and VMware. See the full list of adopters on the "adopters" section of the
48+
[website](https://cloudevents.io) as well as the list of OSS projects
49+
50+
2. Have a healthy number of committers. A committer is defined as someone with the commit bit; i.e., someone who can accept contributions to some or all of the project.
51+
52+
CloudEvents, being a specification project, doesn't have formal committers.
53+
Rather each change to the specifications requires approval from the entire
54+
community. All comments on a PR must be resolved to the community's
55+
satisfaction before it is merged. This, in essence, gives everyone veto power.
56+
57+
In the rare cases the community can not agree then a vote is taken by
58+
the members of the community who have been to 3 out of the last 4 weekly
59+
calls. This has only happened less than 5 times during the entire life of the
60+
project. However, to gauge interest from the community, please see the
61+
historical list of weekly call attendees
62+
[here](https://docs.google.com/spreadsheets/d/1bw5s9sC2ggYyAiGJHEk7xm-q2KG6jyrfBy69ifkdmt0/edit?pli=1#gid=0)
63+
and the "voting rights" column shows about 10 different companies regularly
64+
attend the calls and have voting rights.
65+
66+
3. Demonstrate a substantial ongoing flow of commits and merged contributions.
67+
68+
See activity over the last 2 years
69+
[here](https://cloudevents.devstats.cncf.io/d/2/commits-repository-groups?orgId=1&var-period=w&var-repogroups=%22cloudevents%2Fspec%22&from=1606798800000&to=1672549199000)
70+
71+
4. Have committers from at least two organizations.
72+
73+
See item 2.
74+
75+
5. Have achieved and maintained a Core Infrastructure Initiative Best Practices Badge.
76+
77+
Yes, see: https://bestpractices.coreinfrastructure.org/projects/6770
78+
79+
6. Adopted the CNCF Code of Conduct.
80+
81+
Yes, see: https://github.com/cloudevents/spec#community-and-docs
82+
83+
7. Explicitly define a project governance and committer process. The committer process should cover the full committer lifecycle including onboarding and offboarding or emeritus criteria. This preferably is laid out in a GOVERNANCE.md file and references an OWNERS.md file showing the current and emeritus committers.
84+
85+
See section 2 above, and
86+
[here](https://github.com/cloudevents/spec/blob/main/docs/CONTRIBUTING.md).
87+
88+
8. Explicitly define the criteria, process and offboarding or emeritus conditions for project maintainers; or those who may interact with the CNCF on behalf of the project. The list of maintainers should be preferably be stored in a MAINTAINERS.md file and audited at a minimum of an annual cadence.
89+
90+
See section 2 above, and
91+
[here](https://github.com/cloudevents/spec/blob/main/docs/CONTRIBUTING.md).
92+
93+
9. Have a public list of project adopters for at least the primary repo (e.g., ADOPTERS.md or logos on the project website), guidelines for identifying adopters can be found in the [FAQs](https://github.com/cncf/toc/blob/main/FAQ.md#what-is-the-definition-of-an-adopter).
94+
95+
See list of adopters on the "adopters" section of the
96+
[website](https://cloudevents.io) as well as the list of OSS projects
97+
98+
### Documentation of CNCF Alignment (if not addressed above):
99+
* name of project (must be unique within CNCF)
100+
101+
CloudEvents
102+
103+
* project description (what it does, why it is valuable, origin and history)
104+
105+
CloudEvents is a specification for describing common event data in popular
106+
formats and transports to provide interoperability across services, platforms
107+
and systems.
108+
109+
* statement on alignment with CNCF charter mission
110+
111+
See intro here: https://github.com/cloudevents/spec#readme
112+
113+
* sponsor from TOC (sponsor helps mentor projects)
114+
115+
Originally it was:
116+
- Ken Owens <ken.owens @ mastercard.com>
117+
- Brian Grant <briangrant @ google.com>
118+
119+
* license (charter dictates Apache 2 by default)
120+
121+
Yes, see https://github.com/cloudevents/spec/blob/main/LICENSE
122+
123+
* source control (GitHub by default)
124+
125+
Yes, see https://github.com/cloudevents/spec
126+
127+
* external dependencies (including licenses)
128+
129+
None
130+
131+
* release methodology and mechanics
132+
133+
See https://github.com/cloudevents/spec/blob/main/docs/GOVERNANCE.md#release-process-and-versioning
134+
135+
* community size and any existing sponsorship
136+
137+
See weekly call attendee list: https://docs.google.com/spreadsheets/d/1bw5s9sC2ggYyAiGJHEk7xm-q2KG6jyrfBy69ifkdmt0/edit?pli=1#gid=0
138+
They regularly have about 10 different companies represented on each weekly
139+
call.
140+
141+
## Technical
142+
* An architectural, design and feature overview should be available. (add link)
143+
144+
See the
145+
[Primer](https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/primer.md).
146+
147+
* What are the primary target cloud-native use cases? Which of those:
148+
* Can be accomplished now.
149+
* Can be accomplished with reasonable additional effort (and are ideally already on the project roadmap).
150+
* Are in-scope but beyond the current roadmap.
151+
* Are out of scope.
152+
153+
See https://github.com/cloudevents/spec/blob/main/docs/ROADMAP.md for the
154+
historical roadmap. Right now CloudEvents is at version 1.0 and they are
155+
addressing any questions from the community as they arise. The project is
156+
now focusing on other eventing lifecycle pain-points which are being
157+
addressed by the creation of a Discovery specification, a Subscription
158+
Manager specification and a Schema Registry specification. These new specs
159+
are still under active development.
160+
161+
* What are the current performance, scalability and resource consumption bounds of the software? Have these been explicitly tested? Are they appropriate given the intended usage (e.g. agent-per-node or agent-per-container need to be lightweight, etc)?
162+
163+
Not applicable.
164+
165+
* What exactly are the failure modes? Are they well understood? Have they been tested? Do they form part of continuous integration testing? Are they appropriate given the intended usage (e.g. cluster-wide shared services need to fail gracefully etc)?
166+
167+
Not applicable.
168+
169+
* What trade-offs have been made regarding performance, scalability, complexity, reliability, security etc? Are these trade-offs explicit or implicit? Why? Are they appropriate given the intended usage? Are they user-tunable?
170+
171+
Not applicable.
172+
173+
* What are the most important holes? No HA? No flow control? Inadequate integration points?
174+
175+
Not applicable.
176+
177+
* Code quality. Does it look good, bad or mediocre to you (based on a spot review). How thorough are the code reviews? Substance over form. Are there explicit coding guidelines for the project?
178+
179+
Not applicable for the spec itself, but we do host some community driven
180+
SDKs that are at varying degrees of maturity. The most popular ones
181+
(e.g. golang) are being used in other OSS projects (such as Knative).
182+
183+
* Dependencies. What external dependencies exist, do they seem justified?
184+
185+
None
186+
187+
* What is the release model? Versioning scheme? Evidence of stability or otherwise of past stable released versions?
188+
189+
See https://github.com/cloudevents/spec/blob/main/docs/GOVERNANCE.md#release-process-and-versioning
190+
and https://github.com/cloudevents/spec/blob/main/docs/RELEASES.md
191+
192+
* What is the CI/CD status? Do explicit code coverage metrics exist? If not, what is the subjective adequacy of automated testing? Do different levels of tests exist (e.g. unit, integration, interface, end-to-end), or is there only partial coverage in this regard? Why?
193+
194+
Not applicable.
195+
196+
* What licensing restrictions apply? Again, CNCF staff will handle the full legal due diligence.
197+
198+
Not applicable.
199+
200+
* What are the recommended operational models? Specifically, how is it operated in a cloud-native environment, such as on Kubernetes?
201+
202+
Not applicable.
203+
204+
## Project
205+
* Do we believe this is a growing, thriving project with committed contributors?
206+
* Is it aligned with CNCF's values and mission?
207+
* Do we believe it could eventually meet the graduation criteria?
208+
* Should it start at the sandbox level or incubation level?
209+
* Does the project have a sound, documented process for source control, issue tracking, release management etc.
210+
* Does it have a documented process for adding committers?
211+
* Does it have a documented governance model of any kind?
212+
* Does it have committers from multiple organizations?
213+
* Does it have a code of conduct?
214+
* Does it have a license? Which one? Does it have a CLA or DCO? Are the licenses of its dependencies compatible with their usage and CNCF policies? CNCF staff will handle the full legal due diligence.
215+
* What is the general quality of informal communication around the project (slack, github issues, PR reviews, technical blog posts, etc)?
216+
* How much time does the core team commit to the project?
217+
* How big is the team? Who funds them? Why? How much? For how long?
218+
* Who are the clear leaders? Are there any areas lacking clear leadership? Testing? Release? Documentation? These roles sometimes go unfilled.
219+
* Besides the core team, how active is the surrounding community? Bug reports? Assistance to newcomers? Blog posts etc.
220+
* Do they make it easy to contribute to the project? If not, what are the main obstacles?
221+
* Are there any especially difficult personalities to deal with? How is this done? Is it a problem?
222+
* What is the rate of ongoing contributions to the project (typically in the form of merged commits).
223+
224+
## Users
225+
* Who uses the project? Get a few in-depth references from 2-4 of them who actually know and understand it.
226+
* What do real users consider to be its strengths and weaknesses? Any concrete examples of these?
227+
* Perception vs Reality: Is there lots of buzz, but the software is flaky/untested/unused? Does it have a bad reputation for some flaw that has already been addressed?
228+
229+
## Context
230+
* What is the origin and history of the project?
231+
232+
See https://github.com/cncf/toc/blob/main/proposals/sandbox/cloudevents.md
233+
234+
* Where does it fit in the market and technical ecosystem?
235+
* Is it growing or shrinking in that space? Is that space growing or shrinking?
236+
* How necessary is it? What do people who don't use this project do? Why exactly is that not adequate, and in what situations?
237+
* Clearly compare and contrast with peers in this space. A summary matrix often helps. Beware of comparisons that are too superficial to be useful, or might have been manipulated so as to favor some projects over others. Most balanced comparisons will include both strengths and weaknesses, require significant detailed research, and usually there is no hands-down winner. Be suspicious if there appears to be one.
238+

0 commit comments

Comments
 (0)