Hi Cedric,
a short answer: some of what you're trying to do has been traditionnally handled by object databases - multiple images retrieving and updating objects on a central store ensuring lots of good properties : see Gemstone.
Yes , Iâd like to avoid this centralized approach.
Another answer, since you're looking at content-addressable distributed file systems. You can resolve the offline mode with object duplications (duplicate all objects in the images using them), and, when coming back online, have a merge approach to reconcile changes between versions of shared objects. Content-based hashes as identifiers in a distributed store have very nice properties for that purpose, because, if image C has modified object 0xcdaff3, then that object has in fact become object 0xee345d for that image (and the unmodified object is still 0xcdaff3 for images A and B).
You nailed it. This is what Iâd like to reproduce. Existing implementations out there seems to uses whatever nodes on the network to replicate the information. Iâd like to control nodes where it is replicated. My nodes (all my app instances + nodes of person Iâm exchanging information with + eventually friend of friend). What hash function would you use ? To get something compatible with ipfs, Iâd need something like: https://github.com/multiformats/multihash <https://github.com/multiformats/multihash> It looks to me quite universal as self describing. But any (existing) hash method compatible with content hashing would do the job.
I wouldn't be against a slightly higher granularity when dealing with object transfers, however.
You mean at the pharo level ? Higher granularity means having more control on the exchange/merge ? Cheers, Cédrick