Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
Please include a summary of the change and which issue is fixed.

## Checklist
- [ ] Content changes have been applied to all three languages (English, Russian, Chinese) OR a follow-up issue has been opened to track missing translations.
- [ ] Content changes have been applied to all four languages (English, Russian, Chinese, Spanish) OR a follow-up issue has been opened to track missing translations.
- [ ] Any new external links have been verified. (If a link is bot-blocked and fails CI, it has been added to `.lycheeignore` with a comment).
- [ ] I have run `lychee --offline --no-progress "**/*.md"` locally (see `CONTRIBUTING.md`); if I added external links, I checked those too.
- [ ] **If I changed the map**: I edited `tools/mapgen/roadmap/` (not the `.drawio.svg`), rebuilt with `python tools/mapgen/build.py --dir tools/mapgen/roadmap --deploy --check`, and committed the regenerated maps — or I said in the description that a maintainer needs to regenerate them.
13 changes: 5 additions & 8 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
This file helps an AI agent (or a human) get up to speed on the repository quickly: how the
map is produced, how to change it safely, and the conventions to keep.

This is **not a changelog** — for what changed and when, see the git history; the owner's
current tasks live in [TODO.md](TODO.md).
This is **not a changelog** — for what changed and when, see the git history.

> **IMPORTANT: the maps are GENERATED, not hand-edited.**
> Each `<Language>/Graph/roadmap.drawio.svg` is **build output** of the mapgen pipeline.
Expand All @@ -19,8 +18,7 @@ current tasks live in [TODO.md](TODO.md).
- `main` is the primary branch; work through separate branches and pull requests.
- Article file names and URLs must not change — they are linked from outside.
- **Articles** (the per-language `.md` content) are still maintained by hand, one copy per
language; any content change must be mirrored across `English/` `Russian/` `Chinese/`
(there is no `Spanish/` yet). **The map is different** — it has a single source (below),
language; any content change must be mirrored across `English/` `Russian/` `Chinese/` `Spanish/`. **The map is different** — it has a single source (below),
so a structural change is made once and regenerated into every language.

