Commit 08e3cce
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
0 commit comments