cncf / toc

⚖️ The CNCF Technical Oversight Committee (TOC) is the technical governing body of the CNCF Foundation.
https://cncf.io
1.66k stars 628 forks source link

[Graduation] Dapr Graduation Application #1354

Open msfussell opened 1 month ago

msfussell commented 1 month ago

Dapr Graduation Application

Project Repo(s): https://github.com/dapr/dapr and other repos under https://github.com/dapr Project Site: https://dapr.io/ Sub-Projects: Dapr SDKs (Java, Go, .NET, JS Python etc), cli, kubernetes-operator, installer-bundle, dashboard, dapr-shared, setup-dapr Communication: https://github.com/dapr/community/?tab=readme-ov-file#communication-and-discord including public Discord https://discord.com/invite/dapr-778680217417809931, Maintainers Mailing Listcncf-dapr-maintainers@lists.cncf.io and regular community meetings.

Project points of contacts:

Graduation Criteria Summary for Dapr

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

Suggest present to the recently formed CNCF [AppDeveloper group](https://github.com/cncf/tag-app-delivery/tree/main/app-development-wg). See Dapr CNCF overview presentation https://youtu.be/mBgQBMhboyU - [ ] **TAG provides insight/recommendation of the project in the context of the landscape**

Dapr is in the Application Definiton and Development landscape https://landscape.cncf.io/

They are all vendor neutral, including communication, raising of feature proposals and governance. - [ ] **Review and acknowledgement of expectations for graduated projects and requirements for moving forward through the CNCF Maturity levels.** - [ ] Met during Project's application on 18-Sept-2023. The initial PR [Dapr Graduation Proposal](https://github.com/cncf/toc/pull/1168) Completion of this due diligence document, resolution of concerns raised, and presented for public comment satisifies the Due Diligence Review criteria. - [ ] **Additional documentation as appropriate for project type, e.g.: installation documentation, end user documentation, reference implementation and/or code samples.** Project documentation - https://docs.dapr.io/ Project getting started and samples - https://docs.dapr.io/getting-started/ ## Governance and Maintainers Note: this section may be augmented by the completion of a Governance Review from TAG Contributor Strategy. ### Suggested - [ ] **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.** The Dapr project has a Steering and Technical Committee (STC) consisting of Alibaba, Diagrid, Intel and Microsoft. The STC has been in place since Nov 2021 when Dapr was submitted to CNCF. In [Oct 2023 open elections were held](https://github.com/dapr/community/tree/master/elections/2023-STC) and a new STC was voted in, currently at 7 members. We are looking to expand the STC to 9 or 11 members from companies who are looking to have a deeper engagement with the project. ### Required - [ ] **Clear and discoverable project governance documentation.** These are the project [Roles](https://github.com/dapr/community/blob/master/README.md#roles), the [Membership levels](https://github.com/dapr/community/blob/master/community-membership.md) and [Community Managers responsibilities](https://github.com/dapr/community/blob/master/COMMUNITY-MANAGER.md) - [ ] **Governance is up to date with actual project activities, including any meetings, elections, leadership, or approval processes.** The Dapr project has a Steering and Technical Committee (STC) consisting of Alibaba, Diagrid, Intel and Microsoft. See [STC charter and members](https://github.com/dapr/community/blob/master/steering-and-technical-committee-charter.md). The agenda and notes from each [STC meeting held each month](https://github.com/dapr/community/issues?q=is%3Aissue+STC+meeting+) are recorded in issues. Annual goals are set in Dec for example [2023 goals](https://docs.google.com/presentation/d/1lolFU1cuNZ98cmUCPVevb7cKD0AUfQPy/edit#slide=id.p1) and [2024 goals](https://docs.google.com/presentation/d/1TNrK_Tq8x1SFCyKWJEaO4D-AryrmVyYE/edit#slide=id.p1) In [Oct 2023 open STC elections were held](https://github.com/dapr/community/tree/master/elections/2023-STC) and a new STC was voted in, currently at 7 members. We are looking to expand the STC to 9 or 11 members. - [ ] **Governance clearly documents [vendor-neutrality](https://contribute.cncf.io/maintainers/community/vendor-neutrality/) of project direction.** All of our decisions today are made by maintainers who're actively involved in the project. We've set out a clear path for people to become a maintainers. We have [maintainers](https://github.com/dapr/community/blob/master/MAINTAINERS.md) spread across several companies and will always include more. - [ ] **Document how the project makes decisions on leadership roles, contribution acceptance, requests to the CNCF, and changes to governance or project goals.** See STC inclusion above in leadership. We actively encourage contributions from everyone and the process is documented here https://docs.dapr.io/contributing/. For large feature work we have [proposals repo](https://github.com/dapr/proposals) with guidance that anyone can raise an issue for review and discussion by the maintainers. These open issues are discussed in the twice monthly public community calls and as needed proposal calls. - [ ] **Document how role, function-based members, or sub-teams are assigned, onboarded, and removed for specific teams (example: Security Response Committee).** Dapr has a release process and for each release a new release team is formed. The release follows the [release process](https://github.com/dapr/community/blob/master/release-process.md). - [ ] **Document complete list of current maintainers, including names, contact information, domain of responsibility, and affiliation.** List of [maintainers](https://github.com/dapr/community/blob/master/MAINTAINERS.md). A separate list of contact information and domain of responsibility is managed for the maintainer but not made public due to personal information. This is available if required. - [ ] **A number of active maintainers which is appropriate to the size and scope of the project.** There are 21 maintainers from 6 different companies. - [ ] **Document a complete maintainer lifecycle process (including roles, onboarding, offboarding, and emeritus status).** The maintainer lifecycle is documented [here](https://github.com/dapr/community/blob/master/community-membership.md) - [ ] **Demonstrate usage of the maintainer lifecycle with outcomes, either through the addition or replacement of maintainers as project events have required.** There have been several maintainers that had been approved into the project repos as well as ones who have left over the 4.5 years of the project. Maintainers for SDKs, docs, CLI and dapr have left and new maintainers added. For example in the last 6 months this has occured in the .NET SDK ([Maintainer Removal](maintainer), [Maintainer Addition](https://github.com/dapr/community/issues/433)). There are also Approvers in several repos (for example SDKs) who are on a path to maintainers. - [ ] **Project maintainers from at least 2 organizations that demonstrates survivability.** There are 21 maintainers from 6 different companies. - [ ] **Code and Doc ownership in Github and elsewhere matches documented governance roles.** This is documented in the governance process for [maintainers](https://github.com/dapr/community/blob/master/community-membership.md). GitHub Teams for Approvers and Maintainers are managed for each repo. As a person goes through the maintainer lifecycle they are moved between the github teams for levels of access control. - [ ] **Document agreement that project will adopt CNCF Code of Conduct.** We operate under the [CNCF CoC](https://github.com/dapr/community/blob/master/CODE-OF-CONDUCT.md) - [ ] **CNCF Code of Conduct is cross-linked from other governance documents.**

The Code of Conduct is in the governance document on project membership

All the subproject are list in the [repos](https://github.com/orgs/dapr/repositories?type=all) - [ ] **If the project has subprojects: subproject leadership, contribution, maturity status documented, including add/remove process.** All subprojects are included in the governance. "This doc outlines the responsibilities of contributor roles in Dapr. The Dapr project is subdivided into sub-projects under (predominantly, but not exclusively) runtime (dapr), components-contrib, CLI, quickstarts, docs and language-specific SDKs. Responsibilities for roles are scoped to these sub-projects (repos)." ## Contributors and Community Note: this section may be augmented by the completion of a Governance Review from TAG Contributor Strategy. ### Suggested - [ ] **Contributor ladder with multiple roles for contributors.** Covered in the [community governance](https://github.com/dapr/community/blob/master/community-membership.md) ### Required - [ ] **Clearly defined and discoverable process to submit issues or changes.** See docs [contributing guide](https://docs.dapr.io/contributing/contributing-overview/). We also have a [proposals repo](https://github.com/dapr/proposals) for significant feature triaging and development. - [ ] **Project must have, and document, at least one public communications channel for users and/or contributors.** We have several https://github.com/dapr/community?tab=readme-ov-file#communication-and-discord - [ ] **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.** All documented [here](https://github.com/dapr/community?tab=readme-ov-file#communication-and-discord) - [ ] **Up-to-date public meeting schedulers and/or integration with CNCF calendar.** Public Dapr community meetings are listed in the [CNCF calendar](https://www.cncf.io/calendar/) All community calls and STC meetings are tracked as [issues in the community repo](https://github.com/dapr/community/issues). These are the [Upcoming community calls](https://github.com/dapr/community/issues?q=is%3Aissue+is%3Aopen+label%3A%22community+call%22) Each week there is an public release milestone meeting on the status of the project where anyone can comment on an issue in the milestone. - [ ] **Documentation of how to contribute, with increasing detail as the project matures.** All contributing guidelines are [here](https://docs.dapr.io/contributing/). We also encourage contributors to become part of the project [release team](https://github.com/dapr/community/blob/master/release-process.md#release-team) - [ ] **Demonstrate contributor activity and recruitment.** We actively acknowledge contributors for each release in release notes (for example the v1.13.0 release here https://github.com/dapr/dapr/releases/tag/v1.13.0) and celebrate them on [X.com](https://twitter.com/daprdev/status/1765406990254444875). Our contributors numbers have been growing each release for the last 4 years. We're using digital badges (by Holopin) to award contributors ([example1](https://www.linkedin.com/posts/laurentkempe_i-got-the-dapr-sdk-contributor-badge-from-activity-7208713504013336577-KbJ-?utm_source=share&utm_medium=member_desktop), [example2](https://www.linkedin.com/feed/update/urn:li:activity:7192563984040931328?updateEntityUrn=urn%3Ali%3Afs_feedUpdate%3A%28V2%2Curn%3Ali%3Aactivity%3A7192563984040931328%29)). We were the first to start using holopin badges, which we introduced to all of CNCF to use in other projects. ## 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.** The [overview](https://docs.dapr.io/concepts/overview/) says it all. "Dapr is a portable, event-driven runtime that makes it easy for any developer to build resilient, stateless, and stateful applications that run on the cloud and edge and embraces the diversity of languages and developer frameworks. Dapr codifies the best practices for building microservice applications into open, independent APIs called building blocks." The Dapr APIs have become the standard for developing cloud native applications, and increasing in platform engineering teams exposing an API to their developers. - [ ] **Document what the project does, and why it does it - including viable cloud native use cases.** The [website](https://dapr.io/) and the [overview](https://docs.dapr.io/concepts/overview/) cover this - [ ] **Document and maintain a public roadmap or other forward looking planning document or tracking mechanism.** See the [roadmap document](https://github.com/dapr/community/blob/master/roadmap.md) which is updated during the planning phase of each release (3-4 time per year). [Release planning milestones](https://github.com/dapr/dapr/issues?q=is%3Aissue+release+is%3Aclosed+%22release+planning%22) issues are used for roadmap planning for upcoming milestones - [ ] **Roadmap change process is documented.** See the [roadmap document](https://github.com/dapr/community/blob/master/roadmap.md) which is updated during the planning phase of each release. - [ ] **Document overview of project architecture and software design that demonstrates viable cloud native use cases, as part of the project's documentation.** Dapr is built as a [sidecar](https://docs.dapr.io/concepts/overview/#sidecar-architecture) process for each application and also has a [control plane](https://docs.dapr.io/concepts/overview/#hosting-environments) for different hosting environments including Kubernetes. - [ ] **Document the project's release process and guidelines publicly in a RELEASES.md or equivalent file that defines:** - [ ] Release expectations (scheduled or based on feature implementation) - [ ] Tagging as stable, unstable, and security related releases - [ ] Information on branch and tag strategies - [ ] Branch and platform support and length of support - [ ] 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. The release process is described [here](https://github.com/dapr/community/blob/master/release-process.md) this includes the use of the [release end-game template](https://github.com/dapr/dapr/issues/7410) that is used to track the actions and artifacts for each release. The release process covers [versioning, tagging and branching](https://github.com/dapr/community/blob/master/release-process.md#versioning-tagging-and-branching) - [ ] **History of regular, quality releases.** The supported versions are documented [here](https://docs.dapr.io/operations/support/support-release-policy/#supported-versions) with the release notes, along with overall [release support](https://docs.dapr.io/operations/support/) ## Security Note: this section may be augemented by a joint-assessment performed by TAG Security. ### Suggested - [ ] **Achieving OpenSSF Best Practices silver or gold badge.** We'll look into this, however this is not an immediate priority for the project. ### Required - [ ] **Clearly defined and discoverable process to report security issues.** [Reporting security issues](https://docs.dapr.io/operations/support/support-security-issues/) describes the process. - [ ] **Enforcing Access Control Rules to secure the code base against attacks (Example: two factor authentication enforcement, and/or use of ACL tools.)** 2FA is required for GitHub org members. - [ ] **Document assignment of security response roles and how reports are handled.** See the [security response process](https://docs.dapr.io/operations/support/support-security-issues/). By way of an example of this in practice, the latest [v1.13.4 patch release](https://github.com/dapr/dapr/releases/tag/v1.13.4) was due to a reported CVE, showing that this process is in operation. - [ ] **Document Security Self-Assessment.** We did self assessment at the [v1.0 on the release of the project with threat modelling](https://docs.dapr.io/concepts/security-concept/#threat-model) and have maintained a continuous security review processes since. However, it is fitting for the graduation update to perform another security self-assessment and we will proceed to have this recorded. - [ ] **Third Party Security Review.** - [ ] 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. See latest completed audit and [annoucement]. (https://blog.dapr.io/posts/2023/09/05/dapr-completes-2023-security-audit-increasing-enterprise-confidence/). 3 independent audits have been done in life of the project. - [ ] **Achieve the Open Source Security Foundation (OpenSSF) Best Practices passing badge.** https://www.bestpractices.dev/en/projects/5044 ## Ecosystem ### Suggested N/A ### Required - [ ] **Publicly documented list of adopters, which may indicate their adoption level (dev/trialing, prod, etc.)** We have a list of [adopters](https://github.com/dapr/community/blob/master/ADOPTERS.md) but it is always challenging to get users to include themselves in this. A more detailed list is on our [website](https://dapr.io/testimonials/) - [ ] **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)** Dapr is used by over 38k known companies. See [CNCF Case Studies](https://www.cncf.io/case-studies?_sft_lf-project=dapr) for examples of adopters in production today and listed below. - [Derivco](https://www.cncf.io/case-studies/derivco/) - [Tempestive](https://www.cncf.io/case-studies/tempestive/) - [HDFC Bank](https://www.cncf.io/case-studies/hdfc-bank/) - [DeFacto](https://www.cncf.io/case-studies/defacto/) - [UISEE](https://www.cncf.io/case-studies/uisee/) - [Wortell](https://www.cncf.io/case-studies/wortell/) - [At-Bay](https://www.cncf.io/case-studies/at-bay/) Also others to include; - Grafana Labs - Zeiss - Nasa - Volvo - Cisco - PwC - Honeywell The project has 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. - [ ] **TOC verification of adopters.** We've supplied users in the internal graduation doc who've all agreed to be interviewed. Refer to the Adoption portion of this document. - [ ] **Clearly documented integrations and/or compatibility with other CNCF projects as well as non-CNCF projects.** Dapr integrates with many CNCF projects, including; - [Kubernetes](https://docs.dapr.io/concepts/overview/#kubernetes) as a hosting platform with the Dapr Control Plan - [Helm](https://docs.dapr.io/operations/hosting/kubernetes/kubernetes-deploy/) used to deploy Dapr's control plane to Kubernetes. - [CloudEvents](https://docs.dapr.io/developing-applications/building-blocks/pubsub/pubsub-cloudevents/) for all publish/subscribe events. - [gRPC](https://docs.dapr.io/developing-applications/building-blocks/service-invocation/howto-invoke-services-grpc/) for high-performance remote procedure calls (RPC). - [SPIFFE](https://docs.dapr.io/concepts/security-concept/#secure-communication) for identifying services and securing communications between application services. - [Open Telemetry](https://docs.dapr.io/operations/observability/tracing/tracing-overview/) to generate, collect, and export telemetry data, using the OT SDK and OT Collector - [Prometheus](https://docs.dapr.io/operations/observability/metrics/prometheus/) to collect and analyze runtime metrics. - [Jaeger](https://docs.dapr.io/operations/observability/tracing/otel-collector/open-telemetry-collector-jaeger/) for distributed tracing. - [Kratix](https://docs.dapr.io/developing-applications/integrations/kratix-marketplace/) #### Adoption ##### Adopter 1 - Zeiss /Manufacturing - used from 04/2020 _If the Adopting organization needs to remain anonymous, stating the industry vertical is sufficient._ ##### Adopter 2 - Grafana Labs/Monitoring - used from 08/2022 _If the Adopting organization needs to remain anonymous, stating the industry vertical is sufficient._ ##### Adopter 3 - Organization/Financial - used from 07-2023 _If the Adopting organization needs to remain anonymous, stating the industry vertical is sufficient._ ##### Adopter 4 - SharperImage Online/Retail - used from 06-2022 _If the Adopting organization needs to remain anonymous, stating the industry vertical is sufficient._
salaboy commented 1 month ago

Awesome! I am looking forward to this graduation!

cmendible commented 1 month ago

Yes! Way to go!

daixiang0 commented 1 month ago

So cool! Looking forward to this graduation!