Nice outline of the various techniques. We've built something in-between the operation-based and delta-based approaches for our offline-first multiplayer "IDE for notes/tasks" [1].<p>In our case we have a central server which periodically creates snapshots. Although we don't do that right now, if needed, it could delete older operations from the log for space reasons. Except for the fact that replicas encrypt their ops before they send it to the server (e2ee), the server is pretty much like any other replica, so if there is no central server I guess any or multiple replicas could also create snapshots instead.<p>"Normal" replicas which have been offline for a while can then get the last snapshot state S' with all operations since S'. Other than that, they simply broadcast operations and only keep their own latest version to which they apply incoming operations.<p>[1] <a href="https://thymer.com" rel="nofollow">https://thymer.com</a>