Skip to content

Latest commit

 

History

History
98 lines (64 loc) · 5.95 KB

File metadata and controls

98 lines (64 loc) · 5.95 KB

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 Statedone, extended only in 2.1.x
  • Migration guide from 1.x (Android-only) to 2.x (KMP) — published in CHANGELOG.md
  • 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 Modes 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 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 — bug reports, feature requests, and accessibility findings are all welcome
  • Contribute: see 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.