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 
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