cncf / sandbox

Applications for Sandbox go here! ⏳📦🧪
Apache License 2.0
129 stars 19 forks source link

CEL Playground #95

Closed dmueller2001 closed 3 weeks ago

dmueller2001 commented 5 months ago

Application contact emails

Diane Mueller dmueller@getupcloud.com,Kevin Conner kev.conner@getupcloud.com, Matheus matheus.faria@getup.io

Project Summary

CEL Playground is an interactive WebAssembly (Wasm) powered environment to explore and experiment with the Common Expression Language (CEL) providing a simple and user-friendly interface to write and quickly evaluate CEL expressions for use in Kubernetes, Istio and other Cloud Native technologies.

Project Description

The CEL Playground provides a space where Cloud Native developers can learn, develop and test Common Expression Language (CEL) expressions directly in their browsers.

CEL Playground was developed out of a need to learn, develop and test CEL expressions for Kuberenetes and was then adopted by other initiatives such as the Google Cloud Certificate Authority Service, Envoy, Istio as they also needed a tool to develop CEL expressions and foster awareness and adoption of the use of CEL in their communities.

Org repo URL (provide if all repos under the org are in scope of the application)

https://github.com/undistro/cel-playground

Project repo URL in scope of application

https://github.com/undistro/cel-playground

Additional repos in scope of the application

N/A

Website URL

https://playcel.undistro.io/

Roadmap

https://github.com/undistro/cel-playground/blob/main/roadmap.md

Roadmap context

The Road Map document describes the high-level plans for the Cel Playground project and can be found here:

https://github.com/undistro/cel-playground/blob/main/roadmap.md

Contributing Guide

https://github.com/undistro/cel-playground/blob/main/CONTRIBUTING.md

Code of Conduct (CoC)

https://github.com/undistro/cel-playground/blob/main/CODE_OF_CONDUCT.md

Adopters

https://github.com/undistro/cel-playground/blob/main/ADOPTERS.md

Contributing or Sponsoring Org

https://getup.io/en/opensource

Maintainers file

https://github.com/undistro/cel-playground/blob/main/MAINTAINERS.md

IP Policy

Trademark and accounts

Why CNCF?

We firmly believe that integrating CEL Playground into the CNCF ecosystem presents myriad opportunities for CNCF projects to expedite the adoption and utilization of the Common Expression Language (CEL). The CNCF foundation serves as a catalyst for enhancing contributions, fostering collaboration, and promoting the uptake of CEL Playground. Recognizing the imperative for Cloud Native developers to access a straightforward, dependable tool for crafting, testing, deploying, and swiftly evaluating CEL expressions across Kubernetes, Istio, and other Cloud Native platforms, we are confident in CEL Playground's potential. By aligning CEL Playground with the CNCF, we establish a vendor-neutral environment conducive to the continuous refinement and expansion of its capabilities, addressing the evolving requirements of the expanding array of CNCF initiatives integrating CEL.

Benefit to the Landscape

The addition of CEL Playground to the CNCF landscape promises several key benefits. Firstly, it expands the toolkit available to CNCF projects, facilitating the accelerated adoption and effective utilization of the Common Expression Language (CEL). As well, by providing a space where developers can learn and test Common Expression Language (CEL) expressions directly in their browsers, CEL Playground addresses a need among Cloud Native developers for a reliable tool for crafting, testing, deploying, and swiftly evaluating CEL expressions Its intuitive interface and robust functionality enable developers to navigate the complexities of CEL with ease, empowering them to optimize performance, scalability, and compatibility across diverse Cloud Native technologies.

In essence, the addition of CEL Playground to the CNCF landscape not only enhances the capabilities available to developers but also reinforces the foundation's mission to advance the adoption and innovation of Cloud Native technologies.

Cloud Native 'Fit'

CEL (Common Expression Language) is used in Kubernetes APIs, such as the ValidatingAdmissionPolicy, and the CEL Playground can help users easily test expressions.

The playground also includes a set of examples and the Kubernetes libraries for CEL.

The following links on these pages would be useful references to give more context: https://kubernetes.io/docs/reference/using-api/cel/ https://kubernetes.io/docs/reference/access-authn-authz/validating-admission-policy/

Cloud Native 'Integration'

CEL Playground is an interactive WebAssembly (Wasm) powered environment to explore and experiment with the Common Expression Language (CEL). It provides a simple and user-friendly interface to write and quickly evaluate CEL expressions.

