3 апреля на сайте InfoWorld вышла статья известного публициста на тему Open Source и юриста Matt Asay под названием «OpenTofu, возможно, демонстрирует нам, как не надо делать форк». Лидер-абзац в статье довольно жёсткий:
Не согласны с лицензией? Просто сделайте форк проекта, но не выкидывайте его код — говорите, что он всегда был доступен публично. Сравните код и лицензию HashiCorp с версией OpenTofu.
Автор, используя обороты вроде «возможно» и «судя по всему», довольно жёстко обвиняет сообщество OpenTofu в том, что они включили в своей проект часть кода Terraform, который доступен только под лицензией BUSL и не может быть свободно переиспользован, фактически вменяя разработчикам свободного проекта воровство.
Напомним, в августе 2023 года HashiCorp сменила лицензию на Terraform с MPLv2 на BUSL, не соответствующую критериям Open Source Initiative. После этого ряд игроков рынка сделал форк еще свободной версии Terraform и запустил проект, в итоге получивший название OpenTofu. Через некоторое время проект был передан в Linux Foundation и с тех пор развивался под крылом этой организации.
Ниже — главные мысли автора статьи (мы постарались сохранить стилистику).
OpenTofu — чрезвычайно многообещающий, но сложный в реализации проект. Настолько сложный, что OpenTofu, возможно, незаконно заимствовал код HashiCorp, чтобы не отставать от Terraform.
OpenTofu, судя по всему, удалил код Terraform, связанный с новой фичей, связанной с блоком removed
, впервые реализованной в Terraform версии 1.7, которая была выпущена уже под Business Software License (BUSL) — через несколько месяцев после создания самого OpenTofu. То есть разработчики OpenTofu взяли этот код, удалили заголовки и попытались перелицензировать его под публичной лицензией Mozilla (MPL 2.0).
Ребята, открытый исходный код работает не так. Вы можете не соглашаться с тем, какую лицензию выбрал правообладатель, но у вас нет права брать чужой код, а потом копировать его и менять лицензию.
OpenTofu был запущен в сентябре 2023 года с большой помпой и «официальными гарантиями» поддержки от более чем 140 организаций, среди которых Cloudflare, Harness, Oracle и GitLab. Конечно, основные мейнтейнеры в основном пришли от прямых конкурентов HashiCorp (Spacelift и env0), которые построили свой бизнес на Terraform и были расстроены сменой лицензии HashiCorp. Справедливо (тут автор явно использует сарказм — Прим. ред.).
К январю проект вовсю говорил о том, что OpenTofu уже доступен, даже несмотря на то, что в нём упоминались функции, которые ещё не были реализованы в Terraform и в самом OpenTofu должны были появиться позднее. Однако, несмотря на оптимистичное начало, команда вскоре начала осознавать сложность реализации этой функции. Безопасность — это сложно. (Возможно, ребята из HashiCorp, в конце концов, не были идиотами). Если такая скорость разработки звучит слишком хорошо и нереалистично, особенно учитывая, что за проектом стоит наспех собранная группа относительно небольших компаний (и ни одного из крупных поставщиков облачных технологий), возможно, так оно и было. В конце концов, что бы кто ни думал об изменении лицензии HashiCorp, компания потратила десятилетие на создание продукта. Инженерная мощь, стоящая за подобными усилиями, не проявится в течение нескольких месяцев, какими бы высокими ни были идеалы основателей.
В Terraform версии 1.7 HashiCorp представила важную новую функцию: автоматизация удаления ресурсов из state с использованием блока removed
, которая позволяет Terraform лучше управлять удалением ресурсов. Думайте об этом как о подходе, основанном на конфигурации к terraform state rm. Важно отметить, что эта функция была представлена в конце ноября 2023 года, то есть уже после перехода HashiCorp на BUSL. Если кто-то хотел использовать блок removed
для автоматизации удаления, он не мог использовать эту функцию так, будто бы она была выпущена под MPL.
К концу февраля 2024 года OpenTofu выпустил функциональность, аналогичную удалённой автоматизации блокировки от HashiCorp. Не только с точки зрения того, что она делает, но и с точки зрения кода, написанного для её выполнения. Взгляните на эти репозитории и скажите мне, если вы не видите того же самого:
remove_statement.go от Terraform и remove_statement.go от OpenTofu;
Terraform removed.go и OpenTofu removed.go;
remove_target_test.go от Terraform и remove_test.go от OpenTofu;
remove_target.go от Terraform и remove_endpoint_test.go от OpenTofu.
Закон об авторских правах сложен. По образованию я юрист, но не практикую, поэтому не могу считаться очень хорошим юристом. Важнее то, что OpenTofu, похоже, удалил некоторые комментарии в нескольких файлах. Возможно, они к тому же изменили пару строчек в нескольких местах. Возможно, кто-то даже мог бы утверждать, что OpenTofu на самом деле не использовал код Terraform, лицензированный BUSL. Возможно.
Однако такой аргумент становится менее убедительным, когда вы смотрите на заголовки OpenTofu в файлах. Вот заголовок, который HashiCorp использовал в своих файлах с кодом блока removed
:
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
А вот заголовок, который использовал OpenTofu:
// Copyright (c) 2023 HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
Видите проблему? OpenTofu признает, что использует код HashiCorp, но делает вид, что этот код лицензирован по MPL. Только это не так. Вообще. Весь этот код был выпущен после перевода Terraform на BUSL. В лучшем случае сообщество OpenTofu выдает желаемое за действительное, отчаянно надеясь, что оно сможет задним числом волшебным образом превратить код, лицензированный BUSL, в код, лицензированный MPL. В худшем случае разработчики OpenTofu обманным путём незаконно использовали интеллектуальную собственность HashiCorp и попытались присвоить её себе.
Что бы ни думали разработчики OpenTofu, такое поведение грубо противоречит позитивному «подходу, ориентированному на сообщество» и уж точно никак не демонстрирует «ценности открытого исходного кода», как провозглашается в пресс-релизе Linux Foundation. Это очень похоже на нарушение интеллектуальной собственности HashiCorp. Со стороны OpenTofu довольно логично не принимать новые лицензионные условия HashiCorp и форкать проект; однако с их стороны также совершенно незаконно брать код HashiCorp и применять к нему ту лицензию, которая им по душе.
А ещё это уж больно похоже на провал в менеджменте. Cloudflare, Oracle и другие компании никак не могли подписаться на такое поведение сообщества, но, похоже, именно это они и получают в итоге.
Пикантности этой статье добавляют три факта:
Matt Asay руководит DevRel-направлением в MongoDB — ещё одном Open Source-проекте, которой в недавнем прошлом сменил лицензию на не-Open Source.
Статья вышла до официального сообщения о том, что юристы HashiCorp отправили претензию сообществу OpenTofu. Возникает вопрос, откуда DevRel с юридическим, а не техническим бэкграундом выкопал все эти факты? В статье об этом, между прочим, — ни слова. Мем с Киселевым с канала «Россия» как нельзя кстати :)
OpenTofu — часть Linux Foundation, организации, у которой высокая репутация во всём мире: как среди инженеров, так и в бизнес-сообществе.
Обсуждения статьи в интернете
На самом сайте InfoWorld нельзя оставить комментарии, поэтому дебаты разгорелись на других площадках:
в Twitter у Matt Asay, где он поделился ссылкой на статью;
на Reddit;
в Slack-пространстве OpenTofu: первый тред, второй тред.
Причём реакция практически всех комментаторов была однозначной:
Статья написана слишком обвинительным тоном, при этом мнения второй стороны никто не спросил.
Реализация фичи отличается, а сходство будет просто в силу того, что реализуются одинаковые функции и реализуются они на Go, а этот язык дает не так много вариантов реализации одной и той же логики.
В заголовках файлов упоминаются авторские права HashiCorp, потому что так принято делать.
Мэтт, ты прекрасно всё знаешь сам. Именно так и происходит, когда ты делаешь форк. Форк всегда сохраняет предупреждения об авторских правах их прежнего проекта. И я посмотрел на код [обоих проектов]: то, что в них выглядит похоже, — просто следствие того, что они реализуют одну и ту же функциональность. А то, что в них выглядит по-разному, — я вижу как «разные SDE».
Привет! Я член core-команды OpenTofu.
Заголовки с копирайтами в новых файлах необходимы, потому что иногда мы вынуждены перемещать код из старых файлов.
Больше информации — в этом посте.
А вот ещё несколько ответов от представителей сообщества:
Письмо от юристов из HashiCorp
Примерно через неделю после публикации этой статьи в LinkedIn проекта OpenTofu появился пост следующего содержания:
Проект OpenTofu недавно узнал о письме юристов HashiCorp, в котором утверждается, что OpenTofu не соблюдает условия лицензии BSL, регулирующей кодовую базу Terraform. Проект OpenTofu категорически не согласен с любыми предположениями о том, что он незаконно присвоил и неправильно использовал исходный код или иным образом нарушил лицензию BSL на продукт HashiCorp. На самом деле мы предполагаем, что HashiCorp может смешивать код, исходники которого ранее были открыты под лицензией MPL, и свежий код, опубликованный уже под BSL. Мейнтейнеры OpenTofu исследовали этот вопрос и намерены в ближайшие дни выпустить письменный ответ с более подробным объяснением своей позиции.
Саму претензию HashiCorp можно посмотреть по ссылке (pdf) — оказалось, что юристы прислали её ещё 3 апреля.
Ответ сообщества OpenTofu
11 апреля команда OpenTofu опубликовала долгожданный ответ — хотя к тому моменту уже мало кто сомневался, что OpenTofu не виноваты и обвинение было ложным. К ответу команда проекта приложила детальный анализ спорного кода на 46 страницах и скан официального ответа на претензию юристов HashiCorp.
Выдержка из статьи:
Команда OpenTofu категорически не согласна с любыми предположениями о том, что она незаконно присвоила, использовала неверные источники или иным образом неправильно использовала BSL-код HashiCorp. Все подобные заявления не имеют под собой никакой фактической основы.
HashiCorp подала заявления о нарушении авторских прав в письме о прекращении деятельности. Эти претензии абсолютно необоснованны.
Можно чётко проследить, что спорный код был скопирован из более старого кода, лицензированного ещё под MPL-2.0. Похоже, что HashiCorp и сама скопировала тот же код, когда реализовывала свою версию этой функции. Всё это легко увидеть в нашем подробном анализе SCO, а также в их собственных комментариях, которые как раз указывают на это.
Эта статья расставила все точки над i, претензии HashiCorp были отклонены.
Извинения Matt Asay
В тот же день Matt Asay опубликовал у себя в Twitter извинения.
Но не все подписчики остались довольны результатом — кто-то продолжал спрашивать, зачем он вообще опубликовал свою статью, а кто-то выражал сожаление, что вместо разработки новых функций сообщество OpenTofu вынуждено было проводить детальный анализ спорного фрагмента кода и составлять документ на 46 страниц.
Кроме того, автор статьи добавил в свой материал дисклеймер. В нём он сообщал, что, учитывая ответ OpenTofu, можно с уверенностью сказать — разработчики использовали код Terraform в рамках лицензии и обвинять их нет никаких оснований.
Выводы из этой истории
HashiCorp явно ревностно следит за OpenTofu и воспринимает проект как угрозу для Terraform.
Репутация Matt Asay как публициста, возможно, будет довольно сильно подпорчена.
Если вы пишете статью с серьёзными обвинениями в чей-то адрес, лучше для начала погрузиться в вопрос более основательно. Особенно если вы обвиняете подразделение уважаемой во всём мире организации — такой как Linux Foundation. И не стоит бросаться обвинениями, пока вы не выяснили всех подробностей, — лучше выбирать более нейтральный и беспристрастный тон.
Linux Foundation — зрелая организация, которая не зря имеет хорошую репутацию в инженерной и бизнесовой среде. А сообщества вокруг её проектов управляются достаточно зрелыми специалистами, которые способны спокойно и хладнокровно действовать даже в эмоционально очень сложной ситуации.
Немного конспирологии: вся последовательность действий выглядела так, будто бы это была некая атака, спланированная несколькими коммерческими структурами, которые в недавнем прошлом отказались от Open Source-лицензий на свои продукты.
Комментарии (32)
Knightt
15.04.2024 14:02+15Немного конспирологии:
OpenTofu это все и затеяли... забайтили HashiCorp на обвинения в нарушении лицензии, выдали 46 страничный отчет (который подготовили заранее), что это все голословные обвинения! и теперь, какое-то время, можно спокойно забирать код у HashiCorp, так как те 100500 раз подумают, прежде чем опять обвинять в нарушении лицензии. profit!
ну и да, на го довольно сложно писать "как хочешь" )
DeskundigeICT
15.04.2024 14:02Мне кажется, что source-available лицензии перестанут работать. Почему условный русский инженер может воровать технологии из трофейного американсого танка, который угнали у ВСУ? А делать тоже самое с американским Terraform не сможет?
TimurTukaev Автор
15.04.2024 14:02Ну или как минимум просто поглядеть на код и написать изложение)) Тоже метод
vanxant
15.04.2024 14:02+14А где почитать опенсурс (да неважно, можно и не опен) исходники от танка? Друг спрашивает.
resistor
15.04.2024 14:02+9Эй, член core-команды OpenTofu здесь.
Ужасный перевод, зачем вы так?
TimurTukaev Автор
15.04.2024 14:02+1да вроде норм
ajijiadduh
15.04.2024 14:02+7что за хранители? может стоило оставить мейнтейнеры?
TimurTukaev Автор
15.04.2024 14:02у нас так принято переводить)
vcKomm
15.04.2024 14:02А большая помпа вам как?)
TimurTukaev Автор
15.04.2024 14:02Нет, ну я понимаю, что после какого-нибудь Остина Пауэрса слово помпа только в похабном значении воспринимается, но это словосочетание есть в словаре русского языка:)
selivanov_pavel
15.04.2024 14:02+1А собственный registry для модулей OpenTofu так и не сделали? А то вроде проект есть, а как использовать - непонятно.
Tony-Sol
15.04.2024 14:02+2Вроде работает прям в тупую drop-in заменой, если конечно речь про популярные модули
selivanov_pavel
15.04.2024 14:02Хм, а где доки к модулям? Терраформовские, по идее, неактуальны - совместимость обещают с терраформом 1.7, а дальше расходятся по функциональности.
wifage
15.04.2024 14:02+3Свободные лицензии в отношении корпов работаю абсолютно неправильно. Давно пора добавить пункт, что при пере-использовании открытого кода корпы должны отчислять в фонд сообщества половину полученной прибыли от продаж лицензий на продукт, основанного на этом коде. А текущая ситуация это просто паразитизм корпов на энтузиастах.
shurup
15.04.2024 14:02+2Такой моделью (Post-Open Source) занимается Bruce Perens:
Post-Open, as he describes it, is a bit more involved than Open Source. It would define the corporate relationship with developers to ensure companies paid a fair amount for the benefits they receive. It would remain free for individuals and non-profit, and would entail just one license.
https://www.theregister.com/2023/12/27/bruce_perens_post_open/
vanxant
15.04.2024 14:02+4Да нет в промышленном опенсорсе энтузиастов. Студенческие поделия с кучей багов не в счёт. Те же разработчики ядра Linux практически поголовно сидят на немаленьких зарплатах у бигкорпов, начиная с самого Линуса. Никто не будет на энтузиазме и манне небесной дебажить дрова к кривым железякам 10 лет подряд.
shurup
15.04.2024 14:02+3Те же разработчики ядра Linux практически поголовно сидят на немаленьких зарплатах у бигкорпов
Многие, конечно, но с категорическим «нет» я бы поспорил :-) Из статистики по Linux v6.8, в топе Most active 6.8 employers By changesets помимо собственно компаний есть категории Uknown (7.5%) и None (5.3%). В топе по contributions в Kubernetes за последний год — на пятом месте категория Independent вместо компании.
Bromles
15.04.2024 14:02+5А потом выясняется, что и у xz один мейнтейнер с подвала десятилетие на себе тянет проект, и у openssl двое независимых. Собственно, заявление от них как раз и было, когда уязвимость в openssl нашли, что они перерабатывают много лет за спасибо и два бутерброда над проектом. Который почти все корпорации мира просто берут и юзают, ничего не отдавая взамен, а потом удивляются, что там баг случился.
Я уверен, что если поискать, то таких примеров полно. Просто никого не волнует, что там кто-то в соло упахивается над популярным проектом, пока все работает. Только при критических багах и уязвимостях вдруг выясняется
vanxant
15.04.2024 14:02+3Ну да, с абсолютным "нет" я конечно погорячился. Но всё равно такие ситуации редкость.
datacompboy
TimurTukaev Автор
это аббревиатура — Source Code Origination)
datacompboy
Сама ситуация напоминает историю SCO vs Linux :) та, SCO, которая окончательно юридически исчезла в 12м
m-musikhin
SCO - Santa Cruz Operation, родина компании
TimurTukaev Автор
а, теперь как понял)
ZimniY
Нужно было открывать в IE6