Framework Selection
Framework choice is a two-to-three-year bet. Choose with a matrix, a bake-off, and an exit plan — not a demo-day feeling.
▶ Watch this reelWhat you'll learn
- The selection matrix
- Lock-in & portability
- The hands-on bake-off
- Decision discipline
Remember this
- Weight the boring axes: control-flow philosophy, ecosystem, maturity pulse — features converge, these don't
- Keep a plain, testable core with the framework as a shell and protocols (MCP/A2A) as integrations — the exit costs a re-shell, not a rebuild
- Run the same-task bake-off on honest dimensions, record the ADR with tripwires, and re-ask 'would we choose this again?' every quarter
Matrix (weight boring axes)
- Control (who owns flow) · ecosystem (docs, hiring, 2 a.m. answers) · language/runtime fit · maturity pulse (cadence, spec absorption).
- Features converge — philosophies and momentum don't.
Lock-in & portability
- Lock-in layers: model bindings (cheap) · tool integrations (cheap if MCP) · orchestration logic (expensive).
- Shell pattern: plain tested core + framework at edges + protocol integrations.
- Write the exit plan at adoption.
Bake-off
- Same representative task (tool + branch + failure + checkpoint) in top-2.
- Dimensions: time-to-working, my-code ratio, break-it debugging, test ergonomics, free observability.
Discipline
- ADR + pre-agreed tripwires + quarterly 'would we choose this again?' — switch bravely.
Code: The bake-off scorecard template
# Bake-off: LangGraph vs MAF (task: RAG + tool + failure path)
# Scorer: ____ Date: ____ Versions: __________
dim, weight, LG, MAF
time_to_working, 1, _, _
my_code_ratio, 2, _, _ # app logic vs ceremony
break_it_debug_min, 2, _, _ # intentional tool failure
pytest_ergonomics, 2, _, _
observability_free, 1, _, _ # visibility w/o added instrumentation
mcp_support_current, 2, _, _ # 2026-07-28 spec state
docs_at_midnight, 1, _, _ # ecosystem gut-check
# ─────────────────────────────────────────────
# weighted totals: _, _
# break-it notes: LG error: … MAF error: …
# verdict + exit conditions recorded in ADR-7