ReNotify ist jetzt Open Source
Ein Benachrichtigungsverlauf liest alles auf deinem Handy. Jetzt kannst du seinen Code lesen: alle Funktionen frei, GPLv3, nichts mehr zu glauben.
Eine App, die deinen Benachrichtigungsverlauf speichert, liest alles, was auf deinem Handy ankommt: die Nachricht deiner Partnerin, den Code deiner Bank, den Namen der Person, die gerade dein Foto mag. Dir dafür nur eine Datenschutzerklärung anzubieten, kam uns immer zu dünn vor. Deshalb ist ReNotify jetzt Open Source. Der komplette Benachrichtigungsverlauf liegt öffentlich auf GitHub unter der GPLv3, und jeder kann nachlesen, was die App mit einer Benachrichtigung macht, sie selbst bauen oder eine signierte APK von der Release-Seite installieren.
Hier steht, was in diesem Repository liegt, worin sich die Version bei Google Play unterscheidet, was wir vor der Veröffentlichung geändert haben und wie du unsere Aussagen prüfen kannst, ohne uns irgendetwas glauben zu müssen.
Warum so eine App offen sein sollte
Die meisten Apps fragen nach Berechtigungen, die leicht einzuordnen sind. Eine Kamera-App will die Kamera. Ein Benachrichtigungsverlauf braucht den Benachrichtigungszugriff, und diese Berechtigung ist von anderer Art: Einmal erteilt, reicht Android der App Titel und Text jeder Benachrichtigung jeder App weiter, sobald sie eintrifft. Wir haben beschrieben, was eine App mit Benachrichtigungszugriff wirklich lesen kann, und ehrlich zusammengefasst ist es fast alles, was du in deiner Leiste siehst.
Für eine App, die so viel in der Hand hat, ist „vertrau uns“ die schwächste Antwort. Eine Datenschutzerklärung beschreibt Absichten. Quellcode beschreibt Verhalten. Ist der Code öffentlich, wird die Frage „lädt diese App meine Nachrichten hoch?“ von einer Glaubensfrage zu etwas, das eine Entwicklerin an einem Nachmittag beantworten kann, indem sie den Listener-Dienst und die eine Klasse liest, die mit dem Netz spricht.
Was die Open-Source-Ausgabe ist
Das Repository heißt ReNotify-App-OpenSource. Darin steckt die App, die du kennst: der Verlauf nach Apps gruppiert, erneutes Senden mit Original-Zeit, Erinnerungen, Regeln, die ausblenden oder stumm schalten, der Statusleisten-Filter, Widgets, Trends und automatisches Löschen. Die Ideen, mit denen wir ReNotify begonnen haben, sind alle drin.
In einem wichtigen Punkt unterscheidet sich die Open-Source-Ausgabe: Jede Funktion ist frei. Es gibt nichts freizuschalten, keine Testphase, keinen Kauf und kein Banner für unsere anderen Apps. Sie installiert sich unter einer eigenen App-Kennung, com.renotify.oss, und steht damit neben der Version aus dem Play Store, statt sie zu ersetzen.
Der Code steht unter der GNU General Public License v3.0. Du darfst ihn lesen, ändern und weitergeben, und wenn du eine veränderte Fassung veröffentlichst, bleiben auch deine Änderungen offen. Der Name ReNotify und das Icon gehören nicht zu dieser Lizenz, ein Fork braucht also einen anderen Namen.
Regeln und Statusleisten-Filter verhalten sich genau wie bei Google Play, auch in dem Punkt, der uns am wichtigsten ist: Anrufe, Wecker, Kalendererinnerungen, Navigation, Musikplayer und laufende Dienste werden von keiner Regel und keinem Filter ausgeblendet oder stumm geschaltet.
Was die Ausgabe im Play Store ergänzt
Die Version bei Google Play entsteht aus demselben Quellcode. Sie ergänzt, was die Arbeit finanziert, und wir zählen es lieber selbst auf, als dass es jemand findet:
- Pro ist ein Einmalkauf über Google Play Billing. Die Gratis-Version behält die letzten 7 Tage Verlauf und bringt eine 7-tägige Pro-Testphase mit.
- Die Gratis-Version zeigt ein kleines Banner für unsere eigenen Apps. Dahinter steckt kein Werbenetzwerk.
- Das RevenueCat-SDK läuft im Beobachtungsmodus und zählt Umsätze. Es meldet sich beim App-Start mit einer zufälligen Kennung bei RevenueCat und erhält Kaufbestätigungen. Inhalte von Benachrichtigungen, Namen oder E-Mail-Adressen sieht es nie.
Eine Grenze gehört deutlich ausgesprochen. Die Open-Source-Ausgabe kannst du lesen und selbst bauen, eine APK aus dem Play Store lässt sich aber nicht Byte für Byte mit diesem Repository vergleichen. Wenn dir wichtig ist, genau den Code zu prüfen, den du ausführst, installiere die Open-Source-Ausgabe.
Was wir vor der Veröffentlichung geändert haben
Den Code zu veröffentlichen hieß, die eigene App so zu lesen, wie es ein Fremder tun würde. Drei Dinge haben das nicht überstanden.
Erstens war die Nutzungsstatistik von Haus aus eingeschaltet. Sie enthielt nie Inhalte von Benachrichtigungen, nur eine zufällige ID, App- und Android-Version, die Sprache und die Anzahl gespeicherter Einträge. Aber eine Statistik, die die App zum Funktionieren nicht braucht, sollte nicht laufen, bevor du zustimmst. Seit Version 1.8.6 fragt die App einmal, und bis du ja sagst, wird nichts gesendet, auch keine Absturzberichte.
Zweitens haben wir diese Statistik anonym genannt. Weil die zufällige ID von Bericht zu Bericht gleich bleibt, ist sie pseudonym, und genau so steht es jetzt in der Datenschutzerklärung.
Drittens hat unser Server die IP-Adresse jedes neu registrierten Geräts aufbewahrt. Jetzt hält er nur noch höchstens zwei Tage einen gesalzenen Hash vor, um automatisierte Massenregistrierungen zu stoppen, und er löscht die Einträge jeder Installation, die sich 90 Tage nicht gemeldet hat.
Die Open-Source-Ausgabe geht noch einen Schritt weiter. Sie hat überhaupt keinen Statistik-Server. Die Einstellung ist ein leerer Platzhalter, die App fragt also nie und verbindet sich nie. Wer sich eine eigene Fassung baut, kann dort seinen eigenen Server eintragen, und dann gilt dieselbe Regel mit der Zustimmung.
So prüfst du es selbst
Du musst keine Android-Entwicklerin sein, um mit dem Repository etwas anzufangen. Wenn du es bist, lohnt sich zuerst ein Blick auf diese Stellen:
- Der Listener-Dienst, der jede Benachrichtigung empfängt und in die lokale Datenbank schreibt. Nur hier gelangt Text aus Benachrichtigungen in die App.
- Das Telemetrie-Paket, der einzige Code, der eine Netzwerkverbindung öffnet. In der Open-Source-Fassung ist seine Server-Adresse leer.
- Die README, die jede Berechtigung samt Grund aufzählt und das genaue JSON zeigt, das eine Statistik senden würde.
Willst du die APK aus dem Release installieren und sicher sein, dass sie von uns stammt, vergleiche ihr Signaturzertifikat mit dem SHA-256-Fingerabdruck in der README. Findest du ein Sicherheitsproblem, schreib bitte an dev@fluxera.us statt ein öffentliches Issue anzulegen. Alles andere, Fehler und Ideen eingeschlossen, ist als Issue auf GitHub willkommen.
An der Art, wie ReNotify für dich arbeitet, ändert sich heute nichts. Dein Verlauf liegt weiter in einer lokalen Datenbank auf deinem Handy und verschwindet weiter mit der App. Neu ist, dass du diesen Satz nicht mehr einfach glauben musst. Wenn du einen Verlauf willst, der behält, was deine Leiste vergisst, findest du ReNotify bei Google Play und die Open-Source-Ausgabe auf GitHub, mit jeder Funktion frei.