1 ポイント 投稿者 GN⁺ 2024-10-21 | 2件のコメント | WhatsAppで共有
  • Bitwarden Desktop 2024.10.0 のビルドで @bitwarden/sdk-internal 依存が必要になり、その SDK のライセンス条項が「Bitwarden 以外のソフトウェア向けアプリや、他の SDK の開発には使用できない」と制限しているため、自由ソフトウェアの要件を満たさなくなったという問題提起がなされた
  • 問題提起者は、この制限が GNU の freedom 0 に違反すると主張し、この依存を削除すると desktop-v2024.10.0 と現在の master をビルドできないと述べた
  • 再現例として、bitwarden_license ディレクトリを削除し、node_modules を整理した状態でビルドすると、TS2307 エラー 6 件により @bitwarden/sdk-internal と WASM モジュールを見つけられず、build:preload が失敗する
  • 一部のコメントでは、この SDK が Desktop だけでなく browser, CLI, web clients でも機能フラグとして使われていると指摘され、Bitwarden 側は SDK とクライアントは別個のプログラムであり、GPLv3 の観点では標準プロトコル通信だけで単一のプログラムにはならないと回答した
  • Bitwarden はその後、SDK コードの構成とパッケージングを調整し、GPL/OSI ライセンスのみを含むビルド を可能にしたうえで、クライアントの sdk-internal 参照を新しい sdk-internal リポジトリへ移し、この issue を完了扱いにした

提起された問題: Desktop 2024.10.0 ビルドと SDK ライセンス

  • この issue は、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/desktopbuild:preload 段階で失敗した
  • エラーは、複数ファイルで @bitwarden/sdk-internal モジュールまたは型宣言を見つけられないという TS2307 である
    • libs/common/src/platform/abstractions/sdk/sdk.service.ts
    • libs/common/src/platform/abstractions/sdk/sdk-client-factory.ts
    • libs/common/src/platform/services/sdk/default-sdk.service.ts
    • libs/common/src/platform/services/sdk/default-sdk-client-factory.ts
    • libs/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 で終了した

コミュニティの反応と広がる懸念

  • あるコメントでは関連 issue として bitwarden/sdk-sm#898 に言及し、Bitwarden がオープンソースをうたいながらプロプライエタリソフトウェアへ移行しているのではないかという懸念が示された
  • 別のユーザーは、CLI クライアントの NPM リリースでも同様の問題を 2 か月前に #10648 として報告したが、返答がなかったと述べた
  • 一部のユーザーは代替案として、旧バージョンのフォーク、Vaultwarden、Vaultwarden の Web インターフェースを包む Tauri デスクトップアプリなどに言及した
  • あるコメントでは、パスワードを扱う製品という性質上「どんな代替でもよい」と移行するのは慎重であるべきで、クライアントのフォークだけではサーバーサービスやサーバーソフトウェア依存の問題が残ると指摘した
  • 別のコメントでは、この SDK は Desktop リリースだけでなく browser, CLI, web clients でも機能フラグとして使われており、Bitwarden 2024.10.0 の全バージョンが SDK を利用していると主張された

Bitwarden 側の初期回答

  • Bitwarden のメンバーは、クライアントにおける SDK の利用範囲を広げてきたが、目標は SDK の利用が GPL 互換性 を維持することだと回答した
  • Bitwarden 側は次の 3 つの根拠を示した
    • SDK とクライアントは別個のプログラムである
    • 各プログラムのコードは別々のリポジトリにある
    • 2 つのプログラムが標準プロトコルで通信するという事実だけでは、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 repositorysdk-secrets に改名され、Secrets Manager のビジネス製品向けに従来の Bitwarden SDK License 構成を維持する
  • sdk-secrets リポジトリとパッケージはクライアントアプリで使用されないコードであるため、今後はクライアントアプリから参照されない
  • この issue は 2024 年 10 月 25 日に completed として終了した

2件のコメント

 
tribela 2024-10-21

