So, ich habe mir jetzt einmal auführlich überlegt, wie ich das implementieren würde. Nachdem ich im GitHub Ticket nicht allzu viel Feedback bekommen habe, hier einmal zusammengefasst. Wer große Bedenken dagegen hat, der möge jetzt sprechen oder für immer schweigen.
Grundsätzlich sind drei Modi zu unterscheiden: Automatisch (Online), Automatisch im Wifi und Manuell (Offline).
Für jeden Aufgabentyp wird ein eigenes Changeset erzeugt. Dieser Changeset hat je nach Aufgabentyp als Kommentar eine kurze Beschreibung, zum Beispiel “Added street surfaces” (also statt pro Aufgabe).
So ist nach wie vor am Kommentar des Changesets sofort die Natur der Änderungen zu erkennen, gleichzeitig reduziert sich die Anzahl der einzelnen Changesets deutlich.
Zunächst für den automatischen Modus: Gelöste Aufgaben werden sofort innerhalb ihres jeweiligen Changesets hochgeladen. Existiert noch keiner oder ist dieser schon geschlossen worden, wird dieser on-the-fly erstellt.
Der Changeset wächst also während der “survey” des Benutzers und wird schließlich von der App geschlossen, nachdem der Benutzer 10 Minuten keine Aufgaben dieses Typs mehr eingetragen hat. Diese Dauer kann nach Bedarf angepasst werden, wird aber nie über 1 Stunde betragen, da er nach einer Stunde automatisch vom OSM Server geschlossen wird. Tatsächlich wird dieser Fall recht häufig eintreten, denn es ist wahrscheinlich, dass nach dieser Wartezeit die App selbst garnicht mehr läuft.*
(Die App muss sich also persistent pro Aufgabentyp die zugehörige changeset id und die Zeit des letzten Lösen einer Aufgabe dieses Typs merken.)
Der “Automatisch im Wifi” Modus verhält sich wie der Name schon sagt im Wifi wie der automatische Modus und außerhalb des Wifis wie der manuelle. Das heißt, kommt man (zurück) in ein Wifi, werden die gelösten Aufgaben zwar sofort hochgeladen, aber die zugehörigen Changesets erst nach der Wartezeit geschlossen.
Manueller Modus: Der manuelle Modus ist ein bischen wie man es von einem klassischem Editor kennt. Es wird nichts automatisch hochgeladen und wenn der Benutzer den “Hochladen” Knopf drückt, wird sofort für jeden Aufgabentyp ein Changeset geöffnet, die Änderungen übertragen und der Changeset geschlossen. Das bedeutet, wenn ein Benutzer ständig auf diesen Knopf drückt, dann sind die Changesets eben auch klein. Das hat er da selbst in der Hand, wie bei jedem anderen Editor auch.
Es wäre natürlich möglich, auch im manuellen Modus die Changesets nicht sofort zu schließen sondern erst nach der Wartezeit, ich denke aber das läuft zuwider der Erwartung der Benutzer, dass nach Druck auf den Hochladen-Button wirklich alles abgeschlossen ist (würde aber natürlich zu weniger Changesets führen).
- technisch wäre es möglich, dies auch nach Ableben der App zu machen (Android AlarmManager). Das ist etwas komplexer und kann später implementiert werden.