Skip to content

Conventions

Please read and adhere to our coding standards for all work.

Quick Links

  • IDEs — recommended setups and plugins: IDEs
  • Processes — how we work day-to-day: Processes
  • Git — branching, commits, PRs: Git

Project Conventions

  • We follow SDLC/agile practices using scrum boards. See: project processes
  • Use the project board for issues, priorities, and status.
  • Every task has: problem, acceptance criteria, owner, due date.

Language Conventions

“A foolish consistency is the hobgoblin of little minds.”
Prefer readability and team standards over personal style.

Python

  • Style: PEP 8 where sensible (see coding standards).
  • Lint/Format: (e.g., flake8 + black) — see coding standards.
  • Testing: (e.g., pytest); aim for fast, isolated tests.
  • Packaging: (e.g., uv/pip + pyproject.toml).

JavaScript

  • Style: Align with project baseline.
  • Lint/Format: (e.g., eslint + prettier).
  • Testing: (e.g., vitest/jest + Testing Library).
  • Packages: Lockfile committed; pinned major versions.

TypeScript

  • Style: Align with project baseline; prefer explicit types where helpful.
  • Lint/Format: (e.g., eslint + @typescript-eslint/* + prettier).
  • Testing: (e.g., vitest/jest + Testing Library).
  • Packages: Lockfile committed; pinned major versions; publish with type declarations (types in package.json, d.ts or tsc --emitDeclarationOnly).

C++

  • Style: Follow the official QGIS C++ Coding Standards
  • Lint/Format: Use clang-format with the QGIS profile; run clang-tidy in CI aligned with QGIS checks.
  • Build/Test: CMake; tests via QtTest/ctest.
  • Conventions: Prefer Qt types where sensible, RAII and smart pointers, and Doxygen comments for public APIs.

Minimal Working Agreements

  • Naming: kebab-case for files; snake_case for Python; camelCase for JS variables; PascalCase for types/classes.
  • Docs: one # H1 per page; images in docs/img/; short alt text required.

Tiny Checklists

Commit message

  • [scope]: concise summary
  • Body: what/why, not just how. Link issue: Fixes #123.

Pull request

  • Problem & approach explained
  • Tests/Docs updated (if applicable)
  • Checklist passes (lint/format/CI)