I’ve run in to [Automerge](
https://github.com/automerge/automerge) this morning.
It has a mention in the channel history, but given how exciting I find it, I think it’s worth mentioning again. The technology itself is really interesting, but its principles, ideas and direction are maybe even more interesting.
TLDR: it provides a distributed JSON style document store that’s happily “offline first”. Changes made at one node can be propagated to others over any desired medium (Flash disks or network), where they’ll be combined. It has some support for relational style data in the form of a “table” type. Sequence types allow collaborative insert and removal without conflict.
IMHO something providing functionality like this will be pretty vital to the future of computing. I envisage we’ll move to keeping programs in a database like this, along with other information such as chats, code review, issue trackers, wiki, ui designs, … basically all the data we use as we develop. It’ll also make sense as a store for all user data: not walled in by a single tool, but freely usable and updatable from any application view on to it.
I’m just looking through some internal details documented here:
https://github.com/automerge/automerge/blob/master/INTERNALS.md and hoping it’ll make enough sense that I might be able to start on a swift implementation.