Skip to content

The Developer Journey

Eight steps take you from nothing to an accepted upstream patch. Steps 1–4 happen once per machine; steps 5–8 are your daily loop.

# Step What you end up with
1 Check out QGIS A pristine upstream clone
2 Embed qgis-dev-env This repo nested inside it, invisible to upstream git
3 Bootstrap & trust Symlinks, guards, direnv devshell, trusted editor config
4 Your first compile A running, freshly built QGIS (the only slow step, once)
5 Editing with Neovim nix-vim + the <leader>p menu + full LSP
6 Pre-commit & standards QGIS's own checks passing locally, findings in quickfix
7 Your first patch A clean, human-authored PR to upstream
8 Debugging with DAP Step through QGIS core in Neovim — breakpoints, inspection, attach

Prerequisites

  • NixOS (or any Linux with the Nix package manager) with flakes enabled:

    # /etc/nix/nix.conf or ~/.config/nix/nix.conf
    experimental-features = nix-command flakes
    
  • direnv + nix-direnv enabled in your shell (on NixOS: programs.direnv.enable = true; in your configuration).

  • An ssh key registered with GitHub — every git operation in this handbook uses ssh, never https.
  • Roughly 100 GB of free disk: a Debug build tree is ~30 GB and the shared ccache is capped at 50 GB.

Time budget

Steps 1–3 are minutes of typing. Step 4 downloads the toolchain and compiles QGIS once — start it, go for lunch. Everything after that is seconds-to-minutes, forever.