-
Notifications
You must be signed in to change notification settings - Fork 174
Add ADR for Shared CNCF Workflow Specification Editor #1144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,193 @@ | ||||||||||||||||||||||||||
| # ADR: Shared CNCF Workflow Specification Editor & Multi-Maintainer Collaboration Model | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Status | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Proposed | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Context | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| There is a need for a shared editor for the CNCF Workflow Specification that | ||||||||||||||||||||||||||
| can be used consistently by multiple implementations (e.g. Quarkus Flow, | ||||||||||||||||||||||||||
| SonataFlow, Zigflow, Synapse, Lemline), as different tools provide inconsistent | ||||||||||||||||||||||||||
| authoring and visualisation experiences, leading to duplicated effort and fragmented tooling. | ||||||||||||||||||||||||||
|
Comment on lines
+9
to
+12
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| Today we have: | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - An existing (but aging) VS Code extension for Serverless Workflow | ||||||||||||||||||||||||||
| - Several product-specific editors embedded in consoles or IDEs | ||||||||||||||||||||||||||
| - Fragmented UX and duplicated effort around: | ||||||||||||||||||||||||||
| - YAML/JSON authoring | ||||||||||||||||||||||||||
| - Visual diagramming | ||||||||||||||||||||||||||
| - Validation against the spec schema | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| We want to converge on a single core editor stack driven by the CNCF | ||||||||||||||||||||||||||
| Serverless Workflow Specification, with a collaboration model that allows | ||||||||||||||||||||||||||
| multiple vendors/maintainers to contribute and embed it. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| This ADR formalises the decision to build a shared editor, with a strictly | ||||||||||||||||||||||||||
| scoped MVP, aligned with the proposal outlined in | ||||||||||||||||||||||||||
| [specification#1131](https://github.com/serverlessworkflow/specification/issues/1131) and further refined through MVP | ||||||||||||||||||||||||||
| scoping discussions. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Decision | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| After evaluating existing solutions, potential approaches, and their | ||||||||||||||||||||||||||
| associated dependencies, we decided to build the editor from scratch to | ||||||||||||||||||||||||||
| retain full ownership of the architecture and release process, prioritise | ||||||||||||||||||||||||||
| architectural simplicity, enable CNCF hosting and long-term sustainability, | ||||||||||||||||||||||||||
| at the cost of slower initial delivery. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Licensing | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Apache 2.0. | ||||||||||||||||||||||||||
| - All dependencies must be CNCF compatible. | ||||||||||||||||||||||||||
| - React Flow is MIT licensed and acceptable. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Governance & Community Alignment | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| We want a multi-maintainer editor project that does not belong to a single | ||||||||||||||||||||||||||
| vendor. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### Proposed model | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Repository ownership | ||||||||||||||||||||||||||
| - New repo under CNCF Workflow org, e.g. `workflow-spec-editor` (name TBD). | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Maintainers | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Initial maintainers: representatives from at least: | ||||||||||||||||||||||||||
| - CNCF Workflow Spec maintainers | ||||||||||||||||||||||||||
| - Quarkus Flow / SonataFlow | ||||||||||||||||||||||||||
| - Other interested engine maintainers (e.g. Zigflow / Synapse / Lemline etc.). | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
Comment on lines
+58
to
+62
|
||||||||||||||||||||||||||
| - Decision process | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Use the spec’s existing governance as a reference (PR review rules, approvals). | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Editor decisions should: | ||||||||||||||||||||||||||
| - Respect the spec as the single source of truth | ||||||||||||||||||||||||||
| - Avoid baking in engine-specific opinions by default | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Integration responsibilities | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Core editor project provides: | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - NPM package(s) | ||||||||||||||||||||||||||
| - Reference VS Code extension | ||||||||||||||||||||||||||
| - Docs and examples | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Each implementation (Quarkus Flow, Synapse, etc.) owns: | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Their integration/embedding | ||||||||||||||||||||||||||
| - Optional extension/profile configuration | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Release strategy | ||||||||||||||||||||||||||
| - Align with spec releases when possible (e.g. new spec fields -> new editor release). | ||||||||||||||||||||||||||
| - Support at least the latest minor and one previous minor version of the spec. | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ## Initial Scope (v1.0) | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### 1. In Scope | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Read-only visual representation of YAML / JSON workflow definitions | ||||||||||||||||||||||||||
| - Visualise all task types and transitions | ||||||||||||||||||||||||||
| - Fully expanded nested task visualisation | ||||||||||||||||||||||||||
| - Indication of basic validation issues | ||||||||||||||||||||||||||
|
Comment on lines
+92
to
+95
|
||||||||||||||||||||||||||
| - Editor available via NPM package | ||||||||||||||||||||||||||
| - A simple demo app showing how to embed the editor as a component | ||||||||||||||||||||||||||
| - Documentation for integrators | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| ### 2. UX & Design Decisions | ||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
| - Light and dark theme support | ||||||||||||||||||||||||||
| - Localisation infrastructure in place, English only content for MVP | ||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
| - Localisation infrastructure in place, English only content for MVP | |
| - Localization infrastructure in place, English only content for MVP |
lornakelly marked this conversation as resolved.
Show resolved
Hide resolved
Copilot
AI
Feb 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The ADR lists "Indication of basic validation issues" as in-scope, but this section says the editor assumes workflows from the backend are valid. Please clarify whether the editor does any client-side schema/structural validation (even if only to support rendering) versus only surfacing backend-provided validation results.
| - The editor assumes workflows provided by the backend are valid. | |
| - Edge cases to handle: validation discrepancies between the TypeScript SDK and the backend (runtime implementation). | |
| - If rendering is possible, display warnings as needed. | |
| - If rendering is not possible, provide clear error feedback to user. | |
| - The editor performs lightweight client-side schema/structural validation required to: | |
| - Determine whether the workflow can be rendered. | |
| - Surface basic validation issues (e.g. missing required fields, unsupported task types, malformed transitions) directly in the editor. | |
| - The backend (runtime implementation) remains the source of truth for full specification conformance and advanced validation rules. | |
| - The editor surfaces backend-provided validation results alongside any client-side findings when such results are available. | |
| - Edge cases to handle: validation discrepancies between the TypeScript SDK and the backend (runtime implementation). | |
| - If structural validation passes and rendering is possible, render the workflow and display validation issues as warnings/errors in context. | |
| - If structural validation fails and rendering is not possible, do not attempt to render a partial/invalid diagram; provide clear, actionable error feedback to the user instead. |
Copilot
AI
Feb 20, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hyphenation is inconsistent in a few places (e.g., "over engineering" -> "over-engineering", "long term" -> "long-term"). Consider updating these to improve readability and consistency.
| - Enables incremental evolution without over engineering MVP | |
| - Clear architectural simplicity and long term maintainability | |
| - Enables incremental evolution without over-engineering MVP | |
| - Clear architectural simplicity and long-term maintainability |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"Zigflow" is capitalized differently than the project name used in the linked issue text ("ZigFlow"). Consider updating capitalization for consistency and easier recognition/searchability.