Как внести вклад
Спасибо за интерес к проекту! Ниже — короткие правила, которые экономят время и вам, и мейнтейнерам.
Прежде чем начать
- Поищите существующий issue/PR по вашей теме.
- Для крупных изменений (новый модуль, изменение контракта) сначала откройте issue с предложением — обсудим дизайн до кода.
Процесс
Форкните репозиторий и создайте ветку от
main:git checkout -b feat/redis-sentinel.Внесите изменения. Держите PR сфокусированным: одна тема — один PR.
Прогоните проверки локально:
bash tests/smoke.sh shellcheck -x install.sh mitdev lib/*.sh modules/*.sh tests/*.shПроверьте установку на чистой Ubuntu 22.04 (LXD/Multipass — рецепты в DEVELOPER.md), включая повторный запуск (идемпотентность) и сценарий сбоя вашего модуля (откат).
Откройте PR с описанием: что меняется, зачем, как проверяли.
Требования к коду
- Bash ≥ 5,
set -Eeuo pipefail, чистый ShellCheck. - Новые модули следуют контракту из DEVELOPER.md:
MODULE_NAME,module_install,module_verify,module_rollback, идемпотентность, регистрация отката,state_mark. - Никаких заглушек (
TODO, «implement later») — smoke-тест падает на них. - Пользовательские строки UI — согласованы по стилю с существующими.
- Секреты не логируются никогда.
Коммиты
Используйте Conventional Commits:
feat(modules): add caddy module
fix(tui): whiptail checklist quoting
docs: clarify rollback semantics
test: cover template placeholders
Сообщения об ошибках
В issue включите:
- версию Ubuntu и вывод
mitdev version; - команду и полный текст ошибки;
- фрагменты
/var/log/mitdev/errors.logиinstall.logвокруг сбоя; - виртуализацию (
systemd-detect-virt).
Кодекс поведения
Будьте доброжелательны. Технические разногласия решаются аргументами и бенчмарками, а не тоном.