I don’t spot mention in the previous update but no matter. Is the tree CRDT data type mainly for the local safe file system or does it have to do with policies and the different branch mutations as well? Just trying to follow along.
The progress with AT2, farming algo, vaults, PARSEC removal, CRDT, etc is an absolute whirlwind!
As much as I’d like to see more public testnets I understand the redundancy until parsec is fully removed and we have more features to test in the wild. I do hope that the IGD trick to allow for the picky UPnP routers gets added to the new kids on the block
In JAMS news, Nick and I have found a way to simplify app user flow and UI. Of course not much has been shared in quite some time but we’ve got some updates to do regarding these changes and some other small fixes. We’re planning on making a landing page with a simple ‘login’ or ‘authenticate’ button to handle the auth flow leading to a discover page, probably with some hard coded music so that when a new user shows up to a brand new site with no uploaded music or easy way to search off the bat, there will be music to add to playlists and so on. Once all of this is done we’ll just waiting to pounce on safe-nodejs as soon as we can!
When all is ready I look forward to sharing a big dedicated update and hopefully everyone being pleasantly surprised.
Just going with the flow and happy seeing the pace of the team.
It was mentioned in the last 2 updates, in safe-api section.
It is a generic tree data type that satisfies CRDT requirements. As such, if it works out well for filesystem usage as we hope, then we should be able to make the raw tree data type available for apps to use directly, just as with sequence. Policies would surely apply, as for other types. That said, one step at a time. We’re not there yet.
So far I’ve just been coding up the algo as described in the (pre-print) paper and testing it out. As far as I know, this is the first hand-coded implementation in the world. The algo in the paper is defined in formal isabelle/HOL logic and then machine translated into (unreadable) Scala code for compilation and execution. So definitely cutting edge and exciting!
Will be so good once Parsec is out.
I did really well in English as a lad but am learning some new stuff with each update like " supporting concurrent Policy mutations with sequence items mutations …". Can someone interpret that into English for me.
I am going to throw that phrase into a random conversation I have next week and check the reaction I get
A data item has a policy attached. So who can update etc. The data here is a sequence (list). So the policy can update and also the list. i.e. you were allowed to write, but now have been removed, however you were allowed at one point. So the CRDT has to know how to handle an update from you, it cannot apply it to the current policy as you are not allowed, but it can apply your op to the seq you were allowed to write to.
So we branch every policy update to contain it’s own sequence data. That way the latest you are not writing to but you are writing to another point in history and that’s cool as you were allowed to write there, even years and years in the future So if you went on a trip to mars and were updating stuff and came home to earth then your updates would still work, but maybe not on latest seq data.
I’ll give it a try…
Say there is a piece of data on the network that acts like a Google doc. Different people are given permissions to modify the document. The network is designed (through CRDTs) such that when multiple edits are made to the document by different people, even when working offline, the changes will always merge successfully back into this one document. But what if your permission to modify the document was revoked while you were making an edit? The network doesn’t have a sense of time, so which came first, your edit, or the revoking of your permissions? Should the edit be merged or not? No way to tell. So they’ll make a new copy of the document every time the permissions change. Your edit would be applied to the old copy of the document where you did have permission to edit it, while presumably others will continue work on the new copy.