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/