Skip to content

Commit bf3e099

Browse files
authored
feat: review roadmap (#24)
1 parent e50f540 commit bf3e099

File tree

1 file changed

+55
-11
lines changed

1 file changed

+55
-11
lines changed

ROADMAP.md

Lines changed: 55 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,16 @@ StreamKit is currently at **v0.1** (initial public release). This roadmap covers
1212

1313
---
1414

15+
## What v1.0 means (north star)
16+
17+
For v1.0, StreamKit is aiming to be:
18+
19+
- **Secure-by-default**: built-in authentication suitable for real deployments (not just “behind a proxy”)
20+
- **Dynamic A/V over MoQ**: real-time audio + video pipelines over WebTransport/MoQ
21+
- **Timing-correct**: well-defined timestamp/duration semantics and **A/V sync** as a first-class requirement
22+
- **Basic compositing**: a “main + PiP” compositor (e.g., screen share + webcam) plus simple overlays (watermark/text/images)
23+
- **Stable interfaces**: clearly versioned HTTP/WS APIs, pipeline YAML, and plugin compatibility expectations
24+
1525
## What I'm optimizing for (right now)
1626

1727
StreamKit is still a solo-driven project, so this roadmap is intentionally biased toward fundamentals:
@@ -21,20 +31,53 @@ StreamKit is still a solo-driven project, so this roadmap is intentionally biase
2131
- **Scalability**: repeatable load tests, measurable performance, operable deployments
2232
- **Capabilities**: new nodes/plugins are welcome, but they'll be prioritized by real use cases from the community
2333

34+
## Already shipped (v0.1)
35+
36+
These are in place today and will be iterated on (not “added from scratch”):
37+
38+
- **Playwright E2E** + CI workflow (expand coverage over time)
39+
- **Load testing runner + presets** (curate canonical scenarios + track budgets)
40+
- **Observability baseline** (logs + OTLP metrics/traces + profiling helpers)
41+
- **RBAC permissions model** (roles + allowlists), even though authentication is not yet implemented
42+
2443
## Near-Term (v0.1 → v0.5)
2544

45+
### Security & Auth (P0)
46+
47+
- **Built-in authentication (JWT)** — First-class authn/authz for **HTTP + WebSocket control + WebTransport/MoQ**
48+
- Local dev: **no auth on loopback** by default
49+
- Real deployments: require auth when binding non-loopback (secure-by-default)
50+
- StreamKit-managed keys by default (auto-generate, store securely, and support rotation)
51+
- **Token issuance flow** for MoQ gateways (so users don’t need external tooling), compatible with the MoQ ecosystem token shape (root-scoped + publish/subscribe permissions)
52+
- UX helpers (UI/CLI) for “copy/paste” publisher/watch URLs with tokens embedded where required by WebTransport today
53+
- **No secret logging**, especially `?jwt=`-style tokens used by WebTransport today
54+
55+
### Timing & A/V Sync (P0)
56+
57+
- **Timing contract** — Define canonical semantics for packet timing (`timestamp_us`, `duration_us`) and how nodes/engines must preserve/transform it
58+
- **A/V sync** — Jitter/drift strategy, drop/late-frame policy, and regression tests (dynamic pipelines)
59+
- **Hang/MoQ alignment** — Clear mapping between StreamKit timing metadata and Hang/MoQ timestamps/groups
60+
61+
### Dynamic Video over MoQ (VP9 MVP) (P0)
62+
63+
- **Video packet types** — First-class video packets alongside audio, with explicit timing requirements
64+
- **VP9 baseline** — Real-time VP9 encode/decode path suitable for browser clients; **AV1 optional later**
65+
- **MoQ/Hang-first interop** — Start by interoperating cleanly with `@moq/hang`, then generalize to “MoQ in general”
66+
- **Compositor MVP (main + PiP)** — Two live video inputs → one composed output, plus simple overlays (watermark/text/images)
67+
- **Golden-path demo** — A canonical “screen share + webcam → PiP → watchers” dynamic pipeline sample
68+
2669
### Reliability & Developer Experience
2770

2871
- **Improved error messages** — Clearer diagnostics for pipeline validation and runtime errors (node/pin/type context, actionable hints)
2972
- **API stabilization** — Stabilize HTTP/WebSocket APIs and schemas toward v1.0 with a clear deprecation story
3073
- **Better defaults** — Safer config defaults (limits, timeouts, permissions) that work well in self-hosted environments
3174
- **Docs + samples** — Expand "golden path" docs and sample pipelines so it's easy to try and easy to debug
32-
- **End-to-end tests (Playwright)** — Add canonical UI/API e2e flows (create session, edit graph, inspect metrics, export) and run them in CI
33-
- **Built-in authentication (optional)** — First-class authn/authz for the HTTP + WebSocket APIs (e.g., API keys and/or OIDC), with role assignment and audit-friendly logging
75+
- **End-to-end tests (Playwright)** — Expand canonical UI/API e2e flows and keep them running in CI
3476

3577
### Performance & Load Testing
3678

37-
- **Load test suite** — Curate a few canonical load scenarios (oneshot, dynamic, mixed) and track budgets over time (p95/p99 latency, throughput, CPU/mem)
79+
- **Load test suite** — Curate canonical scenarios (oneshot, dynamic, mixed) and track budgets over time (p95/p99 latency, throughput, CPU/mem)
80+
- **Performance budgets** — Add “no-regression” budgets (at least for a few representative pipelines)
3881
- **Observability polish** — Make metrics/tracing consistent and production-friendly (dashboards that match docs, easier correlation from UI → logs)
3982

4083
### Capabilities (use-case driven)
@@ -46,8 +89,9 @@ StreamKit is still a solo-driven project, so this roadmap is intentionally biase
4689

4790
### Transports & Connectivity
4891

49-
- **WebSocket transport nodes** — Subscriber/publisher/peer nodes for non-media packet streams and simpler "no-QUIC" deployments
92+
- **WebSocket transport nodes (non-media only)** — Subscriber/publisher/peer nodes for events/data/RPC-like patterns (not media)
5093
- **Non-media MoQ examples** — Canonical examples that use MoQ/WebTransport for non-audio streams (events, data, RPC-like patterns) as a WS alternative
94+
- **No WebSocket media transport planned** — If a browser-friendly non-MoQ fallback is needed, it will likely be WebRTC
5195

5296
### Plugin Ecosystem (capability multiplier)
5397

@@ -64,6 +108,7 @@ StreamKit is still a solo-driven project, so this roadmap is intentionally biase
64108

65109
- **TypeScript support in script nodes** — Compile `.ts` scripts at load time for type-safe pipeline logic
66110
- **UI code editor** — In-browser JavaScript/TypeScript editor with syntax highlighting and validation
111+
- **Compositor UI (basic)** — Dedicated scene/layer editor for main + PiP positioning and simple overlays (crop/transform/watermark)
67112
- **Admin/Manage section** — Dedicated UI area for plugins, permissions/roles, secrets/config, and operational controls (separate from pipeline design/monitor views)
68113

69114
### Stability & Polish
@@ -90,14 +135,13 @@ StreamKit is media/processing-focused, not "audio-only". As real use cases emerg
90135
- **OCR nodes/plugins** — Text extraction pipelines (likely plugin-backed initially)
91136
- **Event packets** — Structured events for routing/control (webhooks, metadata, detectors)
92137

93-
### Video Support
138+
### Video Expansion
94139

95-
StreamKit is audio-first today. Video support is a major milestone for v1.0:
140+
After the VP9 + compositor MVP is solid, expand video capabilities:
96141

97-
- **Video packet types** — Extend core to handle video frames alongside audio
98-
- **Video codec plugins** — H.264, VP9, AV1 encoding/decoding
99-
- **Compositing nodes** — Video mixing, overlays, and transformations
100-
- **Container support** — MP4 and WebM muxing with video tracks
142+
- **More codecs/accelerators** — AV1, H.264, hardware acceleration options where possible
143+
- **Container support** — MP4 and WebM muxing with video tracks (beyond the initial WebM-focused PoC path)
144+
- **More compositing** — Multi-video compositing beyond PiP (layouts, grids, transitions)
101145

102146
### Advanced Transports
103147

@@ -109,7 +153,7 @@ StreamKit is audio-first today. Video support is a major milestone for v1.0:
109153

110154
### Plugin System
111155

112-
- ResourceManager integration for native plugins (unified model caching)
156+
- ResourceManager integration for native plugins (unified model caching) and broader adoption across plugins
113157
- Plugin API versioning and compatibility checks
114158
- Plugin-defined packet schemas/metadata ("virtual packet types") that surface in `/schema/packets` and the UI while flowing as `Custom(type_id)` at runtime
115159
- Exploration of WASM/Native API convergence

0 commit comments

Comments
 (0)