The landscape: Flowable vs Camunda 7/8 vs Temporal vs DIY
Motto — These tools don’t compete on features. They compete on who authors the flow — business-readable models, or engineers’ code — and that one axis decides most evaluations.
Part of Phase 00 — Orientation & setup. Concept lesson — no code required. Phase 10, lesson 05 revisits this with commercial depth once you’ve built everything.
The Problem
Every engine evaluation drowns in feature matrices — fifty rows of checkmarks that all look the same. The real differences sit on two axes the matrices don’t show: who authors and reads the flow (a business-facing model vs. engineer-only code), and where state lives (your database vs. a platform you operate or rent). Get those two right and the shortlist becomes obvious. Get them wrong and you produce the classic mis-buys: Temporal for a maker-checker back office, or a BPM suite for pure service orchestration that no human will ever read.
The Concept
<style> .dgm-lnd{background:var(–color-surface);border:1px solid var(–color-border);border-top:3px solid var(–color-border-danger-outline); border-radius:16px;padding:28px 26px 22px;box-shadow:0 1px 3px rgb(var(–shadow-color) / 0.04),0 8px 24px rgb(var(–shadow-color) / 0.04); margin:26px 0;max-width:100%;font-family:inherit;text-align:left;position:relative} .dgm-lnd-chip{position:absolute;top:-11px;left:24px;background:var(–color-background-danger-solid);color:var(–white); font-size:10.5px;font-weight:700;letter-spacing:1px;text-transform:uppercase; border-radius:20px;padding:3px 12px;box-shadow:0 2px 6px color-mix(in oklab, var(–color-background-danger-solid) 28%, transparent)} .dgm-lnd h4{margin:0 0 4px;font-size:11px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(–color-text-secondary)} .dgm-lnd-sub{font-size:12px;color:var(–color-text-secondary);margin:0 0 16px} .dgm-lnd-axis{display:flex;justify-content:space-between;font-size:9px;font-weight:700;color:var(–color-text-tertiary); text-transform:uppercase;letter-spacing:.3px;margin-bottom:6px} .dgm-lnd-matrix{display:grid;grid-template-columns:repeat(2,1fr);gap:10px} .dgm-lnd-cell{border-radius:11px;padding:11px 13px;position:relative;border:1.5px solid} .dgm-lnd-cell h6{margin:2px 0 4px;font-size:11px;font-weight:700} .dgm-lnd-cell p{margin:0;font-size:10px;color:var(–color-text-secondary);line-height:1.35} .dgm-lnd-cell.accent{background:var(–color-background-danger-surface);border-color:var(–color-border-danger-surface)} .dgm-lnd-cell.accent h6{color:var(–color-text-danger)} .dgm-lnd-cell.blue{background:var(–color-background-info-surface);border-color:var(–color-border-info-surface)} .dgm-lnd-cell.blue h6{color:var(–color-text-info)} .dgm-lnd-cell.green{background:var(–color-background-success-surface);border-color:var(–color-border-success-surface)} .dgm-lnd-cell.green h6{color:var(–color-text-success)} .dgm-lnd-cell.red{background:var(–color-background-danger-surface);border-color:var(–color-border-danger-surface)} .dgm-lnd-cell.red h6{color:var(–color-text-danger)} .dgm-lnd-cell.neutral{background:var(–color-surface-tertiary);border-color:var(–color-border)} .dgm-lnd-cell.neutral h6{color:var(–color-text)} @media (max-width:640px){.dgm-lnd{padding:20px 16px 18px}.dgm-lnd-matrix{grid-template-columns:1fr}} </style> <div class=“dgm-lnd”> <span class=“dgm-lnd-chip”>The landscape</span> <h4>Four ways to run a process, mapped on two axes</h4> <p class=“dgm-lnd-sub”>Who authors the flow (code vs. model) and where the state lives (your DB vs. a separate platform).</p> <div class=“dgm-lnd-axis”><span>← code-first · model-first →</span><span>your database ↓ · separate platform ↑</span></div> <div class=“dgm-lnd-matrix”> <div class=“dgm-lnd-cell accent”> <h6>Orchestration platform</h6> <p>Code-first, its own separate platform — Temporal.</p> </div> <div class=“dgm-lnd-cell blue”> <h6>BPM platform</h6> <p>Model-first, its own separate platform — Camunda 8.</p> </div> <div class=“dgm-lnd-cell neutral”> <h6>Durable execution, embedded</h6> <p>Code-first, lives in your database — a DIY status+queue table.</p> </div> <div class=“dgm-lnd-cell green”> <h6>Embeddable BPM</h6> <p>Model-first, lives in your database — Flowable OSS, Camunda 7 (CE: EOL).</p> </div> </div> </div>
The five, honestly:
| Model | State | Its home turf | Its tax | |
|---|---|---|---|---|
| Flowable OSS | BPMN/CMMN/DMN, business-readable | your RDBMS, embedded or standalone (Ph. 2, 10) | JVM shops wanting full BPM + audit in their own DB, no license | you operate it; UIs are commercial (Work) or yours |
| Camunda 7 | BPMN/DMN | your RDBMS, embedded | same niche as Flowable — shared Activiti ancestry | Community Edition EOL’d Oct 2025 (no more updates); Enterprise on LTS to 2030 — new work steers to 8 |
| Camunda 8 | BPMN/DMN | Zeebe — its own log-based platform, SaaS or self-hosted cluster | high-throughput orchestration with BPMN visibility | separate stateful platform to run/rent; no embedded mode; since 8.8, a unified Orchestration Cluster with internal (no longer pluggable-exporter) history |
| Temporal | none — workflows are code (Java/Go/TS/Python) | its own cluster/cloud | engineer-only orchestration: sagas, retries, infra workflows, polyglot teams | no business-facing artifact: no diagram to review, no DMN, human-task layer is DIY |
| DIY | none | your tables | 3-state flows that never change | every Phase 2–9 concern, rebuilt badly, later |
Three evaluation rules survive contact with vendors:
- Author axis first. If compliance, ops, or product must read the flow — maker-checker, regulated lending, claims — you need the model-first column. Temporal isn’t a weaker candidate there; it’s a category error. The reverse is also true: don’t pick a model-first tool for pure service sagas that no non-technical person will ever read.
- State axis = operational identity. Flowable and Camunda 7 ride the database you already run, back up, and audit (Phases 2 and 9 were about that). Camunda 8 and Temporal are additional stateful platforms with their own ops story — sometimes worth it, never free.
- Everything in this course transfers. Tokens, wait states, transactions, jobs, correlation, versioning — Camunda 7 shares the lineage outright. Camunda 8 keeps the BPMN semantics on a different substrate. Even Temporal’s durable-execution model is Phase 2’s bet, expressed in code. You evaluated these engines by building one — that’s the durable advantage.
Ship It
This lesson ships
outputs/landscape-comparison.md — the two-
axis map, the five-way table, and the three rules, packaged as an evaluation
worksheet.
Check Yourself
Q1. Pure service-to-service saga, engineers only, polyglot stack. Strongest fit?
- A) Flowable — it can do it
- B) Temporal — code-first durable execution is exactly its turf; a BPMN diagram nobody reads is ceremony
- C) Camunda 8
- D) DIY
<details><summary>Answer</summary>B — rule 1 in reverse. Model-first tools earn their keep only when someone non-technical actually reads the model.</details>
Q2. Camunda 8’s biggest operational difference from Flowable is…
- A) BPMN dialect
- B) state lives in Zeebe, its own log-based platform — a second stateful system to run or rent, vs riding your existing RDBMS
- C) pricing only
- D) no DMN
<details><summary>Answer</summary>B — the state axis. Feature lists blur together, but where the rows live changes your on-call rota.</details>
Q3. Regulated lending flow, humans throughout, audit trail mandatory, JVM team, state must stay in the bank’s own PostgreSQL. The shortlist is…
- A) Temporal vs DIY
- B) Flowable OSS (vs Camunda 7’s legacy niche) — model-first + your-database is that exact cell
- C) Camunda 8 only
- D) any of them
<details><summary>Answer</summary>B — both axes point at the embeddable-BPM cell, which is the cell this whole course happens to live in.</details>
Challenge. Take the capstone’s requirements (humans, timers, DMN, audit, your DB) and write the two-paragraph “why not Temporal / why not Camunda 8” memo that an architecture review would demand. Then invert it: change two requirements until Temporal wins. Knowing the flip conditions is what makes the evaluation yours.
Related
- Phase README: Orientation & setup
- The commercial-depth rematch: Phase 10, lesson 05 (see
ROADMAP.md)