CEL Playground is built by compiling Go code to WebAssembly and includes the following libraries that are available in the environment: CEL extended string function library Kubernetes list library Kubernetes regex library Kubernetes URL library

Cloud Native Overlap

There are currently no projects that focus on crafting, testing, deploying, and swiftly evaluating CEL expressions, so CEL Playground helps meet an unmet need in this area.

Similar projects

N/A

Landscape

NO

Business Product or Service to Project separation

This is a purely open source project, it is not embedded or part of any product of the sponsoring company, GetUp Cloud. See: https://getup.io/en/opensource

Project presentations

Our project has been presented to the following SIG and TAG groups:

SIG API-Machinery - Oct 4 2023 - Meeting Notes - Youtube Recording SIG Auth - Date Jan 31 2024 - Meeting Notes - Youtube Recording TAG Runtime - Date Aug 15 2024 - Meeting Notes - Youtube Recording TAG Runtime WASM Working Group - Date August 20 2024 - Meeting Notes Youtube Recording

Project champions

CiCi Huang - Google

Additional information

CEL Playground is referenced and linked to with the Kubernetes technical documentation in the following sections:

https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-rules https://kubernetes.io/docs/reference/access-authn-authz/validating-admission-policy/#creating-a-validatingadmissionpolicy

and has been referenced in the following recent talks at Kubecon/NA 2023

CiCi Huang "Declare Everything" Kubecon/NA 2024 talk

angellk commented 5 months ago

@amye could you tag as TAG App Delivery please?

raravena80 commented 2 months ago

TAG-Runtime & TAG App-Delivery

cici37 commented 2 months ago

/cc

dims commented 1 month ago

@dmueller2001 Do you envision this as something that folks would run private instances of their own or is it just one public instance like artifacthub?

What do you see in its future? does it extend beyond CEL? (how do you foresee building a set of dedicated end users and maintainers, how to attract and retain them over time)

thanks, Dims

dmueller2001 commented 1 month ago

@dims ,

Thank you for asking for clarification on CEL Playground’s goals, use cases, deployment models, and community development efforts.

The CEL Playground project provides an interactive environment to write, test, and debug expressions using the Common Expression Language (CEL). CEL is designed to be portable across different systems and languages, enabling users to write expressions in a consistent syntax regardless of the underlying platform. The CEL Playground simplifies the development and testing of CEL expressions, making it easier for developers to integrate CEL into their applications. We do not at this time have any plans to extend the playground beyond supporting CEL.

Current Use Cases and Deployment Models:

  1. Policy Evaluation: Writing and testing policies for cloud-native platforms.
  2. Configuration Management: Creating and validating configurations for applications and infrastructure.
  3. Custom Rules: Developing custom rules for data validation, transformation, and more.
  4. Local Deployment: Developers can deploy the CEL Playground locally for personal or team use, enabling them to experiment and develop expressions in a controlled environment.
  5. Self-hosted Instances: Organizations can host their own instances of the CEL Playground to maintain control over their policies and configurations, ensuring compliance and privacy.
  6. Embedded Integration: CEL Playground can be embedded into other projects that use CEL, providing a seamless way to develop and test expressions within a larger application or system.

The current GetUp Cloud-hosted CEL Playground runs the latest release for use by the CEL Playground community. Hosting a deployment of the latest release by CNCF might also be feasible and desirable once we’ve established a track record in the CNCF sandbox and/or upon achieving incubation status.

