I find it interesting that several groups are converging on similar decisions. CouchDB, Spanner and Datomic have versioned data, with all versions immutable. All support some manner of offline operations. They do have different ways to resolve conflicts: manually, time-based and explicitly, respectively.