1 Punkte von GN⁺ 2024-10-21 | 2 Kommentare | Auf WhatsApp teilen
  • Die offizielle syncthing-android-App wird eingestellt; das letzte Release auf GitHub und F-Droid soll zusammen mit der Syncthing-Version vom Dezember 2024 erscheinen
  • Hintergrund der Einstellung ist eine Kombination daraus, dass die Verteilung über Google Play „schwierig bis unmöglich“ geworden ist, und dem Fehlen aktiver Wartung
  • Die Blockade von Play-Store-Releases ist nicht der einzige Grund; um die App wiederzubeleben oder weiterzuführen, müsste jemand die langfristige Wartung übernehmen
  • Syncthing selbst verschwindet nicht von Android; als Alternativen werden die weitere Nutzung der bestehenden App, Syncthing Fork und der Betrieb über Termux diskutiert
  • Die letzte offizielle App wird vermutlich noch eine Zeit lang funktionieren; wer neuere Syncthing-Versionen benötigt, sollte erwägen, die Konfiguration zu exportieren und zu einem Fork zu wechseln

Ende der offiziellen syncthing-android-App

  • Die Einstellung der offiziellen syncthing-android-App ist beschlossen; das letzte Release auf GitHub und F-Droid soll zusammen mit der Syncthing-Version vom Dezember 2024 erfolgen
  • Der Hintergrund ist das Zusammentreffen zweier Faktoren
    • Google habe die Verteilung über Play „schwierig bis unmöglich“ gemacht
    • Für die App fehlt aktive Wartung
  • An der App gab es lange keine nennenswerte Entwicklung mehr, und da auch Play-Releases schwieriger wurden, nahmen Nutzen und Motivation für fortlaufende Wartung ab
  • Den Mitwirkenden der App wurde gedankt, und auch mehrere Nutzer äußerten Dank für die Wartung sowie Bedauern über die Einstellung

Probleme mit der Play-Store-Verteilung und Grenzen der Wartung

  • In der Community gab es Reaktionen, dass die Play-Store-Richtlinien legitime Apps mit erweiterten Berechtigungen benachteiligen
    • Apps, die erweiterte Berechtigungen benötigen, lassen sich schwerer in den Store bringen
    • Kritisiert wird auch, dass Apps, die Nutzerdaten sammeln oder Spyware nahekommen, ohne größere Sanktionen im Store bleiben
  • Es wurde vorgeschlagen, auf F-Droid noch einige weitere Releases bereitzustellen und Hinweise oder Dokumentation für den Umstieg anzubieten
  • Das Projekt stellt klar, dass die fehlende Möglichkeit, über allgemeine Vertriebskanäle zu releasen, nur ein zusätzlicher Demotivationsfaktor ist, aber nicht der einzige Grund
  • Eine Wiederbelebung oder Fortführung der App wäre nur möglich, wenn jemand langfristigen Aufwand investiert; die App befand sich schon lange im „life support“-Zustand

Syncthing auf Android weiter nutzen

  • Die Entscheidung betrifft nur die Einstellung der offiziellen Android-App, die seit Langem nahezu im Ruhezustand war
  • Syncthing selbst wird dadurch auf Android nicht unbenutzbar; andere können weiterhin Syncthing-Apps für Android verbreiten
  • Es gibt zwar die Sorge, dass Android zunehmend in eine iOS-ähnliche Richtung geht und dadurch schwieriger werden könnte, zugleich wurde aber erwähnt, dass kürzlich sogar eine neue Open-Source-Syncthing-App für iOS entstanden ist
  • Der offizielle Ankündigende sagte, er nutze Syncthing selbst auf Android und hoffe persönlich, dass es dort noch lange nutzbar bleibt

