Agpl-нарушение в 3d-печати

27.08.2026 · 5 мин

Ты когда-нибудь задумывался, что случится, если компания возьмёт свободный код, изменит его и будет использовать для своего продукта — но исходный код никому не даст? Звучит как нарушение лицензии, правда? Именно это и произошло с Bambu Lab, производителем 3D-принтеров.

Как всё началось: slic3r и agpl

Автор статьи на LWN.net рассказывает, как несколько лет назад в сообществе 3D-печати появился инструмент под названием Slic3r — программа-«слайсер», которая превращает трёхмерную модель в инструкции для 3D-принтера. Создатель проекта Алессандро Ранеллуччи намеренно выбрал для него лицензию AGPLv3 (Affero General Public License версии 3 — особая версия GPL, которая требует открывать исходный код даже если код работает на сервере, а не на компьютере пользователя). Почему именно AGPL? Потому что она закрывает лазейку, которую оставила обычная GPL: если ты используешь свободный код в веб-сервисе, ты всё равно обязан предоставить исходники.

«Я предвидел всё это, — сказал Ранеллуччи. — Моя главная проблема была в том, что кто-то сделает Slic3r как услугу».

Опасения оказались не напрасными.

Bambu lab врывается на рынок

В 2019–2020 годах, когда пандемия дала толчок домашним хобби, китайская компания Bambu Lab вышла на рынок 3D-принтеров. К 2025 году она контролировала 38–48% рынка принтеров стоимостью от 500 до 3000 долларов. Рынок огромных промышленных принтеров умирал, а потребители поняли: можно купить десяток компактных машин и печатать быстрее и дешевле.

Bambu Lab нужна была программа для подготовки моделей к печати. Компания взяла PrusaSlicer, изменила его и назвала Bambu Studio. Проблема? Исходный код модификаций никто не увидел.

СХЕМА ОБХОДА AGPL
──────────────────
┌─────────────────┐
│  Bambu Studio   │
│  (модифицирован │
│   PrusaSlicer)  │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  .so-библиотеки │  Загружаются динамически
│  (dlopen())     │  через вызовы dlopen()
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Bambu Lab      │  Пользователь нажимает
│  (серверы)      │  «Да» или «Спросить позже»
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Закрытое API   │  Ключ — User-Agent строка
│  компании       │  Проприетарный протокол
└─────────────────┘
Механизм обхода AGPL: динамическая загрузка и серверный компонент

Как они это сделали

Суть проста. Bambu Studio при запуске просит пользователя скачать «немного дополнительных материалов». Пользователь думает — обновление. Соглашается. А загружаются два файла .so — скомпилированные библиотеки. Внутри — прослойка, которая отправляет запросы на серверы Bambu Lab. Там работает полноценное приложение. Пользователь получает результат.

Компания утверждает, что User-Agent — это механизм защиты по DMCA. Но это именно то, против чего AGPL была написана: нельзя взять свободный сетевой код и спрятать его на своём сервере, оставив закрытым.

РЕАКЦИЯ СООБЩЕСТВА
──────────────────
┌──────────────────────┐
│  Реверс-инжиниринг   │
│  протокола Bambu Lab  │
└──────────┬───────────┘
           │
           ▼
┌──────────────────────┐
│  Уведомление DMCA    │
│  и удаление GitHub   │
└──────────┬───────────┘
           │
           ▼
┌──────────────────────┐
│  Зеркало кода и      │
│  продолжение развития │
└──────────────────────┘
Сообщество ответило реверсом, зеркалами и поддержкой форков

Реакция сообщества

Пользователь из Польши Павел Ярчак сделал обратную инженерию и воссоздал протокол. Bambu Lab отправила ему уведомление DMCA, GitHub удалил репозиторий. Но Ярчак продолжает поддерживать OrcaSlicer — ещё один форк слайсера. Проект baltobu от Software Freedom Conservancy теперь зеркалирует его код.

Кроме того, Bambu Lab нарушает ещё и GPLv2: в прошивке некоторых принтеров используется Linux на базе Buildroot, а исходный код никто не предоставил.

Практический вывод: как такое предотвратить

Если ты разработчик свободного проекта, выбирай AGPL, если есть сетевой компонент, следи за форками и документируй всё. Если ты компания, не используй AGPL-код без соблюдения условий, не прячь код на сервере и либо инвестируй в переиспользование, либо напиши своё.

Меня в этой истории поражает не столько нарушение само по себе, сколько цинизм схемы. Bambu Lab не просто взяла чужой код — она построила целую инфраструктуру вокруг обхода. Динамическая загрузка библиотек, серверный компонент, подмена User-Agent — это архитектурное решение.

Это ещё и показательный пример того, как сообщество свободного ПО превращает спор о лицензии в просвещение. Тысячи энтузиастов 3D-печати теперь знают, что такое AGPL и почему она важна.

Вопрос только один: заплатит ли Bambu Lab? Подождём.

Ссылки

Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.