1 ポイント 投稿者 GN⁺ 2024-10-21 | 2件のコメント | WhatsAppで共有
  • 公式の syncthing-androidアプリが引退し、GitHubとF-Droidでの最後のリリースは 2024年12月のSyncthingバージョンとともに提供される予定
  • 終了の背景には、Google Playでの配布が「困難または不可能なレベル」になった状況と、アクティブなメンテナンス不在がある
  • Play Storeでのリリースがブロックされたことだけが原因ではなく、アプリを復活させる、または維持し続けるには、誰かが長期メンテナンスを担う必要がある
  • AndroidでSyncthing自体がなくなるわけではなく、既存アプリの利用、Syncthing Fork、Termuxベースでの実行といった代替案が議論されている
  • 最後の公式アプリはしばらく動作する可能性があるが、新しいSyncthingバージョンが必要なユーザーは、設定をエクスポートしてForkへ移行することを検討すべき

公式syncthing-androidアプリの終了

  • 公式の syncthing-androidアプリは引退が決定しており、最後のGitHubおよびF-Droidリリースは 2024年12月のSyncthingバージョンとともに行われる予定
  • 終了の背景は2つの要因が重なった結果
    • GoogleがPlayでの配布を「困難または不可能なレベル」にしたこと
    • アプリに対するアクティブなメンテナンスがないこと
  • アプリは長い間、意味のある開発がなく、Playでのリリースも難しくなったことで、継続的なメンテナンスに投入するメリットと動機が減った
  • アプリのコントリビューターに感謝が伝えられ、複数のユーザーもメンテナンスへの感謝と惜しむ気持ちを表明した

Play Store配布問題とメンテナンスの限界

  • コミュニティでは、Play Storeのポリシーが合法的な高度権限アプリに不利に働いているという反応が出ている
    • 高度な権限が必要なアプリはStoreに載せにくくなっている
    • ユーザーデータを収集したり、スパイウェアに近いアプリは大きな制裁なしに残っている、という批判もある
  • F-Droidであと数リリース維持し、移行案内やドキュメントを提供できないかという提案も出ている
  • プロジェクト側は、一般的な配布チャネルでリリースできないことはさらなる意欲低下要因にすぎず、唯一の原因ではないと一線を画した
  • アプリの復活や継続には、誰かが長期的な努力を投入する必要があり、アプリは長い間「life support」状態だった

AndroidでSyncthingを使い続ける方法

  • 今回の決定は、長い間ほぼ休眠状態だった公式Androidアプリの終了に限られる
  • AndroidでSyncthing自体が使えなくなるわけではなく、他の人がAndroid向けSyncthingアプリを引き続き配布することは可能
  • Androidが徐々にiOSに似た方向へ進むことで困難になる可能性への懸念はあるが、最近でもiOS向けの新しいオープンソースSyncthingアプリが作られた点が言及された
  • 公式発表者は、自身もAndroidでSyncthingを使うユーザーだとし、Androidでも長く使えることを個人的に望んでいる

議論された代替案: ForkとTermux

  • 直接的な代替案として Catfriend1/syncthing-android が言及された
  • 既存の公式アプリの最終バージョンは今後更新されないが、しばらくは引き続き問題なく動作する可能性がある
  • より新しいSyncthingバージョンが必要なら、Syncthing Forkへ移行できる
    • 公式アプリの設定から現在の構成をエクスポートできる
    • Forkへインポートできる
    • Syncthingの観点では、両アプリは互いに互換性がある
  • TermuxでSyncthingを実行する方法も代替案として議論された
    • ファイルをエクスポートまたはコピーし、設定を一部調整すれば動作する
    • スマートフォンを常に起こしておきたくない場合は、手動で開始・停止する必要がある点が欠点
    • Android設定でTermuxアプリのバッテリー最適化を有効にしていると、Androidのdozeモードで強制的にsleep状態になる可能性があるという意見も出ている
  • Web GUIはローカルブラウザから http://127.0.0.1:8384 でアクセスでき、既存のSyncthingアプリを使う場合にも可能な方法

Termux + Tasker構成例

  • あるユーザーは、Syncthing + Tasker + Termux の組み合わせが動作する代替案だと確認した
  • インストール構成は次のとおり
    • Play StoreからTaskerをインストール
    • F-DroidからTermuxおよび termux:tasker をインストール
  • 追加権限は次のとおり
    • Tasker: additional → run commands in termux environment
    • Termux: Appear on top
  • TermuxでSyncthingをインストールするコマンドは次のとおり
