Зачем компании отдавать свой код в Open Source. На примере TestY (Сергей Козлов, OSSDEVCONF-2025)
Материал из 0x1.tv
- Докладчик
- Сергей Козлов
- Доклад посвящён разработке тест менеджмент системы TestY, дан краткий обзор системы, причины запуска внутри и последующей публикацией в Open Source.
- Рассмотрены очевидные и неочевидные плюсы и минусы передачи кода в Open Source на примере TestY.
- Выстраивание процесса разработки проекта.
Содержание
Видео[править вики-текст]
Презентация[править вики-текст]
Thesis[править | править вики-текст]
Ключевые слова: тестирование, тест менеджмент система, TMS.
Что такое TestY[править | править вики-текст]
TestY — это тест менеджмент система, предоставляющая функционал для хранения тестовых кейсов в виде, объединённых в тестовые наборы (suites). Из тестовых кейсов формируются тестовые планы, в которые вносятся результаты исполнения тестов. По результатам выводится информации о статусе прохождения.
Система имеет деление по проектам, в рамках которых обособляются все конфигурации проекта, что позволяет иметь одну инсталляцию для всех проектов/продуктов/активностей внутри одной компании.
Кастомизация системы не предусмотрена как расширение функционала внутри core части, а как представление интерфейсов и сущностей, позволяющих встроить систему в текущий IT ландшафт компании: атрибуты ко всем сущностям, плагинная система Django и вообще многие расширения Django, меню интеграции.
Система построена на популярных технологиях: Django, PostgreSQL, React, Celery и в случае необходимости внести изменения потребуется инженером с опытом работы в соответствующем стеке не более 3 лет.
Внутри контура Yadro система успешно работает 3 года, 1000 пользователей ежемесячно, ~100 проектов/продуктов от СХД и планшетов до тестов 1С конфигураций, десятки миллионов тестовых результатов.
Путь в Open Source[править | править вики-текст]
В силу прекращения поддержки весной 2022 года коммерческой иностранной TMS, недостаточности функционала и стабильности отечественных коммерческих систем, а также Open Source решений: было принято решение писать свою систему. После года эксплуатации и взрывного роста количества сотрудников стало понятно, что проект успешен и востребован внутри. Но тем не менее компания решила, что проект не имеет коммерческой перспективы в текущем состоянии, не совпадает с планами развития и в 2023 году код был опубликован под лицензией AGPLv3. Кроме того, было предположение, что часть кода (функционала) будет получена из коммьюнити.
Предположения о Open Source[править | править вики-текст]
Первоначально предполагалась следующее:
- Основными пользователями Open Source будут небольшие компании разработки, не имеющие собственной TMS и планирующие включить её в процессы R&D, но не нести при этом финансовые затраты. Факт: есть маленькие компании и компании с сотнями инженеров.
- Система не имеет важных компонентов как, например, отчёты. Отчёты должны были разрабатываться сами пользователями под их задачи. Факт: плагины пишутся, но не выкладываются.
- При нахождении дефектов или запросов пользователи будут заводить тикеты на gitlab. Факт: пишут на почту и просят исправить.
Как выстроен процесс[править | править вики-текст]
Компания ведёт разработку внутри контура периодически выкладывая версии в публичный репозиторий и оповещая пользователей почтовой рассылкой. Если приходит PR в публичный репозиторий, то он импортируется отдельным процессом. Так как внутри компании большое количество инженеров пользуются системой и часто поступают противоречивые требования, то был создан архитектурный комитет из ключевых QA сотрудников разных департаментов и дивизионов, которые принимает решение о roadmap. Также есть возможность любому инженеру внутри взять любую задачу (прошедшую комитет) в работу и улучшить систему (InnerSource): для плагинов нет ограничений, там каждая команда пишет как хочет по своим правилам.
Для уменьшения давления на команду разработки TestY поддерживается коммуникация по e-mail, каналы в мессенджерах сознательно не созданы по той же причине.
Релизы публикуются в ОС раз в 2—4 месяца после 2—4 недельной эксплуатации внутри компании. Это одно из отличий: часто в ОС публикуются релизы проектов, прошедших цикл разработки и тестирования без рантайма проекта в продакшен среде.
В чём плюсы для компании[править | править вики-текст]
- Снижение затрат на лицензии коммерческих решений.
- Резко увеличивается общий объём тестирования.
- Отдельно можно рассмотреть UX, насколько интерфейс интуитивно понятен, а значит упрощает введение нового инженера.
- В средних и крупных компаниях часто возникают конкурирующие внутренние проекты, при котором сложно объединить в один общий проект. В случае ОС позволяет это сделать проще (InnerSource).
- Работа над проектом, который публикуются в ОС, существенно выше мотивирует инженеров, так как это позволяет увеличить видимость как профессионала.
- Лучше идёт работа с публичным API и документацией.
- Повышается бренд и узнаваемость компании, упрощается найм.
Минусы для компании[править | править вики-текст]
Поддержка Open Source проекта, даже если это полная копия, требует ресурсов как минимум на тесты безопасности, блокирующие компрометацию логинов/паролей/токенов или информации о внутренней инфраструктуре. Построение community потребует кратно больше ресурсов на поддержку как ОС экосистемы: системы управления версиями, системы управления проектов, системы управления знаниями/документами, общие каналы коммуникации, ведение коммьюнити.
Коммерциализация[править | править вики-текст]
Коммерциализация ОС проекта предполагается по классическим вариантам: прежде всего это контракты на поддержку с SLA, реализация дополнительного функционала, облачные решения. В части TestY к нам поступали запросы о миграторах из других TMS в TestY или плагины отчётов, однако в силу высокой загрузки и отсутствия применимости внутри компании мы такие задачи не брали.
Заключение[править | править вики-текст]
Основания идея доклада, это рассказать о TestY как примере проекта, ставшего Open Source и побудить компании найти подобные решения внутри у себя, которые могли бы быть также опубликованы под OS лицензиями.
