Ich zeichne gerne meine Strecken auf und nutze OpenTracks dafür. Jetzt ist mir aufgefallen das es seit einger Zeit zwei Versionen im F-Droid Store gibt:
OpenTracks (Non-reproducible) was updated to v4.17.5irreproducible adding this new strange name. Why? Because we now also include OpenTracks (Reproducible build), A sport tracker buddy that respects your privacy, which is the same app but signed by the developer, and built and verified reproducible by F-Droid. If you want, you can switch to the reproducible version doing an export and import of your tracks.
Verstehe ich das richtig das F-Droid damit sagt das die “Reproducible” Version datenschutzfreundlich ist und damit ja auch sagt das die “Non-Reprodicible” es nicht ist?
Dann würde ich mich fragen warum sie die “Non-Reproducible” überhaupt noch im Store haben…?
Bei der reproducible-Varainte wird sichergestellt, dass sowohl Entwickler als auch F-Droid, als auch Google nichts an der Datei im Verhältnis zum Source-Code geändert haben. Bei einer Datei, die unreproduzierbar vom Entwickler, von F-Droid oder von Google gebaut ist/wäre, ist dies nicht sichergestellt, weil niemand nachvollziehen kann, ob der Bauer nicht Änderungen in die Installationsdatei eingebaut hat. Es ist also eine Frage der Sicherheit bzw. der Überprüfbarkeit und keine Frage der Privatsphäre.
Man wird davon ausgehen können, dass die non-reproducible die erste Version in F-Droid war.
Diese unterstützt ggfs. auch ältere Android-Versionen.
Weiterhin hat der reproducible Build eine andere Signatur. Bietet man nur noch diese Version an, verkomliziert das wegen Im- und Export die Transition.
So wie es jetzt gelöst ist, ändert sich für bestehende Installationen nichts. Insofern im Sinne der Anwender perfekt.
Als F-Droid noch nicht selber signiert hat, wurde die App zwar von denen geprüft aber nicht selber signiert sondern die original APK vom Entwickler angeboten und nun prüfen sie und signieren selbst. Weshalb dieser Wandel?
Warum gibt es den Unterschied in der API? de.dennisguese.opentracks zu de.dennisguese.opentracks.playstore. Ich habe gegoogelt das diese Schnistelle (API) dafür verantwortlich ist das die APP mit anderne APPs kommunizieren kann und auch gesteuert werden kann?
Kann bezüglich der konkreten Beweggründe im Verlaufe der Distribution dieser Software nicht dienen.
Wenn ich in der Vergangenheit bei einer für mich selbst wichtigen Anwendung derartig detailliert Gründe und Motivationen nachvollziehen wollte, habe ich in deren Forum nach der App recherchiert und ggfs. noch im Repo und Tickets von F-Droid bei gitlab.com herangezogen.
Meist konnte ich es damit nachvollziehen.
Darüberhinaus kann man noch im Forum selbst nachfragen, wenn man nichts findet oder weitere Fragen bestehen.
In allen Fällen hat das jeweils seine Richtigkeit gehabt oder war aus Sicht des F-Droid-Projekts nachvollziehbar.
Also mit Ausnahme der Fragen die ich bzgl. eigener Entwicklungen hatte immer nur Zeit verschwendet
Nein: F-Droid hat früher selbst signiert. So konnte man nie sicher sein, dass die F-Droid-App das ist, was im Source-Code des Entwicklers steht. Deshalb gibt es seit geraumer Zeit die Möglichkeit, reproduzierbar zu sein.
Habe den Entwickler persönlich gefragt was der Unterschied sei, die Antwort war nur “die eine ist von dem signiert, die andere von beiden”. Da kommt es dann doch ganz natürlich zu der Frage “aber warum?”. Die wurde dann nicht vom Entwickler beantwortet und das wirft Fragezeichen auf…
Das klingt nach mir…
Dann ist die reproduzierbare Variante also eigentlich zu bevorzugen… Dann mache ich das jetzt.
Das stimmt, ich wollte dann nur noch wissen warum es überhaupt verschiedene Versionen gibt… Das jetzt zu wiederholen war unnötig von mir.
PS: Wobei solche “Doppelten Version” doch einen normalen Nutzer nur irritieren… Da sollte man dann ein mal auf die “Mehrfach Geprüfte Version” umstellen und fertig… Wobei es ja auch noch Unterschiede in den Versionen gibt die einem niemand erklärt… (unterschiedliche Öffentliche API)
Die Non-Rebroducible Version von OpenTracks ist im AppVerifier gelistet. Damit stelle ich bei Nutzung der Non-Reproducible Version Sicher das die App vom Entwickler Signiert ist, somit dem Source Code vom Entwickler entspricht und nicht von dritten Verändert ist!? Ist das soweit Korrekt?
Im Vergleich dazu wäre der Vorteil der Reproducible Version “nur” das die Reproducible Version von dritten (F-Droid) geprüft wird das der Sourcecode dem des Entwicklers der App entspricht?
Wenn der Entwickler der App den Sourcecode verändert geht das doch dann auch bei F-Droid in der Reproducible Version so mit ein/durch!?
@TylerDurden7 Ich bin mir nicht sicher ob die “Reproducible” Version mit der “Non-Reproducible” Version verglichen wird denn das kann kein Match erzeugen da beide Versionen unterschiedliche “Öffentliche APIs” haben…
Es wird scheinbar von F-Droid mit einer Entwickler Version verglichen die eine andere ist als die, die nur vom Entwickler als “Non-Rep” zur Verfügung stellt wird…
Das finde ich ja so verwirrent…
Oder kann es mit unterschiedlicher Öffentlicher API zu einem Match beim signieren kommen?
Nach meinem Verständnis kann das so nicht sein. Es kann doch nur einen Source Code der App vom Entwickler geben. Sobald es einen zweiten Source Code von einem anderen Entwickler gibt ist das eine Fork und nicht mehr die original App.
Im Fall von OpenTracks basieren beide Versionen auf dem Original Source Code von Dennis Guse. Bei der Reproducible Version verstehe ich das aber so das die App dann aber von F-Droid auf ihre Übereinstimmung mit dem Source Code geprüft wurde.
Bei der Non-Reproducible findet diese Prüfung durch F-Droid nicht statt. Hier musst du dem Entwickler der App Vertrauen.
Ja, so soll es sein und so schreibt es der Dennis Guse auch. Doch wenn du beide Apps mal installierst und in Einstellungen > Öffentliche API gehst stehen dort unterschiedliche Dinge. Sollte das dann nicht zu einer “Nicht-Übereinstimmung” beim vergleichen/signieren kommen?
Nein: Du stellst sicher, dass die App von F-Droid gebaut wurde. Und dass die App wirklich von F-Droid stammt und von niemand anderem als F-Droid verändert worden sein kann. Du musst also immer komplett F-Droid vertrauen und deshalb wird stückweise auf reproducible umgestellt, weil der Build-Prozess von F-Droid sehr unvertrauenswürdig ist. Sie wird eine andere Signatur haben als die reproducible.
Hier wird sichergestellt, dass auch F-Droid die Version nicht geändert haben kann. Sie wird eine andre Signatur haben als die non-reporducible-Version.
Man kann durchaus zwei Apps mit sehr ähnlichen Source-Code in unterschiedlichen Branches oder gar Repositorys betreuen. In diesem Fall gibt es die Branches https://codeberg.org/OpenTracksApp/OpenTracks/src/branch/main und https://codeberg.org/OpenTracksApp/OpenTracks/src/branch/annouce%232165 (letzters bestimmt die reproducible-Variante). Wieso sollte es nicht möglich sein? Bei Obtainium ist es z.B. auch ähnlich: dev.imranr.obtainium ist die für den Google Play Store (der hat die App irgendwann rausgeschmissen) und IzzyOnDroid reproduzierbare Variante, die der Entwickler auch noch einmal selbst packt. Später hat er dann dev.imranr.obtainium.fdroid veröffentlicht, die sich nicht selbst aktualsieren kann (Grundvoraussetzung für F-Droid), die ebenfalls reproduzierbar ist (deshalb veröffentlicht er davon auch Versionen (wegen dem seltsamen Build-Prozess von F-Droid deutlich schneller als F-Droid)).
Erstmal Danke für die ausführliche Antwort und das du dir nochmal die Zeit genommen hast den Unterschied zwischen Non-Reproducible und Reproducible zu erklären.
Wie bereits gesagt ist die Reproducible Version damit die Vertrauenswürdigere Version. Aber wie genau muss ich mir das vorstellen? Beide Versionen werden ja von F-Droid gebaut. Wird die Reproducible dabei im unterschied zur Non-Reproducible nach einer bestimmten Richtlinie gebaut, wird sie von einer unabhängigem Instanz geprüft oder wie muss ich mir den Prozess vorstellen das sich die App dann Reproducible nennen darf?
Ich weiß nicht, ob du weißt, wie man eine App baut (und vor allem dass man sie mit einem Zertifikat signiert). Normalerweise kennt der Builder dieses Zertifikat, sodass du dem jeweiligen Builder vertrauen musst, dass er das vernünftig macht. Bei reproducible Building ist es nun so, dass es kein klassisches Zertifikat gibt. Irgendwie kann jeder, wenn er die genau beschriebene standardisierte Entwicklungsumgebung und relative Ordnerpfade verwendet, genau dieselbe Datei genau gleich signiert erstellen (die Zufallszahlen sind irgendwie auch determiniert). Wie genau diese Kryptomagie funktioniert, weiß ich auch nicht. Das ist das, was die Wikipedia dazu schreibt: https://de.wikipedia.org/wiki/Reproduzierbarkeit#Quelloffene_Software