termux-setup-storage
apt install syncthing
  • ~/.termux/tasker/start-syncthing-for-5minutes.sh ファイルを作成し、5分間Syncthingを実行するよう設定する
#!/usr/bin/bash

timeout -s KILL 5m syncthing
  • Taskerでは、00:00から23:59まで1時間ごとに Plugin→Termux:Tasker で該当スクリプトを実行するよう設定する
    • start-syncthing-for-5minutes.sh
    • terminal session: X
  • GUIでStart browserオプションをオフにすると、起動時にブラウザが自動で開かない
  • 既存のAndroidアプリから設定をエクスポートした後、~/.local/state/syncthing にコピーすれば、新規インストールの代わりに既存の構成を引き継げる
    • その後、config.xml からGUIアクセス用のusername/passwordを削除し、必要なら新しく設定できる

2件のコメント

 
GN⁺ 2024-10-21
Hacker News のコメント
  • Google との話し合いでは何の成果もなかった。権限を得るために Google が求めた変更が曖昧で、どう対応すべきかを突き止めるのも難しく、何をしても成功するか不明だった。
    その後も Play に残るために開発者認証やターゲット API レベルなど別の作業が増え、結局、このゲームを続ける動機と時間はもうないと気づいたという。

    • Google がセキュリティ上の問題について、「File API を使いたくないが、コードを書くのが難しいから」という言い訳を受け入れたとは思えない。「SAF API を使いたくないので、すべてのユーザーデータや写真などにアクセスさせてほしい」という形で、どんな議論が可能だったのかもよく分からない。
      会社で PR コメントを直す代わりに、自分のやり方のほうが良いと言って爆発する人に似て見える。Apple も ObjC/Swift API が使いにくいという理由だけで、任意のディレクトリへの書き込みを許可したりはしない。
  • 以前 Dropbox で 2010 年代に Android を専門に開発しており、旧来の Android ファイルシステム API もある程度知っていたが、意識的に開発者体験/バックエンド側へ移り、Android から離れた。昔の Android 同僚たちも大半は同じような感じだった。
    アプリを動かし続けるには、終わりなく通過しなければならない手続きと API 変更が多すぎて苦痛だった。2014 年に「セキュアな」Storage Access Framework が新しく出たとき、ファイル名に "../../" を渡すだけで任意のアプリの非公開ディレクトリに書き込める、些細なディレクトリトラバーサル脆弱性を見つけた。SAF を理解しようとして AOSP のソースをざっと見ていたら、すぐ目に入るほどだった。
    Android は長い間、アプリフォルダにグローバルな実行ビットも付与していたため、悪意あるアプリが別アプリのファイルに名前でハードリンクを作り、それを再びそのアプリに渡してファイル内容にアクセスする、混乱した代理人攻撃も可能だった。
    Android がセキュリティを強化してきたのは喜ばしいが、あまりに緩い土台の上に作られており、多数のアプリがその土台を使ったり悪用したりしてきたため、ロックダウンが強まるほど、継続的な大規模互換性破壊に対応しなければならない開発者たちはエコシステムを離れていきそうだ。
    [0] Bug 18512473 fixed in https://android.googlesource.com/platform/frameworks/base/+/...
    [1] Proof of concept video: https://www.dropbox.com/s/8dpd8visrttqbfo/poc.mp4?dl=0

    • ネイティブモバイルプラットフォームの継続的な保守コストが高すぎるのが問題だ。足元が常に変わり続けるプラットフォームの上で、誰が開発したいと思うのかという感じだ。
      webOS のビジョンが恋しくなる。14 年前の webOS の実装そのものが恋しいという意味ではない。
  • 活発に保守されている Android 向け Syncthing のフォークがあり、星の数はあくまで別指標だが 1.3K 個を獲得している。
    [1] https://github.com/Catfriend1/syncthing-android

    • 知っておくとよいが、README にはこう書かれている。「Google Play Developer Account を閉じる予定です。このアプリの公開を手伝うために最新の gplay リリースファイルを受け取りたい場合は連絡してください」
    • そのフォークをかなり長く使ってきた。Syncthing を始めたときは Syncthing-Fork を使うのが定説のように見えたが、理由は覚えていない。
    • 奇妙なことに、今 Play ではどちらも見つからない。Play 経由でインストールした元のものと思われるアプリは、まだ端末にある。
    • 別のアプリの設定をエクスポートしてこのフォークにインポートしたら、動いているようだ。設定も全部生きていて、同期もできているように見える。開発者たちに拍手を送りたい。
    • そう、それを使っている。何年も非常に満足している。
  • 元のスレッドを見ると、投稿者は Google Play への公開が非常に難しいと言っている。
    「理由は、Google が Play での公開を難しい、あるいは不可能なレベルにしているから」とあるが、ここで何が起きているのか、もう少し説明してもらえるだろうか。
    [1]: https://forum.syncthing.net/t/discontinuing-syncthing-androi...

    • この場合、投稿者はアプリのサンドボックス外のデータにアクセスする方法として、数年前から義務化されているStorage Access Framework APIを使いたがらなかった。
      この API は Java 専用で、Syncthing の中核部は Java で書かれていないため、ファイルの読み書き時に Android を呼び出すには JNI の接続コードを書く必要があったはずだ。SAF は各ファイルに URI を割り当て、フォルダ構造を継続的に問い合わせる必要があるので、通常のファイルのようにパスを連結できず、かなり面倒でもある。
      投稿者はその作業を望まず、すべてのファイル、写真、文書へ直接アクセスし続けられるよう Google を説得しようとしたが、Google は拒否した。ここでの「難しさ」とは、ガイドラインに従わなければ Play に公開するのは本当に難しい、という意味に見える。App Store と同じだ。
    • この開発者の具体的な問題は分からないが、Android 開発者として経験した Google Play の問題なら話せる。Google Play はアプリ権限にますます厳しくなっており、権限承認の基準は非常に不透明だ。
      私のアプリも、あるマイナーリリースでは権限承認を受けたのに、翌週にはアプリに些細な変更しかなかったにもかかわらず拒否されることがある。Google Play サポートに問い合わせても、回答はいつも曖昧で、定型的で、反復的だ。アプリ更新が承認されるかまったく分からず、何かを開発するにはひどい方法だ。
    • 仕事でアプリをいくつか作ったことがあるが、最も適切な比喩は政府規制だ。ストア要件、API、ルールがあちこちに散らばった 49 ページの文書に過度に細かく書かれており、内部事情を知らなければ安定して実装する方法がない。
      結局こうした構造は、小規模、低予算、時間不足の開発者だけを罰し、大手中心の統合を促す。大手はある程度の影響力を行使でき、基本的な信用もあり、ばかげていて時に負担の大きい要件を実装する予算と時間がある。結果として、市場での地位を固め、今後数十年にわたって Play Store を支える粘着性の高い参加者を作ろうとしているように見える。
  • これでスマートフォンにKeePass データベースを入れていたので困っている。同じ立場の人はいる?

    • KeePass2Android は SFTP と併用すると機能が少し良くなる。たとえば競合が起きたときに変更をマージできる。
      SFTP で 1 台のマシンに接続し、そのマシンで残りの端末と Syncthing を動かす方法を勧める。
    • syncthing-fork はここ数年、私には明らかによりよく動作していた: https://f-droid.org/en/packages/com.github.catfriend1.syncth...
    • Resilio Sync もかなり良いが、プロプライエタリソフトウェアだ。
    • 最終的には KeepassDX が Syncthing 機能を自前で統合する必要がありそうだ。
    • KeePass と Joplin の両方が影響を受ける。
  • Syncthing を使えるし使いたいと思う程度のユーザーなら、APK の入手元として F-Droid に依存することも十分可能ではないかと思う。それを配布チャネルにするだけでは不十分なのだろうか。

    • 今後数か月のうちに、人々が F-Droid ベースの「syncthing-fork」に移るか、別の同期ツールへ移行する中で分かるだろう。
  • モバイルコンピューティングが本当に嫌いだ。

    • この状況があまりにひどくて、Pocket PC 時代の Win32 開発体験が恋しくなるほどだ。
  • APK を Turbo Pascal のフロッピーと一緒に安全な場所に保管しておくつもりだ。Android 向け Syncthing は、私の楽譜コレクション管理に不可欠だった。

  • 現在の Syncthing Android アプリが、今後どれくらい長く動き続けるのか知っている人はいる?