- 公式の 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件のコメント
Syncthing - 継続的ファイル同期オープンソース
Hacker News のコメント
Google との話し合いでは何の成果もなかった。権限を得るために Google が求めた変更が曖昧で、どう対応すべきかを突き止めるのも難しく、何をしても成功するか不明だった。
その後も Play に残るために開発者認証やターゲット 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
元のスレッドを見ると、投稿者は Google Play への公開が非常に難しいと言っている。
「理由は、Google が Play での公開を難しい、あるいは不可能なレベルにしているから」とあるが、ここで何が起きているのか、もう少し説明してもらえるだろうか。
[1]: https://forum.syncthing.net/t/discontinuing-syncthing-androi...
この API は Java 専用で、Syncthing の中核部は Java で書かれていないため、ファイルの読み書き時に Android を呼び出すには JNI の接続コードを書く必要があったはずだ。SAF は各ファイルに URI を割り当て、フォルダ構造を継続的に問い合わせる必要があるので、通常のファイルのようにパスを連結できず、かなり面倒でもある。
投稿者はその作業を望まず、すべてのファイル、写真、文書へ直接アクセスし続けられるよう Google を説得しようとしたが、Google は拒否した。ここでの「難しさ」とは、ガイドラインに従わなければ Play に公開するのは本当に難しい、という意味に見える。App Store と同じだ。
私のアプリも、あるマイナーリリースでは権限承認を受けたのに、翌週にはアプリに些細な変更しかなかったにもかかわらず拒否されることがある。Google Play サポートに問い合わせても、回答はいつも曖昧で、定型的で、反復的だ。アプリ更新が承認されるかまったく分からず、何かを開発するにはひどい方法だ。
結局こうした構造は、小規模、低予算、時間不足の開発者だけを罰し、大手中心の統合を促す。大手はある程度の影響力を行使でき、基本的な信用もあり、ばかげていて時に負担の大きい要件を実装する予算と時間がある。結果として、市場での地位を固め、今後数十年にわたって Play Store を支える粘着性の高い参加者を作ろうとしているように見える。
これでスマートフォンにKeePass データベースを入れていたので困っている。同じ立場の人はいる?
SFTP で 1 台のマシンに接続し、そのマシンで残りの端末と Syncthing を動かす方法を勧める。
Syncthing を使えるし使いたいと思う程度のユーザーなら、APK の入手元として F-Droid に依存することも十分可能ではないかと思う。それを配布チャネルにするだけでは不十分なのだろうか。
モバイルコンピューティングが本当に嫌いだ。
APK を Turbo Pascal のフロッピーと一緒に安全な場所に保管しておくつもりだ。Android 向け Syncthing は、私の楽譜コレクション管理に不可欠だった。
現在の Syncthing Android アプリが、今後どれくらい長く動き続けるのか知っている人はいる?