Skip to content

Commit ea69195

Browse files
Lorna-Kellycdavernas
andcommitted
Add Shared CNCF Workflow Specification Editor & Multi-Maintainer Collaboration Model ADR
Signed-off-by: Lorna-Kelly <lorna.kelly@ibm.com> Update adr/v1.0-adr-shared-workflow-editor.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Lorna-Kelly <lorna.kelly@ibm.com> Update adr/v1.0-adr-shared-workflow-editor.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Lorna-Kelly <lorna.kelly@ibm.com> Update adr/v1.0-adr-shared-workflow-editor.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Lorna-Kelly <lorna.kelly@ibm.com> Add Copilot suggestions Signed-off-by: Lorna-Kelly <lorna.kelly@ibm.com> fix: "retry.delay" property is missed in dsl-specification (serverlessworkflow#1142) Signed-off-by: Dmitriy <dimastbk@proton.me> Co-authored-by: Charles d'Avernas <charles.davernas@neuroglia.io>
1 parent 4894ffe commit ea69195

File tree

1 file changed

+194
-0
lines changed

1 file changed

+194
-0
lines changed
Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
# ADR: Shared CNCF Workflow Specification Editor & Multi-Maintainer Collaboration Model
2+
3+
## Status
4+
5+
Proposed
6+
7+
## Context
8+
9+
There is a need for a shared editor for the CNCF Serverless Workflow Specification that
10+
can be used consistently by multiple implementations (e.g. Quarkus Flow,
11+
SonataFlow, ZigFlow, Synapse, Lemline), as different tools provide inconsistent
12+
authoring and visualization experiences, leading to duplicated effort and fragmented tooling.
13+
14+
Today we have:
15+
16+
- An existing (but aging) VS Code extension for Serverless Workflow
17+
- Several product-specific editors embedded in consoles or IDEs
18+
- Fragmented UX and duplicated effort around:
19+
- YAML/JSON authoring
20+
- Visual diagramming
21+
- Validation against the spec schema
22+
23+
We want to converge on a single core editor stack driven by the CNCF
24+
Serverless Workflow Specification, with a collaboration model that allows
25+
multiple vendors/maintainers to contribute and embed it.
26+
27+
This ADR formalizes the decision to build a shared editor, with a strictly
28+
scoped MVP, aligned with the proposal outlined in
29+
[serverlessworkflow/specification#1131](https://github.com/serverlessworkflow/specification/issues/1131) and further refined through MVP
30+
scoping discussions.
31+
32+
## Decision
33+
34+
After evaluating existing solutions, potential approaches, and their
35+
associated dependencies, we decided to build the editor from scratch to
36+
retain full ownership of the architecture and release process, prioritize
37+
architectural simplicity, enable CNCF hosting and long-term sustainability,
38+
at the cost of slower initial delivery.
39+
40+
## Licensing
41+
42+
- Apache 2.0.
43+
- All dependencies must be CNCF compatible.
44+
- React Flow is MIT licensed and acceptable.
45+
46+
## Governance & Community Alignment
47+
48+
We want a multi-maintainer editor project that does not belong to a single
49+
vendor.
50+
51+
### Proposed model
52+
53+
- Repository ownership
54+
- New repo under the CNCF Serverless Workflow Specification org, e.g. `workflow-spec-editor` (name TBD).
55+
56+
- Maintainers
57+
58+
- Initial maintainers: representatives from at least:
59+
- CNCF Serverless Workflow Specification maintainers
60+
- Quarkus Flow / SonataFlow
61+
- Other interested engine maintainers (e.g. ZigFlow / Synapse / Lemline etc.).
62+
63+
- Decision process
64+
65+
- Use the spec’s existing governance as a reference (PR review rules, approvals).
66+
67+
- Editor decisions should:
68+
- Respect the spec as the single source of truth
69+
- Avoid baking in engine-specific opinions by default
70+
71+
- Integration responsibilities
72+
73+
- Core editor project provides:
74+
75+
- NPM package(s)
76+
- Reference VS Code extension
77+
- Docs and examples
78+
79+
- Each implementation (Quarkus Flow, Synapse, etc.) owns:
80+
81+
- Their integration/embedding
82+
- Optional extension/profile configuration
83+
84+
- Release strategy
85+
- Align with spec releases when possible (e.g. new spec fields -> new editor release).
86+
- Support at least the latest minor and one previous minor version of the spec.
87+
88+
## Initial Scope (v1.0)
89+
90+
### 1. In Scope
91+
92+
- Read-only visual representation of YAML / JSON workflow definitions
93+
- Visualize all task types and transitions
94+
- Fully expanded nested task visualization
95+
- Indication of basic validation issues
96+
- Editor available via NPM package
97+
- A simple demo app showing how to embed the editor as a component
98+
- Documentation for integrators
99+
100+
### 2. UX & Design Decisions
101+
102+
- Light and dark theme support
103+
- Localization infrastructure in place, English only content for MVP
104+
- Rely on out-of-the-box accessibility from React Flow
105+
- Responsiveness is not a focus for MVP, as the editor is intended for
106+
desktop usage rather than mobile devices
107+
108+
### 3. Diagram Semantics & Representation
109+
110+
- Support all task types defined by the Serverless Workflow specification.
111+
- Twelve task types represented visually.
112+
- Task types differentiated using icons, custom node shapes are avoided for MVP due to layout complexity.
113+
114+
### 4. Validation
115+
116+
- The editor performs lightweight client-side schema/structural validation to determine whether the workflow can be rendered.
117+
- The backend (runtime implementation) remains the source of truth for full specification conformance and advanced validation rules.
118+
- Edge cases to handle: validation discrepancies between the TypeScript SDK and the backend (runtime implementation).
119+
- If structural validation passes and rendering is possible, render the workflow.
120+
- 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.
121+
122+
### 5. Nested Tasks & Layout Strategy
123+
124+
- All nested tasks are fully expanded in the diagram.
125+
- No collapsing or layered presentation in MVP. Collapsible or hierarchical views are deferred due to layout and UX complexity.
126+
- Nested workflow UX will be revisited post MVP.
127+
128+
### 6. Development & Tooling Decisions Overview (MVP)
129+
130+
- Web-based implementation
131+
- React/TypeScript-based architecture
132+
- Diagram rendering via React Flow
133+
- Webpack for application bundling
134+
- Jest for unit testing
135+
- Playwright for end-to-end testing
136+
- Storybook for component development and documentation
137+
- Node.js for development and build tooling
138+
- pnpm for dependency management
139+
- GitHub Dependabot for dependency security and updates
140+
141+
## Consequences
142+
143+
### Positive
144+
145+
- CNCF-aligned ownership
146+
- Lowers the entry barrier to the CNCF Serverless Workflow Specification
147+
- Encourages understanding and usage of workflow semantics
148+
- Reduces duplicated tooling effort across runtimes
149+
- Provides a shared, consistent user experience
150+
- Enables incremental evolution without over-engineering MVP
151+
- Clear architectural simplicity and long-term maintainability
152+
- Full control over release cadence and scope
153+
154+
### Trade-Offs
155+
156+
- Slower initial feature delivery compared to reuse-based approaches
157+
- Temporary feature gap relative to existing editors, as the initial scope
158+
must remain conservative while the editor is built from the ground up
159+
- Increased upfront engineering investment
160+
- Limited UX sophistication in MVP
161+
- Requires ongoing coordination to keep the editor aligned with evolving
162+
specification versions
163+
164+
## Milestones
165+
166+
### Milestone 1 (August 2026) - MVP Editor
167+
168+
- Editor available via NPM package
169+
- Read-only visual representation of workflows
170+
- Light/dark theme support
171+
- English only locale setup
172+
- Basic error feedback when rendering fails
173+
- Demo web app
174+
175+
### Milestone 2 (December 2026) - Dual Visual/Text Editor for YAML/JSON workflows
176+
177+
- Dual visual and text editor
178+
- Text and visual toggles
179+
- The editor should be able to write back to disk, and users should be able
180+
to have complete freedom to create, update, and delete nodes - including
181+
creating a new workflow from the ground up
182+
- Syntax highlighting and validation
183+
- VS Code and Chrome extensions
184+
185+
### Milestone 3 (TBD/2027) - External Catalogs and Messaging Support
186+
187+
- Add every OpenAPI spec available in the context to ease creation of
188+
OpenAPI-based tasks
189+
- Connect to external catalogs such as Apicurio (others to evaluate and
190+
explore at the time) to ease creation of OpenAPI and HTTP-based tasks
191+
- Interfaces to start workflows with CloudEvents – support for events data
192+
structure (pluggable via HTTP to connect to any backend)
193+
- Mock services from the OpenAPI catalog, so users won't need to have all the
194+
services available to test their workflows while editing

0 commit comments

Comments
 (0)