私はKeepassを愛用していますが、みんながあまりにもBitwardenの話ばかりするので一度使ってみようかと思っていました。でも、このままKeepassを使い続けることにします。サーバー方式ではなく、ファイルさえきちんと保管しておけばいい仕組みなので、可用性もずっと高く、私の好みにはKeepassのほうが合っています。

 
GN⁺ 2024-10-21
Hacker News の意見
  • お金を払ったのはオープンソースを支援するという期待があったからで、そのため LastPass から Bitwarden に移った。
    今回の件は、背中に刺さったナイフをひねられるような感じだ。CEO の Michael Crandell は、RightScale を売却した時と似た財務上の転換点に達したので、買収に向けて準備しているように見える: https://bitwarden.com/blog/accelerating-value-for-bitwarden-...

    • そのページの2022年の資料にも、「何が変わるのか?」の下に、Bitwarden はオープンソースアーキテクチャを守り続けると書かれていた。
      もうそうではないようだ。危険な動きだ。オープンソースには良い性質がたくさんあるが、ここで重要なのはセキュリティだ。企業が不透明なバイナリの塊を安全だと主張するのは、いつも驚かされる。Intel Management Engine もそうだし、今や Bitwarden も IME と Juniper スイッチの仲間入りをしたわけだ。
      クローズドソースに進むのは高リスクな選択だ。長い間、ソフトウェアそのものにはお金を払ってこなかったが、セキュリティにはお金を払えるし、実際に払っている。Bitwarden は、私が最も大切で私的な情報だと考えるものを保存するので、お金を払っているのだ。しかし結局はソフトウェアにすぎず、「bitwarden」と呼ぶバイト列がどこから来るかは重要ではない。誰でもフォークして同じバイト列を提供できる。オープンソースソフトウェアだけを使う Bitwarden のミラーを運営するなら、私のお金はそちらに行くだろう。実行中のバイナリと、自分が複数のデバイスにダウンロードするバイナリを同一に再現できるビルド手順まであれば、なお良い。私のパスワードは、オープンソースソフトウェアが管理していない限り安全だとは見なさない。
  • 今回の動きはそれほど驚きではない。Bitwarden はこの数年、エンタープライズ営業の方向へ強く移行し、その間に消費者向けは放置していた。
    最近になってようやく、以前の MAUI ベースからネイティブ iOS アプリに変わったが、旧アプリはいろいろな面でかなり浮いていた。今の iOS クライアントも、まだ追いつくべき点が残っている。
    ベンチャー投資を受けた後は、売上と利益重視にさらに傾いたように見える。その選択自体が間違いというわけではないが、会社が始まり成長してきたやり方とは、かなり違う方向へ押し進めている。
    Proton Pass も少し興味深いが、他の Proton サービスと同様、価格モデルはいつもやや高めだ。しばらく無料の Proton Pass を試しており、Bitwarden が何年も待っていた方向に改善されなかったので、代替に移る価値があるか見てみるつもりだ。
    iOS 内蔵のパスワードマネージャーも十分悪くないが、パスワード専用で、他の種類のデータの保存・検索・自動入力には対応していない。

    • 皮肉なことだ。一部の企業はむしろ Bitwarden がオープンで、非常に便利なものを使うのにエンタープライズ営業の電話を経る必要がないから使っていたのかもしれない。
      製品を使いにくくすれば、顧客と販売機会を失う。最近 Postman としたひどい電話の数々を思い出す。もう一度電話するくらいなら、今では Hoppscotch の方がずっと良さそうに見える。
    • なぜほとんどいつも、ベンチャー投資はすべてを台無しにしてしまうのだろうか。
  • CTO の回答によると、SDK の利用範囲をより多くのクライアント事例へ広げてきたが、目標は SDK がGPL 互換性を維持する形で使われるようにすることだという。
    SDK とクライアントは別々のプログラムであり、各プログラムのコードは別々のリポジトリにあり、2つのプログラムが標準プロトコルで通信するという事実だけで GPLv3 上の1つのプログラムになるわけではない、と見ている。ここで試みた方法でアプリをビルドできるようにすべき問題は、修正予定の単なるバグだという。

    • こういう回答は本当に苛立たしい。質問の範囲を意図的に誤解したかのような形で、実際の質問を避けているからだ。
      CTO に聞きたいのは、おおよそこういうことだ。「あなた方の弁護士は、これを法的に切り抜けられると見ているのか?」には答えたが、人々が懸念している核心的な質問には答えていない。Bitwarden チームは、多くの人が明示的にオープンソースだからこそ支援し貢献してきたプロジェクトを私有化することに、倫理的問題はないと見ているのか? パスワード管理は本質的に高い信頼を必要とする事業なのに、オープンソースからクローズドソースへ移るラグプルによって生じる信頼の破綻、フォーク、離脱にどう対処するつもりなのか? 会社がこうした決定を検討するほど切迫した状況なら、コミュニティが一緒に助け、私有化なしで乗り越える方法はないのか?
      CTO として今は心配しているふりをするのが仕事で、とくに対話を閉じられないフォーラムではなおさらだというのは分かるが、現在のアプローチは「法的に可能だと信じており、自分たちの行動に問題はないと見ている」という最悪の懸念を、事実上裏づけている。ユーザーがコードと、それを更新する人々を信頼しなければ収益が出ない会社にとって、まさに間違った雰囲気だ。
    • 言い換えると、bitwarden/clients は GPLv3 であり、動作する全体としての Bitwarden クライアントはプロプライエタリソフトウェアで、CTO はそこに問題はないと見ており、イシューはロックされたということだ。
    • 必ずしも「1つのプログラム」かどうかが核心ではない。問題はこの部分だ。
      「オブジェクトコード形式の著作物の『対応するソース』とは、オブジェクトコードを生成、インストール、実行し、著作物を改変するために必要なすべてのソースコードと、それらの活動を制御するスクリプトを含む。」
      オープンソース企業として稼ぐのが本当に難しいことは理解している。だから私も有料顧客の一人だ。
      SDK に付けた除外条件は、一時期 Linux カーネルに使われていたBitKeeperバージョン管理ソフトウェアと非常によく似て見える。その結末がどうだったかを見ればよい。
  • 好きだったし、お金も払ったし、友人たちにも勧め、彼らも気に入っていた。
    これから KeePassXC に移ろうと思う。Android とデータベースを同期するおすすめの方法は何だろう? cloudflared を動かしている Raspberry Pi サーバーだけはある。

    • ファイル移動で起きる同期競合に戻らず、クラウドの利便性を維持したいなら、Proton Pass は GPLv3 だ。ただし、後でラグプルをした場合にセルフホスティングの状況がどうなるかは、個人的には分からない。
      https://github.com/ProtonMail/WebClients/tree/proton-pass%40...

