Skip to content

Commit 08e3cce

Browse files
docs: add library expansion roadmap (#5951)
## Summary Strategic overview for expanding anyplot beyond Python into a true multi-language gallery. Estimates the global charting-library market and recommends a concrete priority order. ### Key findings - **Language demand:** Python ~45 %, JavaScript/TS ~35 %, R ~10 %, everything else ~10 %. JavaScript is the single biggest gap today. - **3 of 9 current Python entries are non-native bindings:** Plotly (JS native), Highcharts (JS native), lets-plot (Kotlin native). The "native / most-used variant only" rule suggests fixing Highcharts (move to JS) and adding a JS Plotly entry alongside the Python one. - **Tier 1 additions:** Chart.js, D3.js, ECharts. - **Tier 2:** ggplot2 (R), Plotly.js, Highcharts (JS, replaces Python entry). - **Tier 3:** Recharts, Observable Plot, Makie.jl, ApexCharts. After Phase 3 anyplot covers ~95 % of global charting demand with 13 entries. ### Settled design decisions (§9 in the doc) 1. **JS / TS = one language.** Snippets authored in plain JS; TSX only when a library is realistically only used that way (Recharts). 2. **React / Vue / Svelte / Angular = JavaScript with a `framework` metadata flag**, not separate languages. Frontend exposes a framework filter. 3. **Cross-language libraries appear once**, under the variant with ≥ 3× more weekly downloads (else native). One-release deprecation-window exception when a library moves between languages. 4. **Highcharts moves Python → JavaScript.** Both entries kept for one release as a deprecation window, then the Python entry is removed. 5. **Licensing: FOSS-first.** Libraries with a free-for-private-use tier (Highcharts) are allowed but tagged and never crowd out FOSS alternatives at the same tier. Suggested `license` metadata field uses valid SPDX identifiers (`GPL-2.0-only` / `GPL-2.0-or-later`, …) plus a `LicenseRef-Commercial-Free-NonCommercial` form for commercial-with-free-tier libraries. Hard-paywalled libraries are out of scope. 6. **Annual review cadence.** Once a year revisit the doc against four signals: download trends (re-run the 3× test), Plausible visitor data, trend scan (JS Rising Stars / PyPI top-movers / GitHub Trending), and tier reshuffle. Off-cycle reviews triggered by major releases of in-scope libraries. 7. **Language scope.** New languages must satisfy three criteria: code-driven (no GUI workflows), free toolchain (so CI can render previews), and a public package registry. After Python/R/JS only **Julia (Makie.jl)** has a clear case (Phase 5); Swift Charts is an optional Phase 6. Java, Go, Rust, C#, F#, Scala etc. are deferred or skipped. Excel, Tableau, Power BI, MATLAB, SAS, SPSS, Stata, Mathematica, Origin and Prism are explicitly out of scope. 8. **amCharts: skipped.** Duplicates the Highcharts slot at ~18× lower download volume; would weaken the FOSS-first stance. Revisit only if visitor data shows unmet demand. ### Open questions None — §10 is now empty. New questions surface through the annual review. ## Test plan - [ ] Markdown renders correctly on the site / in GitHub preview - [ ] Team confirms the eight settled decisions before implementation work starts https://claude.ai/code/session_01A9yaZzBa3zR4W7KHs9ruH6 --- _Generated by [Claude Code](https://claude.ai/code/session_01A9yaZzBa3zR4W7KHs9ruH6)_ --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 2a2c9d8 commit 08e3cce

2 files changed

Lines changed: 357 additions & 1 deletion

File tree

0 commit comments

Comments
 (0)