Licenc és szerzői jog¶
When contributing project code, you agree to put your changes and new code under the repository license, GPL-3.0-or-later, unless stated and agreed otherwise. New source files should follow the existing copyright and SPDX license header style.
Use a different license only when there is a deliberate reason, such as files shared with repositories using more permissive licenses.
Lásd még
A Weblate licenc részletesebben bemutatja a licencelési feltételeket.
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.