Expanding the possible use of SyncThing

I first want to thank the developers of SyncThing. You have created an awesome, very much needed product and done so purely altruistically.

SyncThing essentially enables an encrypted connection between two devices to allow the transfer of information on a peer-to-peer and thus decentralized basis. With this encrypted connection between devices, it allows the synchronization of files.

But can’t we use this secured connection for much broader purposes than only file synchronization? I realize this would expand the scope of the development of SyncThing greatly, but these same encrypted connections could transmit, in real time, text, voice and video streams. The Tox project, which I also use and greatly appreciate, does essentially this, but why do these two forms of software have to exist separately?

It seems the commonality between SyncThing and Tox is a peer-to-peer decentralized method for connecting devices with full encryption. It would be wonderful if that connection could enable all forms of communications between the devices–files, text, audio and video streams and perhaps more (such as currency transactions with a cryptocurrency).

Just my two cents.

2 Likes

The goal of syncthing is to provide software for file synchronization (similar to Bittorrent Sync).

Any other kind of data transfer is out of scope for the project, but of course anyone with enough programming knowledge couldessentially hack it on top of the existing software.

Maybe it would make sense to provide libsyncthing (or similar) with only the transfer/discovery part to faciliate such projects?

Edit: I’m not very familiar with Tox and what it needs from a protocol, so I don’t know how much their requirements differ. But both projects are pretty far along already (and in different languages), so a merge seems really unlikely.

The protocol could be extracted and used for whatever to be honest, but it doesn’t make a lot of sense out of the context of files, because it has index exchanges and so on. You don’t need this for chat or whatever other applications (unless you have history or something).

Given you need secure P2P TLS, syncthing is too much and hacking up P2P TLS with discovery is a piece of cake.

Hey @Cato, as @AudriusButkevicius mentioned, Syncthing has a very specific focus and this is reflected in its architecture. That focus is a good thing (it does one thing and one thing well). Some of us are building solutions on top of the common base (check out what we’re doing at https://ind.ie) but I would be surprised if the core of Syncthing was too see any bloat in the near future.

Hi Cato, I agree that the syncthing protocol (BEP) has great potential outside of the file synchronization use case. I’m currently porting the protocol to Swift and Java (see http://dapperstout.com). Eventually I want to create a library that allows mobile app developers to use it as a “backend”, enabling the creation of apps that don’t need servers, but instead synchronize directly between phones or other devices.