Diskutierte Alternativen: Fork und Termux

  • Als direkte Alternative wurde Catfriend1/syncthing-android genannt
  • Die letzte Version der bisherigen offiziellen App wird nicht mehr aktualisiert, dürfte aber noch eine Zeit lang gut funktionieren
  • Wer eine neuere Syncthing-Version benötigt, kann zu Syncthing Fork wechseln
    • Die aktuelle Konfiguration lässt sich in den Einstellungen der offiziellen App exportieren
    • Sie kann in den Fork importiert werden
    • Aus Sicht von Syncthing sind beide Apps miteinander kompatibel
  • Auch der Betrieb von Syncthing in Termux wurde als Alternative diskutiert
    • Wenn man Dateien exportiert oder kopiert und einige Einstellungen anpasst, funktioniert es
    • Ein Nachteil ist, dass man es manuell starten und stoppen muss, wenn das Telefon nicht dauerhaft wachgehalten werden soll
    • Es wurde auch angemerkt, dass Android die App im Doze-Modus zwangsweise in den Sleep-Zustand versetzen kann, wenn in den Android-Einstellungen die Akku-Optimierung für Termux aktiviert ist
  • Das Web-GUI ist im lokalen Browser unter http://127.0.0.1:8384 erreichbar; das ist auch bei Nutzung der bisherigen Syncthing-App möglich

Beispielkonfiguration mit Termux + Tasker

  • Ein Nutzer bestätigte, dass die Kombination Syncthing + Tasker + Termux als Alternative funktioniert
  • Die Installation sieht wie folgt aus
    • Tasker aus dem Play Store installieren
    • Termux und termux:tasker aus F-Droid installieren
  • Die zusätzlichen Berechtigungen sind folgende
    • Tasker: additional → run commands in termux environment
    • Termux: Appear on top
  • Der Befehl zur Installation von Syncthing in Termux lautet
termux-setup-storage
apt install syncthing
  • Die Datei ~/.termux/tasker/start-syncthing-for-5minutes.sh erstellen und so konfigurieren, dass Syncthing 5 Minuten lang läuft
#!/usr/bin/bash

timeout -s KILL 5m syncthing
  • In Tasker wird eingerichtet, dass dieses Skript von 00:00 bis 23:59 alle 1 Stunde über Plugin→Termux:Tasker ausgeführt wird
    • start-syncthing-for-5minutes.sh
    • terminal session: X
  • Wenn man im GUI die Option Start browser deaktiviert, öffnet sich beim Start nicht automatisch der Browser
  • Exportiert man die Einstellungen aus der bisherigen Android-App und kopiert sie nach ~/.local/state/syncthing, kann man statt einer neuen Installation die bestehende Konfiguration weiterverwenden
    • Anschließend kann man in config.xml username/password für den GUI-Zugriff löschen und sie bei Bedarf neu setzen