We would also like to see all references of CEL use within the Kubernetes documentation include a CEL Playground link to the example so readers can develop a deeper understanding of the Kubernetes features. CEL Playground is more closely aligned with sites like the Go Playground (https://go.dev/play/) and we see it being used in a similar way.

Community Engagement:

We host regular community meetings, maintain comprehensive documentation, and use multiple communication channels (Slack, GitHub Discussions) to engage with contributors and end-users. We are actively engaging with the Kubernetes and adjacent CNCF communities to gather feedback and encourage contributions through our monthly community meetings hosted by GetUp Cloud. If accepted into the CNCF Sandbox, we plan to transition these meetings to be hosted by CNCF. Additionally, we are engaging with the API-Machinery and Auth SIGs. The GetUp Cloud-hosted CEL Playground has already attracted significant traffic, and we are focused on converting these users into active community participants through feedback requests, issue logging, and enhancement requests.

Short-term Goals:

  1. Enhance User Experience: Improve the user interface and usability of the Playground.
  2. Expand Documentation: Provide more tutorials, examples, and best practices for using CEL, as well as better documentation for local and self-hosted deployments.
  3. Integrate with More Projects: Extend support to additional cloud-native projects and platforms.

We are committed to expanding adoption by enhancing CEL Playground, supporting additional CEL use cases, particularly within CNCF projects, and promoting CEL and the Playground within the broader cloud-native community to encourage its use in more projects.

I hope this addresses the CNCF TOC's questions and showcases the CEL Playground's potential value to the cloud-native community. If further clarification is needed, please let us know.

jberkus commented 1 month ago

Hey @dmueller2001 :

The core of Dims' question was whether you're proposing a CNCF project, which other projects would deploy on their own, or a service to be operated by the CNCF for the benefit of all CNCF projects, in the same way as we do services like Sheriff and Elekto. You've completed a Sandbox application, which is for projects, but most of the benefits you're talking about would come from the CNCF running CEL Playground as a service.

knrc commented 1 month ago

Hiya @jberkus, how are things?

Apologies for any confusion we may have created; there is no expectation or request for CNCF to operate or host CEL Playground as a service, we are proposing CEL Playground as a CNCF project.

In our earlier response to @dims, we included the use cases as we currently see them, as well as a number of potential deployment models which users of the project could choose.

We believe joining the CNCF would enhance contributions, nurture closer ties with CNCF projects, and increase CEL Playground's visibility. It would also help build a community of contributors and maintainers, facilitating the development of new features, customizations, and functionality which would more closely align with the expanded CEL use cases within Kubernetes and other CNCF projects.

We did discuss the CEL Playground roadmap at the SIG Auth meeting on Jan 31 - YouTube Recording, and covered the project in more detail during this briefing to the OpenShift Commons community - YouTube Recording

I hope this helps to clarify our intentions and explains the benefits we see to the CEL Playground project becoming a sandbox project as well as the value we believe it would bring to the CNCF ecosystem.

Please let us know if there’s anything further we can help with

Kev

rajaskakodkar commented 1 month ago

CEL Playground Review


Date
Aug 8, 2024
Project Name CEL Playground
TAG TAG APP Delivery TAG Runtime
Presentation No
Project Leads Presenting NA
TAG Leadership Reviewers Rajas Kakodkar
Recording NA
Meeting Notes NA


Project Information

Covered in the sandbox application - https://github.com/cncf/sandbox/issues/95

High-level Summary

Covered in the sandbox application - https://github.com/cncf/sandbox/issues/95

TAG and Working Group Alignment

This is a general TAG-Runtime and TAG-App Delivery project, and aligned with WG WASM in TAG Runtime

History

Covered in the sandbox application - https://github.com/cncf/sandbox/issues/95


Architecture


Goals & Roadmap

https://github.com/undistro/cel-playground/blob/main/roadmap.md

Key Considerations:

Community and Growth


Release Process, Issues and Testing Infrastructure

Alignment / Collaboration / Overlap with Existing CNCF projects in this area / Expectations

Project Challenges

Key Feedback to the Project:

TAG Recommendation to TOC:

The project in the current state lacks enough community engagement to make a promising case for sandbox status. We recommend that we hear back from the project on the feedback provided and ask the  project to present at TAG Runtime/WG WASM and TAG App Delivery meetings to gain more insights, feedback and outreach. Once the project has addressed the feedback, this can be considered in the next cycle of sandbox review



knrc commented 1 month ago

@rajaskakodkar

Thank you for taking the time to review our sandbox proposal for CEL Playground. We appreciate the offer to present to SIG Runtime and we’ll definitely take you up on that in the coming week.

You mentioned something about CEL Playground being aligned with WG WASM and the Bytecode Alliance. I’ll be honest, that caught us a bit off guard. While we do use WASM in CEL Playground, it’s really just a tool we’re using, not the heart of what we’re doing.

Now, about our team and how we work. We’re a pretty small crew, juggling a few different open source projects. It means we tend to work in bursts on CEL Playground - sometimes there’s a flurry of activity, other times it might look a bit quiet. We do try to stay connected with the community though. We have Community Office hours every two weeks, and a monthly Community Meeting on the last Friday of the month. They’re not just for CEL Playground, but cover all our open source stuff. I’ll admit, the development process for CEL Playground is pretty informal right now and we are not using design proposals nor formal releases. It’s more of a ‘see it, fix it, ship it’ approach since we are running CEL Playground as a SaaS for the benefit of the community. We do know this will have to change when we join CNCF, we are ready to shift gears to a more structured approach with proper design proposals and versioned releases.

With regards to features we do have a number of external requests within the project’s GitHub issues, including from Jordan Liggitt (Google), Manuel Rüger (Sony Interactive), Alfred Fuller (Buf) and Salman Rashid. Top of our list right now is beefing up our Kubernetes support. Jordan Liggitt gave us some great feedback on that. We’re looking at adding more modes like CRD validation, OIDC claim mappings, and Authorization matchConditions. Plus, we’re planning to hook into running clusters to make our CEL evaluations even more useful.

Last but not least, about our adopters. We’re reaching out to folks we know are using our service, asking them to add themselves to our adopters file. It’s a work in progress, but we’re starting to see these come in. CEL Playground has also been mentioned in a few KubeCon talks and we are also referenced within the Kubernetes docs. We are hoping to expand on the documentation integration, hopefully getting some interactive examples right in the Kubernetes docs.

In short, we feel we’re ‘sandbox’ ready now. We have the user base and a clear set of new feature requests from our community, and as the use of CEL is expanding through other CNCF projects such as Kubescape, Envoy, Istio and others we believe supporting our sandbox application at this time would benefit both ourselves and the CNCF communities.

Thanks very much for your time, Kev

jberkus commented 1 month ago

TAG Contributor strategy has reviewed this project and found the following:

This review is for the TOC’s information only. Sandbox projects are not required to have full governance or contributor documentation.

dmueller2001 commented 1 month ago

Community Engagement & Github Participation in CEL Playground

Recognizing that it can be challenging for new open source projects to demonstrate early engagement, we’ve taken proactive steps to monitor and understand the CEL Playground community's growth. By leveraging Google Analytics, we've been able to track consistent usage of our service, which is hosted by GetUp Cloud, over the past year. This usage reflects a steady and diverse interest from various organizations.

GoogleAnalytics2024Aug12

While converting these users into active contributors on GitHub is a gradual process, we’re pleased to report that it’s happening at a steady and encouraging pace. Using CommonRoom analytics, we've been tracking and engaging with community members and are pleased to report the following metrics.

Currently, 9 external companies have made pull requests in the CEL Playground repositories including Atlas Technologies,Buf,Caring Clic,Gerdau,Google,Prosus Group,Sony Interactive Entertainment,Upbound,and Weni. There have been 3 forks of the project by BoxBoat Technologies, Chainlink Labs and Mica.

CEL Playground has garnered over 101 stars from 50+ different organizations, in addition to a significant number of unaffiliated contributor stars.

These include community member come from a wide range of companies, including Abematv, Agoda Company Pte Ltd, Alauda, Alterdata Software, Amazon Web Services, Anota AI, Appsmode, Auth0,Caring Click, Cloud Partners, ControlPlane, Countly Ltd, Endava, Fluent CI, Gaudiy, Gerdau, Giant Swarm, GoTo Group, Ifood, ISH Tecnologia, Isovalent,ITQ, Kitabisa, Letalk, Lily AI, Mercari, Inc., Meta, Microsoft, Next Fit, Palark, Peak, Prosus Group, Pulumi, Radix IoT, Red Hat, Six, Sportradar, Stack Build, SysMap Solutions, Tackle.io Inc, Totality Corp, TOTVS, Universidade Federal De Campina Grande, Upbound, Valstro, Venafi, WAES, Weni, Wework, Wiener Zeitung, WizardQuant, Cerbos, and Zenvia. .

We are excited about the ongoing growth and are committed to fostering even greater engagement as our project evolves.

dmueller2001 commented 1 month ago

Additional Presentations:

Presentation to TAG Runtime - Date Aug 15 2024 - Meeting Notes - Youtube Recording

Presentation to TAG Runtime WASM Working Group - Date August 20, 2024 - Meeting Notes Youtube Recording

Upcoming Presentations:

Kubecon/NA Salt Lake City, Utah - Date Wednesday November 13, 2024 3:25pm - 4:00pm MST CEL-Ebrating Simplicity: Mastering Kubernetes Policy Enforcement - Kevin Conner, Getup Cloud & Anish Ramasekar, Microsoft

rochaporto commented 1 month ago

This sandbox submission was reviewed by the CNCF TOC on Aug 21st.

The TOC recognizes the value of the project in the ecosystem and the opportunities the playground provides for individuals to understand more about CEL - in particular given the recent availability in Kubernetes.

At the same time the TOC does not see a path where this kind of project gets adopted broadly and reaches graduation, or gets deployed in adopter production environments. As such the TOC does not see it as a good fit for sandbox in the CNCF.