Swarms and Syncthing

While reading about the new Swarm capability in Jami, I started thinking how many of the desired features are already provided by Syncthing. In fact, I rediscovered a post I wrote on their forum six years ago (where does the time go?) in which I outlined the concept of a p2p messaging platform based on Syncthing. I recognize that a lot of work and thought has already gone into the new Jami Swarm system, but I’m curious if the developers are aware of Syncthing and how it works.

Personally I cannot overstate how robust and amazing Syncthing is and how I’ve been using it for years to sync files effectively flawlessly between my phones and computers. I believe it has tremendous potential as a foundation layer upon which many decentralized apps can be built. I could go into more detail about how I envision Syncthing enabling Jami to do more, but perhaps I’ll wait to learn more about whether or not the Jami developers have researched Syncthing technology.


I feel stupid asking this, but one thing I wonder is, with synchronization (Git or otherwise) and the editing of past messages, could there be merge conflicts ?

That’s not a stupid question at all. It is certainly one of the biggest challenges facing a decentralized system where a consistent state is required among the peers. Fortunately it is an issue that git is specifically designed to address at the lowest level, so it is smart of Jami to leverage that proven technology. However as you can see on this page, the innovation is in how you can build on that foundation to accomplish what Jami wants to do.

1 Like

Speaking of conversation consistency and learning from other projects, I’m curious if the way Matrix achieves this has been studied. It is a very similar if not identical problem that they have already solved. I can’t find the detailed spec for how it works but this is a start.

Sure, but users never have to resolve this, the daemon solves this and the majority of conflicts are avoided by the protocol, as no file are stored you don’t have conflicts on files.

Some details here: 2.3. Swarm · Wiki · savoirfairelinux / jami-project · GitLab

But generally it’s a tree you sync (or two on some systems, one for the data, one for the messages). And yes we read how a lot of systems works, but not particularly Syncthing (however I also use it).