Distributed social network based on the top of git https://ajdiaz.me/doc/2016/11011-distributed-social-network-built-on-the-top-of-git.txt Version: 2016-11-01 One of the biggest problem in the social networks (SN) today is that these network are has not any resiliance against atacks against freedom or control. If a goverment wants to remove the free spech, they can just block the access to the central servers of the SN (usually they block only DNS which is impressively incompetent, but they can improve this control mechanisms in the future). To avoid this kind of control we need a distributed SN, which multiple nodes in different physical locations. As far as I see, a truly free SN must have the following features: - Distributed - Anonymous - Verificable (Signed posts) - Spam aware Distributed means in this context that there are no central node which have information about the entire network, so if any node of the network downs, the network is not affected. Also should be easy to replace affected nodes. Anonymous means that there are no relationship between the account and the owner of the account, i.e the user id has no email related or real name, just an URL, for example. Verificable means that any post of any user could be cryptographically signed, ensured that the post is created by the real user. Also any change in the account could be signed too. Spam aware means that though is not viable to filter all spam automatically, we have a mechanisms to ban from the user timeline those users which spam others and also those posts which are considered spam for a majority. Proposal -------- Modeling this kind of network is easiest that sound. We have a good tool to distribute and sign changes, called git¹. Git is a mature software used in development around the world, solid and well studied. We can build a network using git submodules. Creating a git repository containing a CONTENT file, which we explained after, and a folder FOLLOW, where submodules should be initializated. To follow a new account just add this account as submodule. To publish new content just add a line in CONTENT file. These are the basic principles. But here are more. Since git support GPG signing for each change, we can guarantee the authenticity of the content. Also, each follower should contain a relatively fresh copy of the original repository so, in case that anyone remove the originial one, a bunch of copies will be accessible from followers. Furthermore, as you can only see post from people you follow and vice-versa (other people only see your posts if they follow you), you will be building a strong network against spam. Also we can add the TAG post, which allows you to tag third party posts. So I can tag as spam a post for other person and people who follows both (means who trust both) can realize that I considered that post as spam and act in consequence (filtering it, for example). Plus tagging, we can add SCORE mechanism where a person can give a point or substract a point for a third party post in the same way. At the end we are building a clean, secure and distributed timeline. ¹ https://git-scm.com/