2 Kommentare

 
GN⁺ 2024-10-21
Meinungen auf Hacker News
  • Die Gespräche mit Google haben nichts gebracht. Die von Google geforderten Änderungen, um die Berechtigung zu erhalten, waren vage, sodass es schwer war herauszufinden, wie man darauf reagieren sollte, und unklar blieb, ob irgendetwas davon Erfolg haben würde.
    Danach kamen noch separate Aufgaben hinzu, um bei Play bleiben zu können, etwa die Entwicklerverifizierung und das Ziel-API-Level. Am Ende habe man erkannt, dass man nicht mehr die Motivation und Zeit habe, dieses Spiel weiter mitzuspielen.

    • Ich glaube nicht, dass Google als Ausrede für ein Sicherheitsproblem akzeptiert hätte: „Wir wollen die Datei-API nicht benutzen, weil das Schreiben des Codes schwierig ist.“ Ich weiß auch nicht, welche Diskussion möglich gewesen wäre nach dem Motto: „Wir wollen die SAF-API nicht benutzen, also erlaubt uns bitte Zugriff auf alle Nutzerdaten, Fotos usw.“
      Das wirkt ähnlich wie jemand im Unternehmen, der explodiert und behauptet, sein eigener Weg sei besser, statt PR-Kommentare zu beheben. Auch Apple erlaubt nicht einfach das Schreiben in beliebige Verzeichnisse, nur weil ObjC-/Swift-APIs schwer zu benutzen sind.
  • Früher habe ich in den 2010ern bei Dropbox professionell Android entwickelt und kannte mich auch ein Stück weit mit den alten Android-Dateisystem-APIs aus, bin aber bewusst in Richtung Developer Experience/Backend gewechselt und habe Android verlassen. Den meisten meiner früheren Android-Kollegen ging es ähnlich.
    Die endlosen Verfahren und API-Änderungen, die man durchlaufen musste, damit Apps weiter funktionieren, waren extrem schmerzhaft. Als 2014 das neue „sichere“ Storage Access Framework erschien, fand ich eine triviale Directory-Traversal-Schwachstelle, bei der man nur "../../" im Dateinamen übergeben musste, um in das private Verzeichnis beliebiger Apps zu schreiben. Beim Durchsehen des AOSP-Quellcodes, um SAF zu verstehen, sprang sie mir sofort ins Auge.
    Android setzte lange Zeit auch ein globales Execute-Bit auf App-Ordner, sodass eine bösartige App Hardlinks auf Dateien anderer Apps per Namen anlegen und diese dann wieder an die jeweilige App übergeben konnte, um über einen Confused-Deputy-Angriff auf Dateiinhalte zuzugreifen.
    Es ist erfreulich, dass Android die Sicherheit verbessert hat, aber es wurde auf einem viel zu lockeren Fundament gebaut. Weil unzählige Apps dieses Fundament genutzt oder missbraucht haben, dürften die immer größeren Kompatibilitätsbrüche, die mit stärkeren Sperren einhergehen, Entwickler dazu bringen, das Ökosystem zu verlassen.
    [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

    • Das Problem ist, dass die laufenden Wartungskosten nativer mobiler Plattformen zu hoch sind. Wer will schon auf einer Plattform entwickeln, deren Grundlage sich ständig verändert?
      Ich vermisse die Vision von webOS. Das heißt nicht, dass ich die konkrete webOS-Implementierung von vor 14 Jahren vermisse.
  • Es gibt einen aktiv gepflegten Syncthing-Fork für Android, und auch wenn es nur eine separate Kennzahl ist, hat er 1,3K Sterne bekommen.
    [1] https://github.com/Catfriend1/syncthing-android

    • Gut zu wissen, aber im README steht: „Ich plane, mein Google-Play-Developer-Account zu schließen. Wenn Sie die aktuelle gplay-Release-Datei erhalten möchten, um bei der Veröffentlichung dieser App zu helfen, kontaktieren Sie mich bitte.“
    • Ich nutze diesen Fork schon ziemlich lange. Als ich mit Syncthing anfing, schien es die gängige Meinung zu sein, Syncthing-Fork zu verwenden, aber ich erinnere mich nicht mehr an den Grund.
    • Merkwürdigerweise kann ich im Play Store derzeit beide nicht finden. Die App, die wie das über Play installierte Original aussieht, ist noch auf meinem Gerät.
    • Ich habe die Einstellungen aus der anderen App exportiert und in diesen Fork importiert; es scheint zu funktionieren. Die Einstellungen sind alle noch da und die Synchronisierung scheint ebenfalls zu laufen. Applaus für die Entwickler.
    • Stimmt, den benutze ich. Seit Jahren sehr zufrieden damit.
  • Im ursprünglichen Thread sagt der Autor, dass die Veröffentlichung bei Google Play sehr schwierig sei.
    Er schreibt: „Der Grund ist, dass Google die Veröffentlichung bei Play schwierig bis unmöglich macht.“ Kann jemand genauer erklären, was hier vor sich geht?
    [1]: https://forum.syncthing.net/t/discontinuing-syncthing-androi...

    • In diesem Fall wollte der Autor für den Zugriff auf Daten außerhalb der App-Sandbox nicht die seit einigen Jahren verpflichtende Storage Access Framework API verwenden.
      Diese API ist Java-only, und der Kern von Syncthing ist nicht in Java geschrieben. Um beim Lesen und Schreiben von Dateien Android aufzurufen, hätte man also JNI-Glue-Code schreiben müssen. SAF weist jeder Datei eine URI zu und erfordert, die Ordnerstruktur ständig abzufragen; man kann also nicht einfach Pfade wie bei normalen Dateien zusammenfügen, was ziemlich umständlich ist.
      Der Autor wollte diese Arbeit nicht machen und versuchte, Google davon zu überzeugen, weiterhin direkten Zugriff auf alle Dateien, Fotos und Dokumente zu erlauben, aber Google lehnte ab. Die „Schwierigkeit“ hier scheint zu bedeuten, dass es wirklich schwer ist, bei Play zu veröffentlichen, wenn man die Richtlinien nicht befolgt. Wie im App Store.
    • Ich kenne das konkrete Problem dieses Entwicklers nicht, kann aber von meinen Problemen mit Google Play als Android-Entwickler berichten. Google Play wird bei App-Berechtigungen immer strenger, und die Kriterien für die Genehmigung von Berechtigungen sind sehr undurchsichtig.
      Meine App bekam in einem Minor-Release eine Berechtigung genehmigt, wurde aber in der folgenden Woche abgelehnt, obwohl es nur eine kleine Änderung an der App gab. Wenn man den Google-Play-Support kontaktiert, sind die Antworten immer vage, standardisiert und repetitiv. Man weiß nie, ob ein App-Update genehmigt wird; das ist eine schreckliche Grundlage, um irgendetwas zu entwickeln.
    • Ich habe beruflich einige Apps gebaut, und die treffendste Analogie ist staatliche Regulierung. Store-Anforderungen, APIs und Regeln stehen über viele Stellen verstreut in einem 49-seitigen Dokument viel zu detailliert beschrieben, und ohne Insiderwissen gibt es keinen verlässlichen Weg, sie umzusetzen.
      Am Ende bestraft diese Struktur nur kleine Entwickler mit wenig Budget und wenig Zeit und fördert die Konsolidierung zugunsten großer Anbieter. Große Anbieter können in gewissem Maß Einfluss ausüben, genießen grundlegendes Vertrauen und haben Budget und Zeit, absurde und manchmal belastende Anforderungen umzusetzen. Im Ergebnis wirkt es, als wolle man ihre Marktposition festigen und klebrige Teilnehmer schaffen, die den Play Store über Jahrzehnte stützen.
  • Ich habe damit meine KeePass-Datenbank auf dem Telefon abgelegt, das ist unangenehm. Gibt es andere in derselben Lage?

    • KeePass2Android funktioniert mit SFTP etwas besser. Zum Beispiel kann es Änderungen zusammenführen, wenn ein Konflikt entsteht.
      Ich empfehle, per SFTP auf einen Rechner zuzugreifen und auf diesem Rechner Syncthing mit den übrigen Geräten laufen zu lassen.
    • syncthing-fork hat in den letzten Jahren für mich spürbar besser funktioniert: https://f-droid.org/en/packages/com.github.catfriend1.syncth...
    • Resilio Sync ist auch ziemlich gut, aber proprietäre Software.
    • Am Ende wird KeepassDX die Syncthing-Funktionalität wohl selbst integrieren müssen.
    • KeePass und Joplin sind beide betroffen.
  • Wenn Nutzer Syncthing kennen und nutzen wollen, scheint es mir durchaus machbar, sich für APKs auf F-Droid zu verlassen. Reicht es nicht, das als Vertriebskanal zu nutzen?

    • Das wird sich in den nächsten Monaten zeigen, wenn Leute auf den F-Droid-basierten „syncthing-fork“ oder auf andere Synchronisierungstools umsteigen.
  • Ich hasse Mobile Computing so sehr.

    • Diese Situation ist so schlecht, dass ich die Win32-Developer-Experience aus Pocket-PC-Zeiten vermisse.
  • Ich werde die APK zusammen mit meinen Turbo-Pascal-Disketten an einem sicheren Ort aufbewahren. Syncthing für Android war für die Verwaltung meiner Notensammlung unverzichtbar.

  • Weiß jemand, wie lange die aktuelle Syncthing-Android-App künftig noch funktionieren wird?