In dem Fall braucht man den User als Schiedsrichter.
Mir ging es bei meiner Idee (...) darum, dass es niemals erforderlich ist, eine Datei herunterzuladen nur um festzustellen, ob es Abweichungen zur lokalen Version gibt.
Das hatte ich ich für einen Synchronizationsdienst vorausgesetzt
Stattdessen reicht es aus die nur wenige kB grosse ".syncstate" Datei zu vergleichen.
Dadurch, dass die Historie der Hashwerte aufgehoben wird kann ein Client leicht erkennen, dass er noch eine alte Version hat.
Ah, das du die Historie mit reinschreiben willst, hattest du nicht erwähnt. Das macht auch das Zusammenführen von Versionen mit Änderungen an disjunkten Dateien möglich.
(inspiriert vom Git object model)
Es gab auch schon den Ansatz, direkt auf git aufzusetzen (
SparkleShare), aber da die Historie komplett aufgehoben wird wird und git nicht unbedingt viele große Dateien verkraftet, ist das vielleicht nicht die beste Idee.
Ich würde mich übrigens auch über eine echte freie Dropbox-Alternative freuen und möchte deinen Ansatz nicht zerreden.