https://github.com/protonpass/android-pass/blob/1.26.1/LICEN...

[https://github.com/protonpass/ios-pass/blob/1.12.3/LICENSE](<https://github.com/protonpass/ios-pass/blob/1.12.3/LICENSE>;)
  • SyncThingでKeePassの金庫を必要なデバイスにだけ正確に配布して使っている。自分にはとてもよく機能している。必要に応じて違うかもしれない

  • KeePassとそのエコシステムは本当に使いたいが、パスワード共有があまり良くない。私と妻は共有パスワードが多く、Bitwardenはその部分がとてもよく機能する。私たちにとって実用的な代替案が何なのか分からない

  • Keepass2Androidはssh(sftp)、Nextcloudなど複数の方法で同期できる。合う方法を見つけられるはず

  • KeePassXCとAndroid向けNextcloudクライアントの組み合わせは私には完璧。何年も問題なく使っている

  • GitHub issueをこれ以上議論できないようにロックしてしまった。可能な代替案の一つはVaultwardenのようだ
    https://github.com/dani-garcia/vaultwarden
    お金を持った人たちが入ってくると、オープンソースプロジェクトでこういうことが繰り返し起きるのは本当に残念

    • Vaultwardenはサーバーの代替品で、ここでの問題は私の理解ではデスクトップクライアントのライセンス
    • Garcíaは最近Bitwardenで働き始めた。彼の考えを聞けたら興味深そう
    • Vaultwardenはpasskeyをサポートしているのか?
  • 詳しく見たことはないが、マーケティングだけを見てBitwardenは完全な自由ソフトウェアだと思っていた。ところが2020年ごろから妙なプロプライエタリ要素が入ったように見える

  • いつかBitwardenへ移行したいと思っていたが、健全なオープンなエコシステムを見つけられないなら、もうしない気がする。どう展開するかは引き続き見守る

    • 1年間、VaultwardenバックエンドをつないでBitwardenへ完全に移行してみたが、以前使っていた1Passwordと比べると体験は大きく劣っていた
      評価基準の一つは「家族全員が1Passwordを使って満足しているが、この程度なら彼らを説得して移行できるだろうか」だった。最終的な移行決定は私が下せるが、高齢の両親に新しいことをしてもらうにはユーザー体験が非常に重要だ
      結果的に答えはノーだった。全般的にUXが良くないことに加え、BitwardenクライアントはLinux、Mac、Windows、iOSのすべてではるかに遅く、検索からログインまであらゆる面でそうだった。機能も少なく、パスワードの並べ替え、お気に入り、優れた整理ツールといった目立つ部分が欠けており、自動入力もはるかに不安定だった
      1Passwordの事業運営や顧客対応には長年大きな不満があった。それでもパスワードマネージャー、今ではパスワード以上のものを入れるシークレットマネージャーに近いツールが日常生活の中心なので、できるだけ苦痛の少ないものを使うべきだと感じ、残念ながら戻った
      Bitwardenをオープンソースだから使ったわけではなく、可能な限り最高のパスワードマネージャーを使おうとしただけ。それでもオープンである点は気に入っていたし、Vaultwardenは宝石のような存在だ。本当に、もっと良いフロントエンドを作る時間と実力があればよかったのに
  • 「現時点ではSDKライセンスを調整する計画はありません。独自のF-Droidリポジトリ https://mobileapp.bitwarden.com/fdroid/repo/ への公開は継続する予定です。」
    https://github.com/bitwarden/sdk/issues/898#issuecomment-222...
    この問題はすでに7月にSDKリポジトリで提起されており、そのSDKは1年以上このライセンスのままだった

  • iOS、PC、MacでBitwardenを使っている。これから代替を探さなければならない。本当に悲しい日だ
    私も年10ドルのプレミアム会員だ。怪しい慣行のせいで失われた売上になるわけだ
    エクスポートして別の代替へ移行する方法はある?

  • 自分にとってより良いKeepass(X,XC)の代替になるかと思って見守っていたプロジェクトだったが、今となっては結局移行しないと思う