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
inpackage.json
,d.ts
ortsc --emitDeclarationOnly
).
C++
- Style: Follow the official QGIS C++ Coding Standards
- Lint/Format: Use
clang-format
with the QGIS profile; runclang-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 indocs/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)