Is a "Google Drive"-like app viable on SAFE Net?


I make a lot of use of Google Drive for allowing multi-user, real-time access to the editing of docs and spreadsheets. Now the LibreOffice app has a web version there is the possibility of having something similar for SAFE Net but there are a number of problems - the first one that I see is that GD does a save to disk after every word - in SAFE would that mean that a completely new copy of the file has to be created, chunked, encrypted, saved etc? Maybe a mechanism could be devised so that only happened with a deliberate “Save File” command or after a set number of minutes or something?




There is the ability to save the edited data to RAM and leave the copy that’s on the SAFE Network unchanged until an explicit “Save” command is performed.

I am not, however, assured that this would secure the data against

  1. Corruption
  2. Physical Access

The way I understand it though (IIRC), there is no way to have a mutable datatype unless it’s Structured Data (the other being Immutable Data). Structured Data costs appx. 10x what Immutable Data costs. So there can’t be a “save the edited file as the same file” on the network as a casual use-case. It would always end up being “save the edited file as a new file”.

This kinda shuts down the “multi-user real-time access” ability that the system currently in place on the existing internet provides. In a dual-user scenario, the way to go about doing this may be to have one user connect to the other’s machine itself, and have the edit take place in RAM. But to summarize, no, it is infeasible to do over the SAFE Network (to the best of my knowledge).

I think this remains to be seen, it would imply that the virtual SAFE drive was also unusable.

@philip_rhoades so I don’t know the answer, but it’s certainly desirable and so once the core is working I’m sure will be something to look at. There’s a lot to be decided in the file sharing and sync area though, so I don’t think anyone can answer this one.

A smart implementation would make use of the 100 KB mutable data in a StructuredData object for most recent changes.


At least we can say that it should be impossible on a basic level. You would need an application to run on top of SAFE to do what GoogleDocs does, everything else would imply the need to save each version (that means: after each letter) new.

There are some competitors like Zoho that allowed to store the change protocol on the device and only save when prompted. However, that´s not the comfort that GoogleDoc provides, which in comparison to Zoho is really handy.

Check out EtherCalc and Etherpad. They use “operational transforms” which basically just send diffs to each editor. Instead of saving a new version every time, you could just save the transforms to the Structured (mutable) Data. When the mutable data is > 100KB (Structured Data max storage) then a new version would be saved.

Generally, any type of distributed app will entail significant re-engineering. After decades of the client-server model it will take some years before we reach parity with the types of apps available.


It’s definitely possible but it’s not going to be a new copy of the file but a new copy of the modified chunk and adjacent chunks. With a well made client that handle modified file well, it would be possible to remove or add data in the middle of the file without having to recreate to whole chunk after that modified data. Ex. you modify a file in the middle and add some data, the corresponding chunk that is 1M already would be split in two chunks to add the data in the middle, 514K+514K (if 4K is added).


The split can work with few modifications but with many changes the Datamap growth makes unfeasible.

I’m with @zankfrappa, the SD path with only the diffs seems better. Can add milestones too each X changes.

However, nothing prevents both solutions may exist and each choose what suits best.

1 Like

many changes at the same time or many change one after another. If it’s at the same time, I understand, it’s like a new file anyway but one after another that will work indefinitely even with the data map that follow the same rules.

Thanks for this guys. I believe that you are absolutely correct. I didn’t even think of that before. @philip_rhoades Please excuse my ignorance, I still have much to learn!