## How the map is produced
Expand Down Expand Up @@ -48,10 +46,10 @@ tools/mapgen/roadmap/structure.dsl + <lang>.tsv ──► build.py ──
1. Edit the source in `tools/mapgen/roadmap/`:
- **structure / grade / stage / hint placement** → `structure.dsl`
- **text** (a label, a hint's wording, the date, a legend caption) → the relevant
`<lang>.tsv` row(s). A structural add needs a new row in **all three** tsvs.
`<lang>.tsv` row(s). A structural add needs a new row in **all four** tsvs.
2. First time on a machine: `python tools/mapgen/setup.py --venv` (creates a virtualenv,
installs Pillow, and reports how to install the draw.io desktop app if it is missing).
3. Rebuild, update all three live maps, and validate — one command from the repo root:
3. Rebuild, update all four live maps, and validate — one command from the repo root:
```bash
python tools/mapgen/build.py --dir tools/mapgen/roadmap --deploy --check
```
Expand Down Expand Up @@ -79,7 +77,7 @@ normal edit loop.
- **Stage frames** grow to fit their `(section, stage)` group automatically; the "N step"
titles come from the `stage1`..`stage5` tsv keys. Just annotate a subtree root with `stage=N`.
- **Hints** are placed by explicit polar `angle`/`dist` from their target and a required
`arrow=` side; one value serves all three languages, so re-check `mapcheck` after moving one.
`arrow=` side; one value serves all four languages, so re-check `mapcheck` after moving one.
- Rows share `y` across languages (`PITCH=60`, box `H=30`); only x/width differ per language.
The generator handles this — you don't port vertical positions by hand any more.

Expand All @@ -97,4 +95,3 @@ cross-language drift and a stale date. See [`tools/mapcheck/README.md`](tools/ma
behind; they are marked obsolete in every language's README. Optional plan: check
GoatCounter traffic for `/goto/miro-*` vs `/goto/svg-*`; if low, put a "the map has moved"
banner on the boards and redirect `goto/miro` to the SVG viewer (without breaking links).
- **The owner's current tasks are in [TODO.md](TODO.md)**; check it directly.
12 changes: 6 additions & 6 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ Thank you for your interest in contributing! To maintain consistency and quality

## Language Sync Rule

This project maintains parity across three languages: English (`English/`), Russian (`Russian/`), and Chinese (`Chinese/`).
**Any content change (e.g., adding a book, updating a tool, fixing a description) MUST be mirrored across all three languages.**
If you are unable to translate the content into all languages, please create an issue or note it in your Pull Request so someone can help translate it.
This project maintains parity across four languages: English (`English/`), Russian (`Russian/`), Chinese (`Chinese/`), and Spanish (`Spanish/`).
**Any content change (e.g., adding a book, updating a tool, fixing a description) MUST be mirrored across all four languages.**
You do not need to be fluent in all four to contribute — use a translation tool (like Google Translate or DeepL) for the languages you don't speak, and reviewers will polish it. The important part is that the files stay structurally identical (same headings, same order).

This rule is about the **articles** (the `.md` files). **The map is different** — it has one shared source, so a structural change is made once and regenerated into all three languages; only its *text* is per-language. See below.
This rule is about the **articles** (the `.md` files). **The map is different** — it has one shared source, so a structural change is made once and regenerated into all four languages; only its *text* is per-language. See below.

## Editing the Roadmap

Expand All @@ -18,13 +18,13 @@ The roadmap is **generated** from a single language-neutral source in [`tools/ma

1. Edit `structure.dsl` (to add/move/re-grade a node or a hint) and/or the `<lang>.tsv` files (to change text — one row per language).
2. Set your machine up once — `python tools/mapgen/setup.py --venv` creates a virtualenv, installs Pillow, and tells you how to install the draw.io desktop app if you don't have it.
3. Rebuild and update all three maps with one command from the repo root, then open a pull request:
3. Rebuild and update all four maps with one command from the repo root, then open a pull request:
```bash
python tools/mapgen/build.py --dir tools/mapgen/roadmap --deploy --check
```
See [`tools/mapgen/README.md`](tools/mapgen/README.md) for the DSL grammar and all flags.

Because there is one structural source, a structural change lands in all three languages at once — you only supply the per-language **text** in each `<lang>.tsv`. If you can't run the build locally (`setup.py` will tell you what's missing — the draw.io desktop app is the usual blocker), edit the source anyway and say so in your PR; a maintainer will regenerate the maps. To just *view* the map, see the per-language [`Graph/README.md`](English/Graph/README.md).
Because there is one structural source, a structural change lands in all four languages at once — you only supply the per-language **text** in each `<lang>.tsv`. If you can't run the build locally (`setup.py` will tell you what's missing — the draw.io desktop app is the usual blocker), edit the source anyway and say so in your PR; a maintainer will regenerate the maps. To just *view* the map, see the per-language [`Graph/README.md`](English/Graph/README.md).

## Local Jekyll Preview

Expand Down
4 changes: 2 additions & 2 deletions Chinese/Graph/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@

1. Fork 本仓库并编辑源文件:
- 节点、其等级/阶段或提示 → `tools/mapgen/roadmap/structure.dsl`
- 文字(标签、提示、日期)→ `en.tsv` / `ru.tsv` / `zh.tsv` 中对应的行(新节点需要在**三个文件中都**加一行)。
- 文字(标签、提示、日期)→ `en.tsv` / `ru.tsv` / `zh.tsv` / `es.tsv` 中对应的行(新节点需要在**四个文件中都**加一行)。
2. **仅首次需要** — 准备好你的环境:
```bash
python tools/mapgen/setup.py --venv
```
它会创建虚拟环境、安装 Pillow,并检查两个它无法替你安装的东西(CJK 字体和 draw.io
桌面应用),如果缺少就打印适用于你操作系统的确切命令。
3. 在仓库根目录用一条命令重新构建、更新全部三张地图并进行校验
3. 在仓库根目录用一条命令重新构建、更新全部四张地图并进行校验
```bash
python tools/mapgen/build.py --dir tools/mapgen/roadmap --deploy --check
```
Expand Down
2 changes: 1 addition & 1 deletion Chinese/Graph/roadmap.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion Chinese/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# C++ 开发者路线图

## :speech_balloon: 其他语言:[English](../README.md) [Русский](../Russian/README.md)
## :speech_balloon: 其他语言:[English](../README.md) [Русский](../Russian/README.md) [Español](../Spanish/README.md)

C++ 仍然是 [2025 年](https://survey.stackoverflow.co/2025/technology#most-popular-technologies) 中最受欢迎的开发语言之一。有很多人想开始学习 C++ 并成为开发者。他们面临着这些问题:“我应该从哪里开始?我应该按照什么顺序学习?我应该读哪些书?”

Expand Down
6 changes: 3 additions & 3 deletions English/Graph/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,16 @@ that has drifted from it.

1. Fork the repository and edit the source:
- a node, its grade/stage, or a hint → `tools/mapgen/roadmap/structure.dsl`
- wording (a label, a hint, the date) → the matching row in `en.tsv` / `ru.tsv` / `zh.tsv`
(a new node needs a row in **all three**).
- wording (a label, a hint, the date) → the matching row in `en.tsv` / `ru.tsv` / `zh.tsv` / `es.tsv`
(a new node needs a row in **all four**).
2. **First time only** — get your machine ready:
```bash
python tools/mapgen/setup.py --venv
```
It creates a virtualenv, installs Pillow, and checks for the two things it can't
install for you (a CJK font and the draw.io desktop app), printing the exact command
for your OS if either is missing.
3. Rebuild, update all three maps and validate — one command from the repo root:
3. Rebuild, update all four maps and validate — one command from the repo root:
```bash
python tools/mapgen/build.py --dir tools/mapgen/roadmap --deploy --check
```
Expand Down
2 changes: 1 addition & 1 deletion English/Graph/roadmap.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# C++ Developer Roadmap

## :speech_balloon: Additional languages: [Русский](Russian/README.md) [中文](Chinese/README.md)
## :speech_balloon: Additional languages: [Русский](Russian/README.md) [中文](Chinese/README.md) [Español](Spanish/README.md)

C++ is still one of the most popular development languages in [2025](https://survey.stackoverflow.co/2025/technology#most-popular-technologies). There are quite a few people who want to start learning C++ and become a developer. They face the questions: "Where should I start? What and in what order should I study? What books should I read?"

Expand Down
8 changes: 4 additions & 4 deletions Russian/Graph/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[roadmap.drawio.svg](roadmap.drawio.svg) — это обычное SVG-изображение со встроенной диаграммой
[draw.io](https://www.drawio.com): откройте его где угодно, чтобы увидеть карту. Но это
**сгенерированный** файл: настоящий исходник — это языконезависимое текстовое описание в
**сгенерированный** файл: настоящий исходник — это единое текстовое описание, общее для всех языков, в
[`tools/mapgen/roadmap/`](../../tools/mapgen/roadmap), а этот `.drawio.svg` является результатом
сборки, а не тем, что вы правите.

Expand All @@ -21,16 +21,16 @@

1. Сделайте форк и правьте исходник:
- узел, его грейд/этап или подсказка → `tools/mapgen/roadmap/structure.dsl`
- текст (подпись, подсказка, дата) → соответствующая строка в `en.tsv` / `ru.tsv` / `zh.tsv`
(новому узлу нужна строка **во всех трёх**).
- текст (подпись, подсказка, дата) → соответствующая строка в `en.tsv` / `ru.tsv` / `zh.tsv` / `es.tsv`
(новому узлу нужна строка **во всех четырёх**).
2. **Только в первый раз** — подготовьте окружение:
```bash
python tools/mapgen/setup.py --venv
```
Скрипт создаёт виртуальное окружение, ставит Pillow и проверяет то, что он установить
не может (CJK-шрифт и десктопное приложение draw.io), подсказывая точную команду для
вашей ОС.
3. Пересоберите, обновите все три карты и проверьте их — одной командой из корня
3. Пересоберите, обновите все четыре карты и проверьте их — одной командой из корня
репозитория:
```bash
python tools/mapgen/build.py --dir tools/mapgen/roadmap --deploy --check
Expand Down
2 changes: 1 addition & 1 deletion Russian/Graph/roadmap.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion Russian/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# C++ Developer Roadmap

## :speech_balloon: Другие языки: [English](../README.md) [中文](../Chinese/README.md)
## :speech_balloon: Другие языки: [English](../README.md) [中文](../Chinese/README.md) [Español](../Spanish/README.md)

С++ является одним из самых популярных языков разработки: [2025](https://survey.stackoverflow.co/2025/technology#most-popular-technologies). Есть немало желающих начать его изучать и стать C++ разработчиками. Перед такими людьми встают вопросы: "С чего мне начать? Что и в каком порядке мне изучать? Какие книги стоит почитать?"

Expand Down
Loading
Loading