Jó javítás (patch) írása

Változások elkülönítése

Kellemetlen, ha valaki egy hatalmas javítást küld be, ami állítólag 11 különféle problémát orvosol, miközben a megbeszélések és vélemények szerint ezek közül 10-el nem értenek egyet vagy 9-et már másként megoldottak. Ilyenkor a beolvasztást végző személynek ki kell válogatnia az érdemi módosítást a sok forrás közül, ami jelentős többletmunkát jelent.

Lehetőleg minden egyes javítás, amely egy problémát kezel, külön véglegesítésként (commitként) kerüljön beküldésre, saját leírással, amely pontosan meghatározza, mit módosít. Így a karbantartó vagy más érdekelt fél szelektíven alkalmazhatja a változtatásokat.

A különálló változtatások emellett nagyban segítik a hibakeresést és a visszakövetést (bisecting) is a jövőbeli problémák és regressziók feltárásában.

Dokumentáció

A dokumentáció írása fárasztó lehet, de valakinek el kell végeznie. Sokkal könnyebb a helyzet, ha a dokumentációt a kódmódosításokkal együtt küldi be. Ne feledje dokumentálni a metódusokat, az összetett kódrészeket és a felhasználók számára látható funkciókat.

Tesztelési esetek

A tesztek lehetővé teszik, hogy gyorsan ellenőrizzük a funkciók működését. Ezt az állapotot megőrizni és tovább javítani csak úgy lehet, ha minden újonnan hozzáadott funkció tesztelve van. Minden új funkcióhoz legalább egy érvényes teszteset szükséges, amely igazolja, hogy az a dokumentációnak megfelelően működik.

Véglegesítési üzenetek

A Git véglegesítéseknek a Conventional Commits szabványt kell követniük.

Type checking

Any new code should utilize PEP 484 type hints. We are using mypy to check them because it has a Django plugin that makes type checking of Django apps practical.

New and changed code should not introduce new mypy failures where current Django typing support makes that practical. The code base is not yet completely covered by type annotations, and some Django constructs are difficult to annotate precisely. CI therefore enforces mypy only for selected modules and reports other findings separately.

Kódolási szabvány és kódellenőrzés (lint)

A kódnak meg kell felelnie a PEP 8 kódolási irányelveknek, és a ruff formázóval kell formázni.

A kódminőség ellenőrzésére használható a ruff, amelynek beállításai a pyproject.toml fájlban találhatók.

The easiest approach to enforce all this is to install prek. This is a third-party reimplementation of the pre-commit tool used by Weblate. It is included in the development dependencies declared in pyproject.toml, so installing those dependencies makes prek available.

To check all files manually, run:

uv run prek run --all-files

If you prefer the original pre-commit client, it uses the same configuration from .pre-commit-config.yaml.

Biztonságos kódolás

A Weblate-hez írt bármely kódnak a Security by Design Principles elveit kell követnie.

Mesterséges intelligencia (AI) irányelvek

Ha tartalmat küld be a projekt számára, ezzel engedélyt ad annak változatlan felhasználására, és garantálnia kell, hogy jogosult annak terjesztésére. A módosítás beküldésével elfogadja, hogy az bekerülhet a projektbe, és a projekt licencfeltételei szerint továbbterjeszthető. A beküldőnek tudatában kell lennie, hogy az ő felelőssége, hogy ne küldjön be engedély nélküli kódot.

Ez független attól, hogy AI-t használtak-e vagy sem.

Módosítási kérelem beküldésekor természetesen ügyelni kell arra, hogy a javaslat jó minőségű legyen, a lehető legjobb szándékot tükrözze, és megfeleljen az irányelveinknek. Alapszabály: ha bárki felismeri, hogy AI segítségével készült, akkor még érdemes dolgozni rajta.

Elfogadunk AI által generált kódot a projektben, de annak meg kell felelnie a kódolási szabványoknak, legyen áttekinthető, dokumentált, tartalmazzon teszteseteket, és minden egyéb követelménynek is eleget kell tennie.