1P by GN⁺ 3시간전 | ★ favorite | 댓글 1개
  • Bambu Studio는 AGPLv3 기반 PrusaSlicer 수정 버전이지만, 독점 네트워킹 라이브러리의 전체 소스와 설치 정보를 제공하지 않았음
  • AGPLv3의 Corresponding Source에는 생성·설치·실행·수정에 필요한 코드와 밀접히 결합된 동적 링크 라이브러리 소스가 포함됨
  • Bambu는 Paweł Jarczak이 Orca Slicer를 Bambu 서버 구성 요소와 연동하도록 수정한 포크를 삭제하라고 요구해 추가 제한 금지 조항과 충돌함
  • SFC는 baltobu 프로젝트로 네트워킹 라이브러리 역공학, Orca Slicer for Bambu 유지, Bambu Studio 대체 포크인 viscose를 추진함
  • SFC는 3D 프린터 소프트웨어 수리권 활동을 위해 두 달간 US$250,007 모금을 시작하고, 2026년 6월 상설 위원회 세부 내용을 공개할 예정임

확인된 AGPLv3 위반

  • libbambu_networking 소스 코드 미제공

    • Bambu Lab의 3D 프린터용 소프트웨어와 펌웨어에 대한 AGPLv3 준수 조사에서 두 가지 위반이 확인됨
    • Bambu StudioSTL 같은 디지털 설계 모델을 프린터가 출력할 수 있는 수평 2D 레이어로 나누는 Slicer임
    • Bambu는 4년 동안 Bambu Studio가 경쟁사의 AGPLv3 라이선스 Slicer인 PrusaSlicer의 수정 버전이라고 공개해 왔음
    • PrusaSlicer는 Alessandro Ranellucci가 처음 만든 Slic3r의 수정 버전임
    • Bambu Studio의 일부 소스 코드는 Bambu의 GitHub 조직 계정에 있지만, Bambu는 Bambu Studio를 독점 라이브러리와 결합해 UI의 상호작용 프롬프트를 통해 사용자에게 배포한다고 밝혀 왔음
    • AGPLv3는 적용 대상 저작물을 오브젝트 코드 형태로 전달할 때, 기계가 읽을 수 있는 Corresponding Source도 같은 라이선스 조건으로 함께 전달해야 한다고 규정함
    • Corresponding Source에는 오브젝트 코드를 생성·설치·실행·수정하는 데 필요한 소스 코드와 스크립트가 포함됨
    • 저작물이 밀접한 데이터 통신이나 제어 흐름으로 요구하도록 설계된 공유 라이브러리와 동적 링크 하위 프로그램의 소스 코드도 Corresponding Source에 들어감
    • Bambu가 libbambu_networking.so, bambu_networking.dll, libbambu_networking.dylib완전한 Corresponding Source Code와 Installation Information을 제공하지 않는 것은 심각하고 계속되는 AGPLv3 위반으로 판단됨
  • Paweł Jarczak 포크 삭제 요구

    • Bambu가 네트워킹 라이브러리를 독점으로 유지한 것과 별개로, 개발자이자 Bambu Lab 사용자인 Paweł Jarczak을 상대로 한 조치도 AGPLv3 위반으로 제시됨
    • Paweł Jarczak은 동적으로 링크된 라이브러리를 교체하거나 수정하지 않고, Bambu Studio의 서버 측 구성 요소와 통합하는 다른 방식을 공개함
    • 그는 Bambu Studio의 불완전한 소스 코드를 검토한 뒤, 다른 AGPLv3 Slicer인 Orca Slicer를 수정했음
    • 수정된 Orca Slicer는 사용자가 Bambu Studio를 대체하면서, Bambu Lab 서버에서 실행되지만 현재 소스가 공개되지 않은 부분과 밀접한 데이터 통신으로 결합할 수 있게 했음
    • Bambu는 Paweł에게 해당 변경이 포함된 OrcaSlicer 포크를 GitHub에서 삭제하라고 요구함
    • Bambu는 자사 서비스 약관이 AGPLv3보다 우선한다고 주장했지만, AGPLv3§10¶3은 라이선스로 부여되거나 확인된 권리 행사에 추가 제한을 부과할 수 없다고 명시함
    • Paweł은 항의 표시와 함께 Orca Slicer 포크를 삭제했음

