Skip to content

docs: refresh ROADMAP structure and competitive landscape#68

Merged
ndreno merged 3 commits intomainfrom
chore/roadmap-refresh
Apr 29, 2026
Merged

docs: refresh ROADMAP structure and competitive landscape#68
ndreno merged 3 commits intomainfrom
chore/roadmap-refresh

Conversation

@ndreno
Copy link
Copy Markdown
Contributor

@ndreno ndreno commented Apr 20, 2026

Summary

The ROADMAP had drifted:

This PR restructures the file around time horizons and refreshes the competitive landscape using 2026-04-20 research.

Structure change

Before: Current Focus → Up Next → Plugin Backlog (P0/P1/P2/P3) → Feature Backlog → Tech Debt → Open Questions → Out of Scope → Competitive table

After: Now → Next → Later (grouped by concern) → Someday / maybe → Blocked → Open Questions → Non-goals → Competitive Watch

Time-horizoned instead of category-first, so readers see the pipeline before the catalog.

What was cut

  • Every struck-through ~~done~~ row across all sections — that history belongs in CHANGELOG.
  • "AI & LLM (ADR-0024)" sub-section — all items shipped.
  • "Compile-Time Safety Gaps" table — all but one row shipped; absorbed into Tech Debt.
  • "Current Focus" section of all-done items — repurposed as Now.

Competitive watch refresh

Rebalanced so AI is one of seven categories, not the centerpiece — Barbacane is primarily an API gateway. Each row lists competitor + Barbacane's status (shipped / Later / Someday / non-goal).

Sources consulted (all 2026 releases verified via WebSearch 2026-04-20):

  • Kong AI Gateway 3.8 (semantic caching, semantic routing, 6 LLM LB algorithms), 3.9 (LLM governance), 3.14 (A2A governance)
  • Apache APISIX 3.15 / 3.16 (mcp-bridge, expanded ai-proxy providers)
  • Portkey "Gateway 2.0" (March 2026 open-source expansion: MCP Registry, OAuth 2.1 + PKCE for MCP, 60+ guardrails)
  • LiteLLM v1.81.x (MCP gateway + MCP guardrails, gateway-level zero-cost built-in guardrails)
  • Cloudflare AI Gateway (Universal Endpoint, prompt caching, fallback)
  • Zuplo (OpenAPI-native config, native MCP-from-spec, OpenAPI Overlay support)
  • Envoy Gateway (GRPCRoute GA)
  • Istio (Ambient GA v1.24; KubeCon EU 2026: Ambient Multicluster Beta + Gateway API Inference Extension Beta + experimental Agentgateway)
  • Kubernetes Gateway API Inference Extension (InferencePool / InferenceModel CRDs; Envoy Gateway / kgateway / GKE / NGINX Gateway Fabric implement it)

New Someday / maybe items (tagged [competitive])

Features competitors ship that we might respond to:

  • Semantic cache / semantic routing (Kong 3.8, Portkey)
  • Hard-budget spend enforcement (Portkey, LiteLLM)
  • OpenAPI Overlay support (Zuplo pattern)
  • Auto-generated developer portal from compiled spec (Kong, Tyk, Apigee, Zuplo)

Verified against code/docs that MCP OAuth 2.1 + PKCE (covered by existing oidc-auth), MCP identity forwarding (N/A — we generate MCP from our own spec, not proxy external servers), and circuit breaker (partially covered by ai-proxy fallback) are not Someday items — they're already addressed or architecturally different.

Test plan

  • wc -l ROADMAP.md — 250 lines (was 247, but all-signal — no strike-through history).
  • Visual pass — 15 subsections across the file, 7 under Competitive watch with AI as 1 of them.

Risk

None — documentation only. Does not touch code or CI config.

ndreno added 3 commits April 20, 2026 11:23
The previous ROADMAP had drifted: about 60% of the content was
struck-through (done) items duplicating CHANGELOG history, and the
"Competitive features" table hadn't been refreshed since AI Gateway
was filed as "planned" — it's been shipped for two PRs now.

### Restructure

Old top-level: Current Focus → Up Next → Plugin Backlog (P0/P1/P2/P3)
→ Feature Backlog (by concern) → Tech Debt → Open Questions → Out of
Scope → Competitive Features to Monitor.

New top-level: Now → Next → Later (grouped by concern) →
Someday / maybe → Blocked → Open Questions → Non-goals →
Competitive Watch. Time-horizoned instead of category-first.

### What was cut

- All struck-through `~~done~~` rows across every section — they live
  in CHANGELOG.
- "AI & LLM (ADR-0024)" subsection — every item is shipped.
- "Compile-Time Safety Gaps" table — all but one row shipped; absorbed
  into Tech Debt.
- "Current Focus" section of all-done items — repurposed as Now.

### Competitive watch refresh (2026-04-20)

Researched Kong (3.8, 3.9, 3.14), APISIX (3.15, 3.16), Portkey (March
2026 open-source expansion), LiteLLM (v1.81.x MCP gateway + guardrails),
Cloudflare AI Gateway (Universal Endpoint + prompt caching), Zuplo
(OpenAPI Overlay + MCP-from-spec), Envoy Gateway (GRPCRoute GA), Tyk
(integrated dev portal + Pump analytics), Istio (Ambient GA in 1.24 +
Gateway API Inference Extension at KubeCon EU 2026), and Kubernetes
Gateway API Inference Extension.

Rebalanced the section so AI is one of seven categories (protocol,
traffic, auth, observability/DX, spec-driven gateways, K8s/service
mesh, AI/LLM) — Barbacane is primarily an API gateway, not an AI
gateway. Each row lists competitor + Barbacane's status (shipped,
Later, Someday, or non-goal).

### New Someday/maybe items (tagged `[competitive]`)

Items competitors ship that we might respond to:
- Semantic cache / semantic routing (Kong 3.8, Portkey)
- Hard-budget spend enforcement (Portkey, LiteLLM)
- OpenAPI Overlay support (Zuplo)
- Auto-generated developer portal from compiled spec (Kong, Tyk,
  Apigee, Zuplo)

Result: 247 lines → 250 lines, but the content is all signal —
forward priorities and competitive intelligence rather than half a
file of struck-through history.
Resolve ROADMAP.md by keeping the new "Now / Next / Later" structure from
this branch — completed items from main (transformation plugins, AI gateway
middlewares, security plugins docs) belong in CHANGELOG, not in a
forward-looking roadmap.

Also refreshes README to surface the AI gateway and MCP server as
flagship capabilities, regroups the plugin table by concern, and adds an
inline x-barbacane-* config example.
Verified against every plugin's config-schema.json and
docs/reference/extensions.md:

- x-barbacane-dispatch uses 'name:', not 'plugin:'
- ai-proxy.targets is an object map keyed by target name, not a list
- provider fallback is a separate top-level 'fallback:' list
- ai-cost-tracker prices use 'prompt'/'completion', not 'input'/'output'
- jwt-auth.jwks_url is unimplemented; example uses issuer/audience
- ai-token-limit partition_key uses 'header:x-auth-sub' since jwt-auth
  writes the subject to a header, not a context key
@ndreno ndreno merged commit 00dcb30 into main Apr 29, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant