На конференции FOSSY 2026 несколько представителей Software Freedom Conservancy (SFC), организации, проводящей это мероприятие, выступили с докладом о продолжающемся нарушении Affero General Public License версии 3 (AGPLv3). Брэдли Кюн, Карен Сэндлер и Денвер Гингерич рассказали о разных аспектах нарушения, которое касается программного обеспечения для 3D-принтеров компании Bambu Lab, и о том, что делается для предоставления пользователям альтернатив. Особенно любопытно то, что механизм обхода лицензии, используемый компанией, — это именно то, для предотвращения чего и была написана AGPL.

[Kühn, Sandler, & Gingerich]

Кюн начал сессию с замечания, что уже более 30 лет является активистом сообществ свободного и открытого ПО (FOSS), и что нынешний момент даёт «больше возможностей для активизма, чем когда-либо за всю карьеру». Раньше ему и коллегам приходилось разбираться с разного рода катастрофами, но последние шесть-восемь месяцев вместо этого приходится разбираться с возможностями. Сэндлер добавила, что предлагаемые возможности сложны: «это не тот случай, когда людям говорят: „хотите эти деньги или те?“».

Возможности, о которых идёт речь, на самом деле не про деньги, отметил Кюн, а про способы «дать активистам делать дело и вовлекать людей». За последние примерно полгода SFC успешно наладила контакт с «целым сообществом энтузиастов», которые прежде лишь поверхностно были знакомы с FOSS, по множеству тем, связанных со свободой: «свободное ПО, свободная культура, свободное творчество». Это воодушевляет, но Кюн забежал вперёд — этим история заканчивается, поэтому он предложил вернуться к началу.

Предыстория

Некоторое время назад была изобретена 3D-печать, за развитием которой Кюн наблюдал со стороны: пожар на макетной плате во время учёбы убедил его, что стоит заниматься исключительно программным обеспечением. Он симпатизирует культуре 3D-печати и с удовольствием слушает доклады на эту тему, но сам не участвует в сообществе. В рамках расследования нарушения лицензии он вместе с Гингеричем прошёл ускоренный курс истории 3D-печати, хотя у Гингерича уже был солидный бэкграунд в этой области.

[Bradley Kühn]

Кюн поделился некоторыми фактами: любительская 3D-печать начиналась как курьёз. Желающим обзавестись 3D-принтером приходилось собирать его самостоятельно — готовых устройств на рынке не существовало. Некоторые из тех, кто собирал первые принтеры, впоследствии основали компании, которые сейчас продают 3D-принтеры, — это ключевой элемент развития сообщества. Как и Linux, 3D-принтеры начинались как хобби и оставались «хобби достаточно долго, чтобы культуру энтузиастов не смогли мгновенно уничтожить венчурные капиталисты».

«Прекрасное» в 3D-печати заключается в том, что разработчики нужного для устройств софта обращались к сообществу свободного ПО и «дважды думали», прежде чем выбрать лицензию для своего кода. Важный элемент инструментария для использования этих устройств — программа под названием «слайсер», которая превращает 3D-модель (некоторые слайсеры также помогают эти модели строить) в тонкие 2D-срезы, конвертируемые в язык, понятный аппаратной части принтера. Кюн сравнивает этот язык с ассемблером — упрощение, но оно даёт удобную концептуальную рамку.

Давний энтузиаст свободного ПО Алессандро Ранеллуччи создал слайсер под названием «Slic3r». По словам Кюна, единственная претензия к Ранеллуччи — это выбор названия, из-за которого в докладе трудно отличить конкретную программу от целого класса программ, поэтому Кюн использовал выражение «слайсер с тройкой», чтобы их различать. В видеозвонке Ранеллуччи рассказал, что выбрал AGPLv3 для Slic3r именно чтобы избежать истории вроде той, что случилась с Bambu Lab: «я предвидел всё это, потому что больше всего опасался, что кто-нибудь сделает „Slic3r как сервис“».

Хотя существуют 3D-принтеры, использующие другие слайсеры, найти принтер, который лучше всего работает не с каким-либо форком Slic3r, довольно сложно, отметил Кюн. Активных форков около 18, но самый известный — PrusaSlicer. Он появился благодаря другу Ранеллуччи, Йозефу Прусе, который увидел в 3D-печати не просто бизнес-возможность, а «возможность бизнеса на основе свободного ПО». Пруса построил компанию, которая предоставляла клиентам чертежи принтеров, свободное ПО, свободную прошивку и так далее; какое-то время эта компания была доминирующим игроком на рынке.

Параллельно развивался рынок промышленных 3D-принтеров для производства — устройств размером с комнату стоимостью в сотни тысяч долларов. Тем временем любительские принтеры ценой 500–3000 долларов «становились по-настоящему, по-настоящему хороши», особенно в верхнем сегменте этого диапазона.

Появление Bambu

Таким было состояние рынка в 2019-м и в доковидном 2020 году. Во время пандемии множество людей увлеклись хобби, включая 3D-печать, и это привлекло на рынок китайскую компанию Bambu Lab. По словам Кюна, ходят слухи о связях компании с китайским правительством, хотя это не подтверждено. Bambu Lab решила начать с нуля и заняться производством 3D-принтеров; к 2025 году компания контролировала 38–48% (в зависимости от аналитического отчёта) рынка принтеров ценой 500–3000 долларов. Отчасти это связано с тем, что рынок промышленных принтеров размером с комнату умирает, а покупатели осознали, что их можно заменить парком гораздо более дешёвых, качественных и надёжных принтеров от таких компаний, как Bambu Lab; компания нацелилась и на этот рынок, и на любительский, чем и объясняется её успех.

Естественно, Bambu Lab понадобился слайсер, поэтому компания начала поставлять модифицированный PrusaSlicer (под названием Bambu Studio), который она получила по AGPLv3, но без публикации исходного кода или предложения его предоставить. Так продолжалось до 2022–2023 годов, отметил Кюн, пока давление со стороны сообщества 3D-печати фактически не вынудило Bambu Lab выпустить исходный код — который, как это почти всегда бывает с первым релизом, не соответствовал реальному коду, из которого была собрана программа.

«Нельзя не восхититься изобретательностью нарушителей copyleft», — сказал Кюн; они часто полагаются на механизмы, которые реального судью не заинтересуют. В данном случае Bambu Studio выводила запрос на скачивание «ещё немного всего» с классическим выбором «Да» или «Спросить позже»; в итоге пользователи понимают, что часть функциональности слайсера не работает, пока не нажмёшь «Да». Загружаемые дополнительные файлы — это два файла .so, собранные из исходников на C++. Эти файлы динамических библиотек подгружаются в слайсер во время работы — что явно видно по вызовам dlopen() в опубликованном исходном коде.

По словам Кюна, Bambu Studio со всеми своими компонентами считалась бы объединённой работой по обычной GPLv3, но у компании есть сетевой компонент, который упирается ещё и в ограничения AGPLv3. Динамически загружаемая часть слайсера представляет собой тонкий слой, обращающийся по сети к обширному 3D-приложению, работающему на серверах Bambu Lab; она передаёт «ключ» — просто определённую строку User-Agent, — который открывает доступ к дополнительной функциональности на серверах. Компания утверждает, что этот User-Agent, одинаковый для всех клиентов, является механизмом защиты от обхода по DMCA.

Но именно это AGPLv3 и призвана предотвратить, подчеркнул Кюн: «нельзя разместить часть своего приложения под Affero-GPL на своём веб-сервере и держать её проприетарной». Пользователь 3D-принтеров из Польши, Павел Ярчак, реверс-инжинирнул строку User-Agent и сетевой код, за что получил от Bambu Lab уведомление об удалении по DMCA. «GitHub, конечно, выполнил требование — потому что Microsoft». Ярчак продолжает поддерживать код в своём слайсере (OrcaSlicer), который зеркалируется в репозитории SFC в рамках проекта baltobu, направленного на противодействие нарушениям AGPLv3 со стороны Bambu Lab.

[Denver Gingerich]

Гингерич отметил, что Bambu Lab нарушает не только AGPLv3, но и GPLv2, не предоставляя исходный код Linux на основе Buildroot (и других компонентов под copyleft-лицензиями), используемого в прошивке некоторых моделей 3D-принтеров. Он скачал с сайта Bambu Lab образ прошивки размером 300 МБ, но не смог найти ни исходного кода, ни предложения его предоставить.

По его словам, Bambu Lab происходит из культуры, вдохновлённой Кремниевой долиной и выстраиваемой в Китае, что включает крупные венчурные инвестиции в компании по подобию американской модели. У Bambu Lab глубокие карманы, что позволило ей обойти конкурентов по разным направлениям, активно продвигать продукцию через соцсети и подобные каналы, а также контролировать нарратив о своей продукции на таких форумах, как Reddit. Компания пошла на те же короткие пути, что и компании Кремниевой долины, «попутно нарушая copyleft-лицензии».

Гингерич считает, что эта ситуация даёт «очень хорошую возможность» «вернуть себе контроль, который нам причитается по выбранным ими же лицензиям». Bambu Lab могла бы потратить инвестиции на «переписывание всего с нуля», но не стала этого делать; существует большой объём качественного свободного и открытого ПО, воспроизведение которого «занимает много времени».

Bambu Lab фактически применила распространённый подход «тогда подавайте на нас в суд» к этим нарушениям, что, безусловно, является одним из вариантов, отметил Гингерич. Но разные способы устранения подобных проблем имеют разные сроки; вовлечение сообщества в реверс-инжиниринг и замену проприетарных компонентов, вероятно, займёт гораздо меньше времени, чем судебный процесс. Кюн заметил, что компании-нарушители никогда прямо не говорят «подавайте на нас в суд» — они просто перестают отвечать.

Вовлечённость

[Karen Sandler]

Сэндлер отметила, что одна из причин, почему эти нарушения так интересны, — они привлекли в сообщество FOSS больше новых людей, чем любая другая тема, над которой когда-либо работала SFC. Люди, никогда толком не слышавшие о copyleft или FOSS, теперь воодушевлены этим; они «понимают, что эти лицензии дают права, и что с ними можно что-то сделать». Обычно, когда SFC говорит о подобных вопросах, она обращается к людям в зале или к тем, кто посмотрит запись сессии — «узкому кругу людей, которым сложно объяснить потенциал происходящего». Но сообщество 3D-печати действительно подхватило эту идею и понесло её дальше: «несколько ютуберов выпустили подробные разборы», а комментаторы на Reddit и в других местах «так воодушевлялись, что писали: вау, вот что означают эти лицензии, нужно использовать их чаще!».

После этого более десяти минут ушло на вопросы аудитории, первый из которых звучал так: «что заставит Bambu следовать AGPL?» Гингерич ответил, что существует множество подходов, включая судебные иски вроде иска SFC против Vizio (ныне принадлежащей Walmart); поскольку copyleft-лицензии также являются договорами, этот иск основан на договорном праве. Между Vizio/Walmart и разработчиками, создавшими код под GPLv2 и LGPLv2.1, использованный в телевизорах, существует договор; SFC (и любой, кто покупает телевизор Vizio) являются «третьими лицами-бенефициарами» этого договора, и SFC подаёт иск, чтобы добиться прав, предусмотренных этим договором.

Обеспечение исполнения договоров таким способом — стандартная практика, отметил Кюн, но, насколько известно, для семейства лицензий GPL она ранее не применялась. Более традиционный путь принуждения к исполнению — подать иск как правообладатель кода, что SFC и делала в прошлом. Есть и другие механизмы, включая использование различных торговых соглашений с их пунктами об «интеллектуальной собственности» в качестве инструмента. Хотя нормы об интеллектуальной собственности могут вызывать неприязнь, это согласуется с изначальным замыслом copyleft: «взять любое подобное правило, перевернуть его и использовать для защиты свободы программного обеспечения».

Параллельно с работой над темой 3D-печати SFC провела сбор средств, который в итоге значительно превысил амбициозную цель в 250 000 долларов, отметил Кюн; это была «цель, которую, как мы думали, мы, вероятно, никогда не достигнем». Сэндлер добавила: «мы выбрали сумму, с которой, как нам казалось, реально можно добиться чего-то значимого», хотя были неплохие шансы её не достичь. «Мы намного её превысили, и большинство пожертвований были совсем крошечными», что стало приятным сюрпризом. Кюн отметил, что теперь SFC может нанять штатного юриста по судебным разбирательствам на полную ставку, и призвал присутствующих распространить эту новость.

Многие считают лицензию GPL «волшебной пыльцой», сказала Сэндлер: стоит выбрать лицензию — и все начнут её соблюдать, проблема решена сама собой. Очевидно, это не так, что подтвердили энергичные покачивания головами присутствующих. «Если никто никого не привлекает к ответственности, если никто не говорит „подождите-ка, вы на самом деле этого не делаете“, никто и никогда этого не сделает».

Существует несколько путей добиться исполнения лицензии, и это требует определённой изобретательности, отметила Сэндлер. SFC пытается «показать разные способы, которыми можно добиться от компаний правильного поведения». Она призывает всех требовать полный и соответствующий исходный код для всех приобретаемых устройств — это продемонстрирует наличие потребительского спроса на эти права. Возмущённое видео на YouTube или тред на Reddit в случае, если исходный код не публикуется, — это тоже форма принуждения к исполнению лицензии, отметила она.

Ещё один вопрос касался того, эффективен ли судебный процесс как инструмент принуждения. Гингерич напомнил, что публикация исходного кода в результате принудительных мер против Linksys стала первым коммитом проекта OpenWrt. Это ведёт к проектам, которые «помогают нам взять под контроль свои устройства, чтобы они делали то, что нужно нам, а не то, что нужно компаниям, которые их продают».

Кроме того, штатные юристы компаний регулярно благодарят Сэндлер за судебные иски, потому что это заметно облегчает их работу, отметила она. Если за нарушение лицензии не следует никаких последствий, юристам компании сложно обеспечивать соблюдение лицензии. Бизнес-подразделение компании хочет знать, во что обходится нарушение лицензии, «а без судебных исков ответа на этот вопрос нет».

Последний вопрос касался устранения коренной причины нарушений лицензий, что можно трактовать по-разному. Кюн отметил, что устранить коррупцию в мировом масштабе — задача не из простых; то же касается и исправления капитализма, добавила Сэндлер. Коренная проблема — дисбаланс власти, отметил Гингерич, и именно с ним борются FOSS и более широкое движение за право на ремонт. Завершая, Сэндлер сказала, что цель этих движений — бороться с коренной причиной, добиваясь лучшего мира через улучшения в продуктах, технологиях и законодательстве; для этого требуется активное участие и помощь нетехническим людям в том, чтобы они тоже прониклись этими вопросами. Задача, конечно, тоже выглядит немаленькой.