One of the first thoughts that came to mind when I saw crdt-tree published was “I wonder if they could do a crdt-forest?” ie. A crdt-tree of crdt-trees. Seems like it could be the backbone of a very flexible filesystem similar to ext4, where some items are just inodes and others are actual data chunks. I haven’t thought much more about that though. I suppose you could mimick an ext4 filesystem with just a single crdt-tree…
I believe forest is terminology used within crdt-tree actually.
While it is possible to store file data in the tree, I think it is problematic to do efficiently, as every modification would require sending the full file contents over the wire, even if only 1 byte was written. This is because crdt_tree supports only a single type of operation for a tree node, Move
, which sends all node data.
There is a way around this using multiple inverse operations, where each op has an inverse operation for undo/redo (eg mkdir ↔ rmdir). In this scenario, an actual write
op can be sent across the wire, with only the new bytes. I have access to a paper that demonstrates this. However doing it this way, the file content is no longer stored as ImmutableData, is not directly accessible by XorName, etc.
Thank you for the heavy work team MaidSafe! Small and positive changes lead to big Safe things!
I add the translation into Bulgarian in the first post
Crdt-tree → Safe Network Universal File System?
Why can’t the crdt node store a single chunk or set of inodes like how HDD blocks are referenced on a local filesystem?
Why can’t the contents of a single node be accessed/returned?