# DrawBox Roadmap This roadmap describes the direction of DrawBox over the next 12–18 months. It is intended to give users, contributors, and partners a clear view of where the library is headed, why, and how to get involved. The roadmap is a living document. Dates are targets, not commitments — major shifts are reflected in GitHub Milestones and announced in release notes. ## Vision DrawBox aims to be **the canonical drawing SDK for Compose Multiplatform** — a small, focused, accessible, and well-benchmarked canvas layer that any annotation, whiteboard, diagramming, or design tool can embed across Android, iOS, Web (Wasm), and Desktop. We prioritize **SDK primitives over end-user products**: a strong foundation other tools depend on, rather than a feature-rich drawing application. The same primitive — a versioned, editable JSON scene format — is what makes DrawBox uniquely positioned to be the target format for LLM- and agent-driven drawing generation in the Kotlin ecosystem (see the natural-language drawing milestone below). ## Status Latest published version: **2.1.0-alpha02** (KMP preview) The 2.x line is a full rewrite on Kotlin Multiplatform with shared drawing logic and an MVI architecture. The `2.0` public surfaces (`DrawBoxController`, `Mode`, `Intent`, `Event`, `State`) are frozen and extended-only; `2.1.x` adds image, text, and pen-pressure surfaces incrementally. ## Near term — 2.0.0 stable (Q3 2026) Goal: promote the frozen `2.0` surfaces to a stable `2.0.0` release and publish the accompanying migration path from 1.x. - Public API freeze for `DrawBoxController`, `Mode`, `Intent`, `Event`, and `State` — **done**, extended only in `2.1.x` - Migration guide from 1.x (Android-only) to 2.x (KMP) — **published in [CHANGELOG.md](CHANGELOG.md#migration-1x--2x)** - Public WASM playground at `akshay2211.github.io/DrawBox/sample/` — **live** - Snapshot-based regression tests across platforms — Roborazzi harness landed for JVM; extend to Android and iOS - Dokka API reference published alongside the user docs ## Next — Accessibility & performance (Q4 2026) Goal: make DrawBox the first KMP drawing SDK with serious accessibility and measurable cross-platform performance. - **Accessibility pass** - Semantic descriptions for the canvas, tool controls, and exported drawings - Keyboard-only drawing and tool selection - Screen reader support on Android (TalkBack), iOS (VoiceOver), and Web - **Performance benchmarks** - Frame time, gesture latency, and memory profile published per platform - Reproducible benchmark harness in `benchmarks/` - Public baselines so regressions are visible ## Mid term — Extensibility (Q1 2027) Goal: let third parties extend DrawBox without forking it. - Pluggable tool API — community-contributed `Mode`s as separate artifacts - Pluggable exporters — beyond SVG/PNG/JSON (e.g. PDF, DXF) - Stable extension contracts with semantic versioning - A first example community plugin to validate the surface ## Mid-to-long term — Natural-language drawing (Q2–Q3 2027) Goal: turn structured visual intent (natural language, LLM tool calls, agent output) into **editable** DrawBox scenes — not throwaway raster images. This is a Kotlin ecosystem gap: Compose Multiplatform apps that want to embed LLM-driven diagram or sketch generation currently either (a) render server-side SVG and lose editability, or (b) hand-roll their own translation layer. DrawBox already has the primitive an AI layer needs: a versioned, human-readable JSON scene format that round-trips through the SDK. - **`DrawBoxAi` optional module** — separate artifact so the core library stays offline and vendor-free. - **`AiDrawingProvider` interface** — provider-neutral; host apps supply their own OpenAI / Anthropic / local-model implementation. Keys, billing, and rate limits never touch the core SDK. - **Validated scene output** — models return `AiDrawingScene` (versioned JSON), which is schema-validated and clamped (element count, coordinates, text length) before insertion. Preview-before-insert is required; the whole generation is a single undo step. - **Reference implementations** — sample OpenAI and Anthropic providers ship in `samples/`, not in the core artifact. - **Safety defaults** — existing drawings are never sent to a provider without explicit user opt-in; no prompt / key / raw-response logging in the SDK. See [STRATEGY.md](STRATEGY.md#recommended-ai-architecture) for the full design rationale. ## Long term — Collaboration & domain integrations (2027 H2) Goal: unlock real-time and domain-specific use cases. - CRDT-based collaborative drawing SDK primitive - PDF annotation surface - Reference integrations with adjacent Compose libraries (e.g. rich text, slides) ## Continuous Work that runs in parallel across all phases: - Triage and respond to issues within 7 days - Track JetBrains Compose Multiplatform releases and bug-report blocker findings upstream - Maintain `CONTRIBUTING.md`, `good first issue` triage, and quarterly release cadence - Publish a release blog post for every minor version ## How to get involved - **Try it**: the live WASM sample is at `https://akshay2211.github.io/DrawBox/sample/` - **Report**: open issues on [GitHub](https://github.com/akshay2211/DrawBox/issues) — bug reports, feature requests, and accessibility findings are all welcome - **Contribute**: see [CONTRIBUTING.md](CONTRIBUTING.md). Start with issues tagged `good first issue` - **Propose**: larger changes go through a short RFC in `docs/rfcs/` before implementation - **Sponsor**: see the repository sidebar for sponsorship links ## Out of scope To keep the library small and focused, the following are explicitly *not* on the roadmap: - A full vector editor UI — DrawBox stays an embeddable SDK, not an end-user product - Server-side rendering of drawings - Native rendering backends other than Compose If your use case needs one of these, please open a discussion — we may be able to support it via the extensibility surface above.