Contributing
GetOLT — коммерческий продукт с моделью «open-with-access»: код открыт для тех, кто получил доступ к репозиторию, защита от несанкционированной коммерческой эксплуатации — на стороне LicenseGuard. Внешние патчи приветствуются, но проходят через ручное ревью основателя, и для каждого PR ожидается предварительное обсуждение в @getolt_pub или на support@getolt.online.
Как сообщить о баге
Самый быстрый канал — Telegram @getolt_pub: можно скинуть скриншот, прикрепить логи, получить ответ в этот же день.
Если нужен более подробный репорт, напишите на support@getolt.online с описанием:
- Версия GetOLT — нижняя плашка интерфейса или
cat /opt/getolt/.env | grep VERSION. - Канал инсталляции — Docker compose или bare-metal (см. Production-deploy).
- Шаги воспроизведения — что нажимали, что ожидали увидеть, что увидели.
- Логи —
/opt/getolt/logs/application.logза интересующий период (sanitize пароли и ключи перед отправкой). - Скриншот ошибки в UI, если применимо.
Чем точнее воспроизведение, тем быстрее фикс.
Как предложить функцию
Telegram, email, или в форме контактов на главной странице сайта. Для GetOLT действует Validation-First — функции добавляются под подтверждённый клиентский запрос, а не «потому что было бы круто». Поэтому будет полезен контекст: какая боль, у скольких ваших коллег она проявляется, какой сценарий вы видите.
Подача патчей
Если хотите подать патч — сначала откройте обсуждение в одном из контактов выше. Это сэкономит время с обеих сторон: иногда нужная функция уже в работе, иногда подход в спорной области требует согласования.
После согласования:
- Ветка от
main. Назовите осмысленно:feat/snmp-discovery,fix/gateray-2020-banner-parse. - Атомарные коммиты: один коммит — одно логическое изменение.
- Сообщения коммитов — на русском. Без AI-подписей (
🤖 Generated with Claude,Co-Authored-By: Claudeи т.п. блокируются commit-msg хуком). Префиксы:feat(модуль):,fix(модуль):,docs(тема):,test(модуль):. - Тесты обязательны на новый код. Для багфиксов — regression-тест, который без фикса падает, а с фиксом проходит.
mvn verify -P integrationдолжен проходить локально перед PR.
Code style
- Стандартный Java —
mvn compileбез warning’ов, никакого@SuppressWarnings("null")ради тишины. - Lombok-аннотации (
@Getter,@Builder,@RequiredArgsConstructor) используются широко — продолжайте в том же духе. - Имена методов и переменных — на английском. Комментарии — допустим русский, если объясняют почему, а не что (имена должны говорить «что» сами).
- Не вводить новые тяжёлые зависимости (Spring Cloud, Reactive, ORM-обёртки) без обсуждения — стек намеренно минималистичный.
Тестовая стратегия
- Unit-тесты — на каждый новый сервис и парсер vendor-адаптера.
- Интеграционные тесты — на путь «реальный MySQL + Spring context». Запуск:
mvn verify -P integration. - HTTP-моки — только
Mockito.mock()клиента, не WireMock. Подробности — в Структуре проекта → Тесты. - Тесты UI — Playwright (на стороне
getolt-landing, для основного продукта пока вручную).
Документация
Если ваш патч меняет публичное поведение — обновите соответствующую страницу в getolt-landing/src/content/docs/. PR без обновлённой документации возвращается на доработку.
Спасибо, что хотите внести вклад. Любые вопросы — в @getolt_pub или на support@getolt.online.
Нашли ошибку или нужно что-то дополнить? Напишите нам или в Telegram @getolt_pub.
Разработка: gmasich.ru