== Jupiter (obby >= 0.3.0) == Statt der Revisionsnummer wird nun eine sogenannte "vector time" eingefuehrt, die aus zwei Komponenten besteht: Der "local count" (die die Anzahl an lokalen Aenderungen angibt) und der "remote count" (die die Anzahl an Aenderungen angibt, die uebers Netzwerk eingetroffen sind). Jeder Client hat eine solche "vector time", und der Server hat eine fuer jeden Client. Begeht eine Client eine Operation, so sendet er diese mit seiner aktuellen vector time an den Server und erhoeht den "local count". Der Server hat diesmal fuer jeden Client eine Liste aus allen Operationen, von denen er noch nicht weiss, ob der Client sie bereits erhalten hat (acklist). Kommt also eine Opertion von einem Client an, so loescht der Server zuerst alle Operationen aus dieser Liste, deren vector time eine kleinere remote count hat als die local count der eingehenden Operation (die der Client somit also schon hat). Die eingehende Operation wird dann gegen die verbleibenden transformiert (da der Client von denen noch nichts wusste). Ausserdem wird der remote count fuer diesen Client erhoeht (Es wurde eine Operation uebers Netzwerk empfangen). Die daraus resultierende Operation wird dann auf das Dokument angewendet und an alle anderen Clients geschickt und in deren acklist gepackt (jedoch nicht mehr an den Client, von dem die Operation kam). Dabei wird auch der local count zu dem entsprechenden Client erhoeht. Empfaengt ein Client eine Operation vom Server, so geht er im Prinzip genauso vor: Auch er hat eine acklist, in der die Operationen stehen, von denen er nicht sagen kann, ob der Server sie bereits kennt (und in die er jede Operation packt, die er an den Server schickt). Er loescht nun ebenfalls alle Operationen in dieser Liste, deren remote count unter dem local count der eingehenden Operation ist, transformiert die eingehende Operation gegen die Operationen in der Liste und erhoeht den eigenen remote count. Die Operation wird dann auf das Dokument angewandt.