Hi,
I am walking in similar shoes. Last few years had similar obsession in my mind: a distributed social network. Studied some of them, some protocols, some implementations etc.
I would like to encourage any kind of efferot. But… but there is a huge but. Did not read the full documentation of syncthing/pulse, but I am afraid that the effort is not equally/fairly distributed for different aspects of the problem. Lot of effort is wasted here on how to brand what names to use. It is a bit like a campaign for elections, you insist on a “non” problem to distract attention from the real problems.
The protocol in question, though I did not study in depth, do not see any huge quantum compared to sthg. like rsync over a secured network (ssh, ssl).
Why?
The major problem with distributed social network (which pulse and its family wants to be) is not how to securely share, but it is important what happens afterwards. Somebody asked and somebody pointed to some other discussion related to what if I sync my stuff with untrusted server? Well, that was an important question. And the problem is not only that. Why? Even if John is a good friend of mine, I do not trust his computer! Not especially if it is an old windows machine full with troians and other mallware. Do not trust the apple computer of Elena or linux guru Steve. Steve is an intelligent guru, but he never encrypts his harddisk. He lost his laptop. All my private photos suddenly got into the hands of somebody I did not want.
Well, for me the number one problem of such a distributed network is not how you sync the files, but how you store and how you un-store.
What do I mean by un-store? Well, one of the “advantage” of facebook for avarage user is that once you get pissed of about smbdy you unfriend him/her. Nowdays friends, especially in sense of social-network (fb) are not forever. What happens if you unfrend somebody on facebook? he/her will not be able to see your data… Well… probably the day will come when more and more people will start to use applications that will save everything of everybody, so this will not work on facebook either.
How could this be implemented with a distributed social network? Almost impossible nowdays (without some extra fancy futuristic hardware). But what can be still done? Share, but share as less as possible? What do I mean? Well, instead of a photo, or a text, just share a small thumbnail, or the beginning of the text. If your pair “clicks” on it, it downloads the full. And it downloads encrypted. What about the key? Well, ideally the key should not be stored on the same device, or not for long term. Ideally a “key” watch should stay attached to your arm. The protocol should be a bit obfuscated in that the key should be downloaded once the user clicks on the stuff. Once the user watched the content, delete the key. Once you are unfriended, the stuff would not be accessed on the remote, as the key cannot be downloaded… If the user uses a “hacked” version then the key can be cached, fine enough, but we hope that most people would use the unhacked one… Keys used with different friends or groups should change often.
About the phone: why would we need a new phone? Why would I be locked? Personally I went through the “openmoko trauma”. Spent 300 euros, and lot of time to find a distro that had minimum applications and worked at decent speed. Since then stuff evolved a lot. Have no problems with google apps as long they access services on my phone I agree. If I will have a distributed network on top of the kernel, do not care which other applications run or even would use the service of the “new” distributed social network.
Again, do not think I am negative about syncthing/pulse. Syncthing seem to be hyper-ok for what it wants to be… Just that building a distributed social network, syncthing is just like the “salt” in the food you are cooking, other major ingredients seem to be missing…
BTW: saw that pulse guys (that is how I landed here) intend to write a swift compiler. I am working on a compiler myself… efforts on this topic could be shared…