- Bitwarden Desktop 2024.10.0 빌드에 @bitwarden/sdk-internal 의존성이 필요해졌고, 해당 SDK 라이선스 조항이 “Bitwarden 외 소프트웨어용 앱이나 다른 SDK 개발에 사용할 수 없다”고 제한해 자유 소프트웨어 요건을 깨뜨린다는 이슈가 제기됨
- 문제 제기자는 이 제한이 GNU의 freedom 0을 위반하며, 해당 의존성을 제거하면 desktop-v2024.10.0과 현재 master를 빌드할 수 없다고 밝힘
- 재현 사례로
bitwarden_license디렉터리를 제거하고node_modules를 정리한 상태에서 빌드하면@bitwarden/sdk-internal및 WASM 모듈을 찾지 못하는 TS2307 오류 6개로build:preload가 실패함 - 일부 댓글은 SDK가 Desktop뿐 아니라 browser, CLI, web clients에서도 기능 플래그로 사용된다고 지적했고, Bitwarden 측은 SDK와 클라이언트가 별도 프로그램이며 GPLv3 관점에서 표준 프로토콜 통신만으로 하나의 프로그램이 되지는 않는다고 답함
- Bitwarden은 이후 SDK 코드 구성과 패키징을 조정해 GPL/OSI 라이선스만 포함한 빌드가 가능하게 했고, 클라이언트의
sdk-internal참조를 새sdk-internal저장소로 옮긴 뒤 이슈를 완료 처리함
제기된 문제: Desktop 2024.10.0 빌드와 SDK 라이선스
- 이슈는 Bitwarden Desktop 2024.10.0이 더 이상 자유 소프트웨어가 아니라는 문제 제기로 열림
- 핵심 변경은 Pull request #10974가 데스크톱 클라이언트 빌드에 @bitwarden/sdk-internal 의존성을 도입한 점임
- 해당 의존성의 라이선스에는 다음 제한이 포함됨
- “이 SDK를 Bitwarden 외 소프트웨어, Bitwarden과 호환되지 않는 구현을 포함한 소프트웨어용 애플리케이션 개발에 사용할 수 없고, 다른 SDK 개발에도 사용할 수 없다”
- 문제 제기자는 이 조항이 GNU 자유 소프트웨어 정의의 freedom 0을 위반한다고 봄
- 또한 이 의존성을 제거하지 않고는 desktop-v2024.10.0, 그리고 아마도 현재 master를 빌드할 수 없다고 밝힘
재현된 빌드 실패
- 문제 제기자는 기존 방식처럼
bitwarden_license디렉터리를 제거하고 정리된node_modules로 빌드를 시도함 - 빌드는
apps/desktop의build:preload단계에서 실패함 - 오류는 여러 파일에서 @bitwarden/sdk-internal 모듈 또는 타입 선언을 찾을 수 없다는
TS2307임libs/common/src/platform/abstractions/sdk/sdk.service.tslibs/common/src/platform/abstractions/sdk/sdk-client-factory.tslibs/common/src/platform/services/sdk/default-sdk.service.tslibs/common/src/platform/services/sdk/default-sdk-client-factory.tslibs/common/src/platform/services/sdk/noop-sdk-client-factory.ts
- WASM 경로인
@bitwarden/sdk-internal/bitwarden_wasm_internal_bg.wasm도 찾을 수 없다는 오류가 발생함 - 결과적으로
webpack 5.94.0이 6개 오류로 컴파일에 실패하고,npm run build:preload가 코드 1로 종료됨
커뮤니티 반응과 확장된 우려
- 한 댓글은 관련 이슈로 bitwarden/sdk-sm#898을 언급하며, Bitwarden이 오픈소스로 광고하면서 독점 소프트웨어로 전환하고 있다는 우려를 제기함
- 다른 사용자는 CLI 클라이언트의 NPM 릴리스에서도 비슷한 문제를 #10648로 두 달 전에 보고했지만 응답을 받지 못했다고 밝힘
- 일부 사용자는 대안으로 이전 버전 포크, Vaultwarden, Vaultwarden 웹 인터페이스를 감싸는 Tauri 데스크톱 앱 등을 언급함
- 한 댓글은 비밀번호를 다루는 제품 특성상 “아무 대안”으로 옮기는 것은 조심해야 하며, 클라이언트 포크만으로는 서버 서비스나 서버 소프트웨어 의존 문제가 남는다고 지적함
- 또 다른 댓글은 SDK가 Desktop 릴리스뿐 아니라 browser, CLI, web clients에서도 기능 플래그로 사용된다고 주장하며, Bitwarden 2024.10.0의 모든 버전이 SDK를 사용한다고 적음
Bitwarden 측의 초기 답변
- Bitwarden 측 구성원은 클라이언트에서 SDK 사용 범위를 넓혀 왔지만, 목표는 SDK 사용이 GPL 호환성을 유지하도록 하는 것이라고 답함
- Bitwarden 측은 다음 세 가지 근거를 제시함
- SDK와 클라이언트는 별도 프로그램임
- 각 프로그램의 코드는 별도 저장소에 있음
- 두 프로그램이 표준 프로토콜로 통신한다는 사실만으로 GPLv3 목적상 하나의 프로그램이 되지는 않음
- 사용자가 시도한 방식으로 앱을 빌드할 수 없는 문제는 해결할 예정인 버그라고 밝힘
- 이후 대화는 Bitwarden에 의해 잠기고 collaborator로 제한됨
최종 조정과 종료
- Bitwarden은 SDK 코드의 구성과 패키징 방식을 조정해 GPL/OSI 라이선스만 포함한 상태로 앱을 빌드하고 실행할 수 있게 했다고 밝힘
- 클라이언트의
sdk-internal패키지 참조는 새 sdk-internal repository에서 오도록 변경됨 - 새
sdk-internal저장소는 Bitwarden이 기존 클라이언트에 사용해 온 라이선스 모델을 따른다고 설명했고, 관련 정보로 LICENSE_FAQ.md를 제시함 - 현재
sdk-internal참조는 GPL 라이선스만 사용함 - 향후 해당 참조에 Bitwarden License 코드가 포함된다면, web vault 클라이언트 빌드와 비슷하게 여러 빌드 변형을 만들 수 있는 방법을 제공하겠다고 밝힘
- 기존 sdk repository는 sdk-secrets로 이름이 바뀌며, Secrets Manager 비즈니스 제품을 위한 기존 Bitwarden SDK License 구조를 유지함
sdk-secrets저장소와 패키지는 클라이언트 앱에서 사용되지 않는 코드이므로 더 이상 클라이언트 앱에서 참조되지 않음- 이슈는 2024년 10월 25일 completed로 종료됨