A probabilistic model that forecasts which programming languages, frameworks, databases and tools are rising, plateauing, or fading — and quantifies the uncertainty. It learns from a decade of developer-adoption data and projects each technology forward with a Monte Carlo simulation.
adoption level × momentum × leading indicator → simulated forward to 2028
The key idea is the leading indicator: the Stack Overflow survey asks both what developers use today and what they want to use next year. When desire runs ahead of usage, adoption tends to follow — that's what flagged Python, Rust and TypeScript years before they peaked.
Survey data through 2025, 20,000 Monte Carlo simulations per technology. Full table in
outputs/tech_radar.csv; explore it interactively in
dashboard.html.
Headline: the model projects Python overtakes JavaScript as the world's most-used language by 2028 (Python 57% → 61%, JavaScript 65% → 59%), and Rust tops the "future" ranking on the strength of the highest desire ratio in the dataset.
| Technology | Category | Now | 2028 | Growth | P(rising) |
|---|---|---|---|---|---|
| Rust | language | 15% | 25% | 1.74x | 92% |
| DuckDB | database | 3% | 17% | 6.49x | 100% |
| Go | language | 16% | 24% | 1.50x | 94% |
| Podman | tool | 8% | 22% | 2.68x | 97% |
| Vite | tool | 19% | 31% | 1.63x | 96% |
| TypeScript | language | 43% | 55% | 1.28x | 79% |
| FastAPI | web | 11% | 19% | 1.78x | 100% |
| Zig | language | 2% | 8% | 3.84x | 100% |
| Supabase | database | 6% | 14% | 2.42x | 100% |
| Hugging Face Transformers | mlops | 3% | 10% | 3.03x | 100% |
| Technology | Category | Now | 2028 | Growth | P(rising) |
|---|---|---|---|---|---|
| Heroku | cloud | 4% | 2% | 0.37x | 4% |
| Webpack | tool | 14% | 10% | 0.70x | 0% |
| Yarn | tool | 16% | 11% | 0.72x | 17% |
| jQuery | web | — | — | < 1x | low |
| MySQL | database | 33% | 25% | 0.78x | 3% |
| Objective-C | language | 2% | 2% | 0.76x | 19% |
The story is consistent with where the industry is visibly heading: Rust/Go/Zig in systems, TypeScript displacing JavaScript, FastAPI + Hugging Face riding the AI wave, DuckDB/Supabase in data, Podman replacing Docker tooling — while Webpack→Vite, Yarn→npm/pnpm, Heroku and jQuery fade.
- Adoption panel (
src/data/ingest_survey.py) — the Stack Overflow Developer Survey (2017–2025) gives, per technology per year, the share of developers who use it and who want to use it. Column names changed across years; the loader detects the "used" vs "want" columns automatically and maps raw names to a canonical taxonomy (src/data/taxonomy.py). - External signals (
src/data/fetch_packages.py,fetch_github.py) — npm download trends, PyPI volume and GitHub repo counts corroborate the survey momentum and cover fast-movers the annual survey lags on. All no-auth, best-effort. - Trend model (
src/models/trend.py) — per technology, it derives the current level, a damped momentum (recent log-growth, blended with package growth), the desire ratio (want ÷ use), and a volatility from the tech's own history. - Monte Carlo (
src/simulate/montecarlo.py) — 20,000 forward simulations per technology. Each year's growth = damped momentum + a fading leading-indicator premium + a random shock. Aggregating the final-year distribution gives a projected adoption with an 80% credible interval, a P(rising), and a Rising / Stable / Declining label. - LLM news layer (
src/news/, optional) — OpenAI reads recent headlines per technology and emits a bounded momentum nudge (a major release, a license change, an AI-framework breakout) — the same news-as-prior pattern as the sibling projects. It tilts the forecast; it never overrides the data. - Interactive dashboard (
make_dashboard.py→dashboard.html) — a single, self-contained HTML file (data embedded, charts via Plotly): pick any technology to see its history and forecast fan, sort/filter the ranking, toggle the news layer, and read the radar quadrant. No server, no install — just open it.
pip install -r requirements.txt
python run_all.py # fetch data + signals, build panel, run the forecast
# or step by step:
python -m src.data.fetch_survey # auto-download SO survey (Git LFS) -> data/raw/
python -m src.data.ingest_survey # -> data/interim/survey_panel.pkl
python -m src.data.fetch_packages # npm + PyPI signals (optional)
python -m src.data.fetch_github # GitHub repo counts (optional; set GITHUB_TOKEN)
python -m src.data.combine # -> data/interim/panel.pkl
python -m src.simulate.montecarlo 20000 # -> outputs/tech_radar.csv
python run_all.py --news # also run the OpenAI news layer (needs OPENAI_API_KEY)
python make_dashboard.py # -> dashboard.html (standalone interactive demo)
python make_image.py # -> LINKEDIN_IMAGE.html (then render.py for the PNG)run_all.py builds dashboard.html and the image at the end automatically. Open
dashboard.html in any browser — no server required.
- Stack Overflow Annual Developer Survey, 2017–2025 — the multi-year adoption panel,
fetched automatically from the public
StackExchange/Surveyrepo (stored with Git LFS;src/data/fetch_survey.pyresolves and downloads it — no manual step, no Kaggle token). Licensed CC BY-SA; raw files are git-ignored. - npm (
api.npmjs.org), PyPI (pypistats.org), GitHub (search API) — no-auth popularity signals.
- Forecast, not a snapshot. Anyone can rank what's popular now; the survey's want-vs-use gap is a genuine leading indicator, and the Monte Carlo turns it into calibrated probabilities with intervals instead of a single guess.
- Multi-source. Survey adoption is the backbone; package and repo signals catch fast-movers between annual surveys.
- Honest uncertainty. Every projection ships with an 80% interval and a P(rising) — no false precision.
- The survey skews toward its respondent base (heavily web/English-speaking) and is annual, so it lags sudden shifts — which is exactly what the package signals and news layer are for.
- Adoption ≠ quality or pay. This forecasts usage trajectory, not whether you should learn something.
- Categories are a curated taxonomy; niche or brand-new tech with <3 years of data is held out of the confident ranking rather than guessed at.