SFC의 대응 계획

  • baltobu 프로젝트

    • SFC는 baltobu 프로젝트를 시작해 Bambu 관련 AGPLv3 위반 대응과 3D 프린터 소프트웨어 수리권 개선을 위한 여러 저장소를 운영함
    • Paweł Jarczak을 향한 Bambu의 조치를 계기로, 단기적으로 소비자와 사용자를 돕고 장기적으로 3D 프린터 소비자의 소프트웨어 수리권을 개선하는 다면적 작업이 시작됨
    • Bambu가 이미 오래전부터 강한 AGPLv3 위반자로 알려져 있었기 때문에, 법적 조치보다 빠른 결과를 낼 수 있는 역공학부터 추진함
  • reverse-networking

  • orca-slicer-for-bambu

    • baltobu의 orca-slicer-for-bambu 저장소는 Paweł의 작업을 기반으로, 그가 처음 공개한 Orca Slicer 포크를 유지·개선하는 표준 저장소가 될 예정임
    • SFC는 Bambu 3D 프린터와 동작하는 OrcaStudio 포크를 유지할 자원봉사자를 요청함
    • SFC를 대신해 일하는 자원봉사 기여자는 일정 수준의 개인 책임 보호를 받을 수 있으며, Bambu가 자원봉사자에게 법적 위협을 할 경우 SFC가 가능한 한 개입하려 함
  • viscose

    • baltobu의 viscose 저장소는 Bambu Studio 자체의 활성 포크를 유지하려는 프로젝트임
    • 앞선 두 작업에서 나온 발견을 바탕으로, Bambu 3D 프린터 소유자에게 더 잘 동작하는 Bambu Studio 대체물을 만드는 방향으로 진행됨
  • 추가 위반 감시

    • SFC는 Bambu Lab의 추가 위반 가능성을 계속 감시할 예정임
    • 일반적으로 위반 사항을 적극적으로 찾아다니지는 않지만, 이 사례에서는 Bambu Lab을 면밀히 지켜보고 카피레프트 라이선스 위반 가능성을 정기적으로 조사함
  • 3D 프린터 커뮤니티 상설 위원회

    • SFC는 3D 프린터 커뮤니티의 소프트웨어 자유와 권리를 논의하는 상설 위원회를 시작할 예정임
    • 위원회 세부 내용은 2026년 6월 공개됨
    • 위원회는 3D 프린터 제조사, 사용자, 소비자, 카피레프트 라이선스 전문가, 소프트웨어 자유 활동가가 매월 회의하는 구조로 계획됨
    • 3D 프린터와 관련 소프트웨어의 소프트웨어 수리권 문제와 우려를 공유하고, 이를 해결하기 위한 행동 계획을 만드는 목적임

참여와 후원

  • 자원봉사 참여

    • SFC는 이 작업에 즉시 참여할 자원봉사자를 요청함
    • Paweł Jarczak은 첫 자원봉사자로 합류했으며, Bambu의 여러 AGPLv3 위반 조사에서 그의 작업이 중요한 역할을 했음
    • baltobu 프로젝트의 기술 작업을 돕고 싶다면 SFC의 Forgejo 인스턴스 계정 요청 방법을 확인할 수 있음
    • 다른 이니셔티브에 관심이 있다면 3dprint@sfconservancy.org로 이메일을 보낼 수 있음
  • 수리권 활동 모금

    • SFC는 두 달 동안 US$250,007 모금을 진행함
    • 새로 시작되는 Sustainer 기여SFC 일반 기부는 소프트웨어 수리권 활동에 배정됨
    • 목표를 달성하면 장기 활동을 이끌 추가 직원을 고용하기 위한 채용을 즉시 시작함
    • 해당 직원은 자원봉사 기여자 조율, 3D 프린터 소프트웨어 수리권 개선 전략 계획, Bambu Lab의 AGPLv3 준수를 이끌어내지 못할 경우 필요한 다음 단계 계획을 맡음
    • 목표에 도달하지 못하면 모금액은 기존 직원이 이 프로젝트에 집중하는 시간과 관련 소프트웨어 수리권 활동에 사용됨

이미 기여한 사람들

  • Paweł Jarczak은 Bambu Lab의 계속되는 AGPLv3 위반을 SFC가 인지하게 했고, AGPLv3가 허용하는 방식으로 소스 코드를 바꿔 관련 작업을 진행했음
  • b3nsn0w는 Bambu Lab 상황을 추가 조사했고, 동적 링크 라이브러리 위반과 관련해 1년 넘게 AGPLv3를 옹호해 왔음
  • FULU는 이 문제에 주목하게 하고 Bambu Labs에 맞서는 입장을 냈음

댓글과 토론

