Skip to the content.

How to view and edit the roadmap

roadmap.drawio.svg is a regular SVG image with a draw.io diagram embedded inside it — open it anywhere to see the map. It is generated: the real source is a language-neutral text description in tools/mapgen/roadmap/, so this .drawio.svg is build output, not the thing you edit.

Viewing

Editing

The map is built from tools/mapgen/roadmap/ — structure.dsl (the node tree, grades, stages, hint boxes) and one <lang>.tsv per language (just the text). Do not edit this .drawio.svg by hand — it is regenerated from the source, and CI (mapcheck) rejects a map 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 / es.tsv (a new node needs a row in all four).
  2. First time only — get your machine ready:
    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 four maps and validate — one command from the repo root:
    python tools/mapgen/build.py --dir tools/mapgen/roadmap --deploy --check
    

    --deploy copies each built map over its <Language>/Graph/roadmap.drawio.svg; --check runs mapcheck afterwards. Dependencies are re-verified before anything is built, so a missing one — or a virtualenv you forgot to activate — is reported up front.

  4. Open a pull request with the source and the regenerated maps.

See tools/mapgen/README.md for the DSL grammar and details. Can’t run the build? Edit the source anyway and note it in your PR — a maintainer will regenerate the maps.