|
| 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