Lobste.rs 의견들
  • 이 노력 자체는 고맙게 봄. 오래된 오픈소스 사용자이자 가끔 기여자이고, Bambu 프린터도 쓰고 있지만, 상태가 좀 꼬인 Debian 머신에서 Bambu Studio나 소스에서 빌드한 OrcaSlicer를 제대로 돌리는 데는 실패했음
    FLOSS 라이선스도 오래 따라봤고, AGPLv3는 동기는 이해하지만 늘 약간 불편하게 느껴졌음. Bambu가 이 일을 처리하는 방식도 마음에 들지 않고, 법적으로까지는 몰라도 적어도 오픈소스의 정신은 분명히 위반하고 있다고 봄
    걸리는 부분은, 여기서 말하는 바가 AGPLv3 소프트웨어는 비자유 바이너리에 dlopen()을 호출할 수 없다는 건지, 아니면 AGPLv3 소프트웨어와 함수 포인터 시그니처 일부만 공유하는 .so 파일을 배포하는 게 라이선스 위반이라는 건지임. 이번 건은 같은 주체가 수정된 AGPLv3 소프트웨어와 비자유 바이너리를 같이 내고 있으니 거부감이 이해되지만, 일반화하면 머릿속에 잘 안 들어옴
    극단적으로 보면 표준화된 형식의 플러그인을 로드할 수 있는 AGPLv3 소프트웨어가 자기 라이선스와 양립 불가능하다는 뜻처럼 보일 수도 있음. 예를 들어 AGPLv3 오디오 소프트웨어가 VST(https://en.wikipedia.org/wiki/Virtual_Studio_Technology)를 로드할 수 있는 경우는 라이선스 함의를 제대로 이해하기 꽤 복잡해 보임
    • 이 스레드를 보면 Bambu가 모든 네트워킹을 의도적으로 이 비공개 라이브러리를 거치게 만드는 것으로 보임. 이게 없으면 소프트웨어가 사실상 쓸모없어지고, 동작을 들여다보려 하면 충돌시키는 안티 디버깅 기능까지 있는 듯함
    • “AGPLv3 소프트웨어가 비자유 바이너리에 dlopen()을 호출할 수 없다는 뜻인가?”라는 해석은 FSF의 입장이 아님. FSF는 플러그인에 관한 FAQ 항목에서 메인 프로그램이 플러그인을 어떻게 호출하는지에 따라 하나의 결합 프로그램인지가 달라진다고 설명함
      forkexec로 단순히 실행하고 긴밀한 통신이 없으면 별도 프로그램일 수 있지만, 동적 링크를 하고 서로 함수 호출과 자료구조 공유를 한다면 하나의 결합 프로그램으로 봐야 한다는 입장임. 복잡한 자료구조를 공유 메모리로 주고받는 것도 동적 링크와 거의 같다고 봄
      이건 모든 GPL 버전에 대체로 적용된다고 알고 있음. 간단히 말하면, 그 플러그인이 GPL 프로그램용으로 작성되기 전에도 다른 소프트웨어에서 쓸 수 있었는지를 기준으로 봄. 해당 GPL 프로그램에서만 쓸모가 있다면 사실상 그 프로그램의 일부에 가깝다고 판단함
    • SFC가 라이선스 본문에서 관련 부분을 인용했음. Corresponding Source에는 해당 저작물이 특별히 필요로 하도록 설계된 공유 라이브러리와 동적 링크된 하위 프로그램의 소스 코드가 포함된다는 내용임
      따라서 플러그인 지원 자체는 괜찮음. 문제는 애플리케이션의 일반적인 기능을 위해 특정 플러그인을 사실상 필요로 할 때 생김. SFC 글에 나온 .so는 네트워킹과 관련 있어 보이고, 네트워크 접근 없이 프린터를 편하게 쓰기 어렵다는 점도 그럴듯함
      더 넓은 맥락에서는, 객체 코드 형태의 저작물에 대한 “Corresponding Source”가 객체 코드를 생성·설치·실행하고 수정하는 데 필요한 모든 소스 코드와 스크립트를 뜻하지만, 시스템 라이브러리나 수정 없이 쓰는 범용 도구·일반적으로 구할 수 있는 자유 프로그램은 제외한다고 되어 있음
      특히 Apple이 모든 OSX 머신에 제공하는 독점 SDK에 의존하는 AGPL 소프트웨어를 OSX에서 개발하는 것은 가능함. Windows 애플리케이션이 Windows 쪽 구성요소에 의존하는 경우도 마찬가지임