Closed aparcar closed 1 year ago
Please clarify. Is the functionality related to routing? If it is, then I'll be glad to consider it. If it is not, then it does not belong in babeld itself, it should be implemented in a separate daemon, one that does not depend on a specific routing protocol.
@PolynomialDivision already told me that sroamd implements sone smart algorithm. Would be great to have that not only for Roaming but generically.
Coming from BMX7 it took care of file distribution. Im happy to use a dedicated daemon for syncing but thought babeld already keeps an eye on state changes and share the information effectively
Babeld runs as root, and if the daemon crashes, you lose connectivity to the internet. Thus, the babeld daemon must be rock solid, and therefore it is not good engineering practice to have it do things that are not strictly required for routing.
For file transfer, I prefer to use applications that run over IP, and that are not restricted to your mesh network. For one-to-one file transfer, I recommend WebRTC. You may try out a WebRTC file transfer by going to https://galene.org:8443/group/public/, logging in twice with different usernames, then clicking on the username of the user to which you wish to transfer a file. (Galene's file transfer is peer-to-peer: the server is only used to exchange cryptographic keys.) Please let me know if you want me to write a client-line client for Galene's file-transfer protocol (one that does not require a browser).
Another good choice for file transfer is SyncThing.
For one-to-many file sharing, there's still nothing that beats BitTorrent. Unfortunately, BitTorrent is not encrypted by default (in most clients, you need to configure encryption manually), and the encryption algorithm is very weak by modern standards (768-bit RSA keys, and RC4 as the symmetric cipher). I've heard good things about IPFS, but I haven't tried it myself.
The common feature of all of these protocols is that they run at the application layer: they are completely independent of the routing protocol, and therefore do not lock you into one specific routing protocol. Please be vigilant and make sure you don't get locked in, by me or anyone else.
Closing this issue, but please feel free to continue the discussion on the babel-users mailing list (or on galene@lists.galene.org if more suitable).
@aparcar Your request gave me the motivation to write https://github.com/jech/galene-file-transfer. You will find binaries in https://www.irif.fr/~jch/software/files/.
It would be a handy feature to exchange arbitrary strings between nodes to have a "sync" state of whatever downstream data could be of use. Some mesh communities exchange leases etc.