Agpl-нарушение в 3d-печати
Ты когда-нибудь задумывался, что случится, если компания возьмёт свободный код, изменит его и будет использовать для своего продукта — но исходный код никому не даст? Звучит как нарушение лицензии, правда? Именно это и произошло с 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 строка
│ компании │ Проприетарный протокол
└─────────────────┘
Как они это сделали
Суть проста. 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? Подождём.
Ссылки
- Slic3r на GitHub — оригинальный слайсер с лицензией AGPLv3
- Slic3r — домашняя страница проекта
- baltobu mirror — зеркало кода OrcaSlicer от Software Freedom Conservancy
- OrcaSlicer на GitHub — форк, продолжающий развиваться несмотря на давление
Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.