HashiCorp BSL и OpenTofu: разбираемся, что это значит для наших проектов
HashiCorp переводит Terraform и Vault на BSL 1.1, сообщество форкает OpenTofu. Оцениваем влияние на клиентские проекты и намечаем план перехода.
HashiCorp меняет лицензию Terraform и Vault с MPL 2.0 на BSL 1.1, сообщество анонсирует форк OpenTofu, август 2023
В августе HashiCorp объявила, что Terraform, Vault, Consul и другие продукты переходят с Mozilla Public License 2.0 на Business Source License 1.1. Новость прошла по всем новостным агрегаторам, за ней быстро последовал анонс форка - OpenTofu под эгидой Linux Foundation. Первые две недели мы дали панике улечься и сели разбираться спокойно: что именно изменилось, и что это означает для проектов, которые мы ведём на управляемой инфраструктуре.
Что такое BSL и чем он отличается от MPL
MPL 2.0 - относительно мягкая open-source лицензия: можно использовать в коммерческих проектах, можно встраивать, изменения в самих файлах под MPL надо публиковать под той же лицензией. Конкурировать с HashiCorp - можно.
BSL 1.1 - другая история. Ключевое ограничение в той редакции, которую выбрала HashiCorp: нельзя использовать продукт для создания «конкурирующего продукта». Формулировка намеренно размытая. Через четыре года код автоматически переходит под Mozilla Public License - это называется Change Date. То есть Terraform 1.5 станет MPL в 2027 году, а 1.6 - чуть позже.
Для внутреннего использования - автоматизации своей инфраструктуры - ограничение не срабатывает. Запускать terraform apply в своём CI против своего облака можно. Проблема касается тех, кто продаёт управление инфраструктурой через Terraform как платформу или SaaS - вот там у юридических служб появляются вопросы.
Мы не продаём Terraform как продукт. Мы используем его как инструмент для управления инфраструктурой клиентов. Формально под ограничение не подпадаем. Но мы сели и выписали все сценарии, где могут быть вопросы, потому что «формально» и «без сюрпризов» - не одно и то же.
Как мы смотрели на это внутри
Первым делом пересмотрели, как именно мы используем Terraform в клиентских проектах:
- Инфраструктура клиента управляется нами через Terraform - стейт-файлы у клиента или в нашем S3-бакете, код в репозитории клиента, мы - исполнители. Здесь вопросов нет.
- Модули, которые мы написали под несколько клиентов - они не публикуются, не продаются, используются внутри. Тоже нет вопросов.
- Если бы мы предоставляли «Terraform-as-a-Service» с биллингом за применения - вот тут уже стоило бы говорить с юристами. У нас такого нет.
Короче, прямого риска нет, но неприятный осадок остался. Компания в одностороннем порядке меняет лицензию продукта, вокруг которого ты построил часть процессов, и делает это без долгих обсуждений. Это сигнал об отношении к сообществу, и его стоит учитывать при долгосрочном планировании.
OpenTofu: что это такое на данный момент
Реакция сообщества оказалась быстрой. OpenTF Foundation объявила о форке сразу после смены лицензии, а Linux Foundation взяла проект под крыло и переименовала его в OpenTofu. На момент написания этого поста - начало октября 2023 - OpenTofu ещё не выпустил стабильный релиз. Репозиторий активен, команда работает, но пользоваться в продакшне пока нечем.
Что важно понимать про форк прямо сейчас:
- Кодовая база - это именно форк Terraform до смены лицензии, то есть функциональность идентична тому, что было до 1.6.
- Провайдеры - провайдеры Terraform работают с OpenTofu без изменений, потому что протокол совместим. Это существенно: не надо ничего переписывать на уровне провайдеров.
- Стейт - формат стейт-файлов совместим, миграция не предполагает конвертации.
- Зрелость - форку несколько месяцев. Он не проходил лет продакшн-нагрузки. Это важно держать в голове.
Принципиальный вопрос - не «работает ли OpenTofu» технически, а «насколько устойчива его экосистема через год-два». Ответа пока нет.
Что мы решили делать
Паники нет, немедленной миграции тоже нет. Но и бездействия нет - мы зафиксировали позицию и составили план с несколькими горизонтами.
Немедленно. Заморозили апгрейд Terraform на новых версиях для существующих проектов на версии до 1.6 (до смены лицензии). Для новых проектов - думаем, что ставить, но скорее всего остаёмся на 1.5.x до прояснения ситуации с OpenTofu.
Ближайшие месяцы. Запускаем один небольшой внутренний проект на OpenTofu как только выйдет стабильный релиз. Не клиентский - внутренний. Смотрим, нет ли поведенческих расхождений с Terraform, как себя чувствует тулинг вокруг (tflint, tfsec, atlantis).
Стратегически. Если OpenTofu выйдет стабильным и экосистема не развалится - рассмотрим его как основной инструмент для новых клиентских проектов. Если что-то пойдёт не так - остаёмся на замороженном Terraform 1.5.x, пока не появится другой вариант.
Vault под BSL нас затрагивает меньше: мы используем его точечно, не как платформу. Там ситуация аналогичная - следим, но не форсируем переход.
Главный вывод
HashiCorp не сделала Terraform платным и не закрыла существующий код. Для большинства пользователей ничего не поменялось прямо сейчас. Но компания ясно дала понять, что готова в одностороннем порядке менять правила игры, если это выгодно бизнесу. Это честная позиция - просто теперь мы её знаем.
OpenTofu - пока ставка на будущее, а не готовый продакшн-инструмент. Мы не торопимся, но и голову в песок не прячем. Как только появится релиз - попробуем на реальном проекте и напишем, что вышло.