
Blueprint of a distributed social network on IPFS, and its problems - diggan
https://beyermatthias.de/blog/2018/02/25/blueprint-of-a-distributed-social-network-on-ipfs---and-its-problems-2/
======
rolleiflex
It seems there's a lot of people working on this area, just looking at this
thread. I did something similar to this in 2013 and I got to around 20k users:
[https://www.theverge.com/2013/11/27/5150758/aether-aims-
to-b...](https://www.theverge.com/2013/11/27/5150758/aether-aims-to-be-a-
reddit-for-the-privacy-conscious)

Two things that need to be solved:

a) The structure of moderation. No moderation does not work. Been there, done
that, it gets very ugly very fast. But what can be done is to make moderation
more visible, and allow people to choose who they want to be moderated by.

b) Scaling. 1-100 users are fun, 100-1000 are exciting, 1000-10000 are a
little nerve racking, and after 15k users, you notice the reality of how nodes
and networks behave has diverged from your 'reasonable' assumptions. Around
20000 or so, I stopped maintaining it. Scaling distributed networks is much
different than scaling regular networks where you can add more hardware and
servers and sharding, it requires new behaviours from each node as the system
grows. The software that works at the level of a million users in a
decentralised system will be much different than the one that works with a
billion users.

Funny enough, I've recently quit my day job and I'm focusing on the second
version of it, so the memories from 2013 are pretty fresh.

~~~
wjnc
Robert Nozicks' "Anarchy, State and Utopia" (1974) describes how a system of
multiple concurring "governments" could work. Quite a stretch from social
networks but first thing that came to my mind when reading your comment.
Moderation is a form of social network government, right? One could subscribe
to a government / moderation scheme and the governments form meta-governments
to decide which content from competing governments are fit for their users.
Moderation in two (or N) levels.

~~~
tscs37
That's somewhat what federation solves. You pick out an instance which
represents a particular way of moderating. You can still listen in on (most)
of the other network.

If you don't like the moderation/government of your instance, you pick
another.

~~~
gregknicholson
I like this model, but there's still a bit of unwelcome friction there, at
least in Mastodon and Matrix: your identity is tied to your home server.

That could be solved by a robust way of confirming that 2 identities are the
same person: so all traffic for user@example.horse is also directed to
user@example.golf and vice-versa.

Coming at the same sort of thing from a distributed approach (I'm thinking of
Scuttlebutt): you could make it possible to subscribe to another person's
followers and blocklist, delegating your moderation to someone else.

I suppose there would soon be well-known and popular options to delegate to,
much like popular ad-blocking lists; but still, each person can choose which
ones to use.

~~~
jsilence
Red Matrix, a descendant of friendica, not to be confused with matrix, solves
this with portable profiles. The account is tied to an instance, but your
profile is liberated:

[https://redmatrix.info/help/accounts_profiles_channels_basic...](https://redmatrix.info/help/accounts_profiles_channels_basics)

~~~
jonnydubowsky
Checked out Red Matrix, and it instantly fulfills the worst tendency of
alternative decentralized social networks. Centralized social media takes on
the moderation in a way that typically leads to the banning of racist and
toxic groups and those groups are often the first to set up shop in the
censorship resistant alternstives. The very first landing page of Redmatrix
takes you to the Aryan Nation Radio community and a bunch of antisemitic and
racist content. This is a major turnoff to anyone pursuing alternatives and
while I support free speech and think even the worst of humanity should have a
home to be terrible with each other, figuring out how to keep this off the
home page is probably a good idea to get these alternatives into the adoption
phase.

~~~
jsilence
Wow, I did not realize this. Thanks for the 'heads up'.

I had a similar experience with ZeroNet where extremist groups swiftly
occupied the ground and toxified the budding discussions.

So in conclusion, are the idiots keeping us from having a decent solution for
a social network?

------
fake-name
If you're thinking about building a distributed social network, you _HAVE_ to
have answers to the question: How do you moderate it? (Or how do the users
moderate what they consume, if you will)

Basically, think of the most annoying person you can imagine, give them
infinite free time, and a uncontrollable urge to do EVERYTHING they can think
of to make your life miserable on said social network (doxxing, abusive
messaging in every way possible, creating dozens or hundreds of accounts,
etc...). If you do not have facilities to deal with this, your network is
garbage.

With the focus on "distributed" and "resilient" and "unblockable", you're
effectively creating the perfect environment for every abusive stalker,
internet creep, and troll.

Lord of the flies is not a functional governance mechanism. Moderation and
control have to be designed into the network _from the outset_.

There's no reason I can think of that some sort of "distributed control" isn't
_possible_ , but you'd better have it planned out _first_. Bolting on tools
for handling abusive users after-the-fact will likely be much harder.

~~~
xorcist
So, in your view, email and the web are examples of garbage networks?

Decentralized networks (such as the web) work differently from centralized
network (such as cable TV and Facebook) and have different strategies for
coping with misuse. You can not moderate a permissionless network. That's
literally part of the meaning.

In a decentralized network, I follow you by subscribing to _your_ data.
Conversations usually follows that data naturally, just like a mailing list is
centralized but email is not.

~~~
espadrine
> _So, in your view, email and the web are examples of garbage networks?_

Mostly so, but it is worth the trouble.

About 90% of emails I receive are spam. So, email is 90% garbage. The 10% left
is the sinews of my life.

Fortunately, the industry found ways to cope, by contributing to mostly
centralized DNSBL services such as spamhaus.

The same goes for the Web: centralized services like Google or (is there
something else? ) filter out the irrelevant, dangerous, and fake (with varying
degrees of success).

Moderation? Inevitable. Distributed moderation? Not so much.

The parent post is right: if you don't make it built-in, it will not be how
you like.

~~~
alexandercrohde
You're speaking way too strongly. Email is a huge success, it's potentially
the most successful network. I've had my email address over a decade and get
less than 1% spam, handled by gmail spam filtering.

You can say that you personally want moderation in your networks, but you have
no basis to make general claims about moderation being necessary.

~~~
ColinWright

      > ... get less than 1% spam,
      > handled by gmail spam filtering.
    

I'm starting to see more and more reports of people having their emails
automatically go to gmail spam folders, unless the emails are coming from
gmail itself. I've seen both sides of this - gmail regularly bins emails I
sent from a non-gmail account, and my gmail accounts regularly bin genuine
emails from non-gmail accounts, but apparently never from gmail accounts.

It's almost like there's a pervasive force, trying to make people use gmail.

I, for one, don't trust gmail at all any more.

------
discussedbefore
One decentralized project is willing to list alternative options, many past
the 'create a prototype' stage:

[https://www.scuttlebutt.nz/faq/misc/related.html](https://www.scuttlebutt.nz/faq/misc/related.html)

ZeroMe – Decentralized Microblogging on ZeroNet
[https://news.ycombinator.com/item?id=15464156](https://news.ycombinator.com/item?id=15464156)

An off-grid social network [Scuttlebutt]
[https://news.ycombinator.com/item?id=14050049](https://news.ycombinator.com/item?id=14050049)

\--

A recent discussion of building on IPFS, where a developer was honest about
drawbacks:

OpenBazaar 2.0, powered by IPFS
[https://news.ycombinator.com/item?id=16702684](https://news.ycombinator.com/item?id=16702684)

 _haven 't solved the decentralized reputation problem and reviews can't
entirely be trusted_

\--

I am interested in this space because first mover advantage is still kind of
up in the air until something works well enough to build a network advantage.

~~~
thisacctforreal
Any thoughts on Mastodon[1][2]?

I think "federated" is the term for its model, moreso than "decentralized"
(?).

[1] [https://joinmastodon.org](https://joinmastodon.org) [2]
[https://instances.social/list/old](https://instances.social/list/old)

~~~
sriku
That's the right word.

(General note)

Federated is a bit different from decentralised. For example, email is
federated, but not decentralised. In a federated network, if "your service
providing server" is down (like gmail.com), then you don't have service,
though others on other parts of the network would continue to have service.
With a decent sized network, there is no "your service providing server" and
other machines can take over when one fails. Decentralisation always goes
along with redundancy whereas federation doesn't require redundancy.

~~~
zrm
You're thinking of _distributed_. Decentralized is broader than that. Really
anything that isn't centralized like Facebook is.

Obviously a lot of this is very squishy and overlaps a lot even within the
same system.

Look at DNS. It's nominally a centrally-rooted hierarchy, but the root is
operated by consensus rather than monarchy, so how do you classify that? Then
each domain can be operated by a separate organization, so essentially
federated but not exactly because it's still a hierarchy. Meanwhile the
recursive resolvers and caches are fully distributed -- use any of them and
the results are (supposed to be) the same.

------
harlanji
In the context of DTube IPFS is simply storage for video files, where the
metadata + interactions are on the SteemIt block chain. It's cool that the
author has generalized the concept onto pure IPFS. It may work better than my
experience, which used IPFS to store very large contiguous mp4 video files
(eg. 15min 720p max).

IPFS is nifty but I'm not convinced of its ability to support an intergalactic
workload quite yet. I've looked at it vs. CDN for a video delivery platform
and have a much more robust system built on primitives DNS -> CDN -> HTTP ->
HLS segmented MP4 + static HTML site w/ SPA chunks in just a few weeks. I
explored similar ideas with using encoded public keys, hashing, and side-
channel crypto key distribution to support some interesting workloads. This is
cool because it's a no-voodoo solution, just HTML and RSS and JS and chunked
video files, and the CDN handles the details invisibly. With IPFS on DTube
I've only been able to author a little data before running into queuing blocks
where I was unable to continue adding content.

I have some videos on my YouTube channel talking about IPFS and giving demos
in the past 1-2mo, 'iSpooge Daily'.

------
olivernyc
I made something similar to what's described in the article:
[https://static.network](https://static.network)
([https://github.com/olivernyc/static](https://github.com/olivernyc/static))

It's an IPFS based social network, running entirely in the browser. Posts are
JSON objects of content and metadata, with links to the previous post and the
author's profile. Currently updates are propagated over a single pubsub
channel, so it only works for real time communication. I plan to replace this
with IPNS once it is implemented in js-ipfs.

Long term, I want to implement a web of trust to facilitate search, discovery
and spam control. Here's some good reading about how this might be done
without central authorities: [https://www.scuttlebutt.nz/stories/using-trust-
in-open-netwo...](https://www.scuttlebutt.nz/stories/using-trust-in-open-
networks.html)

------
jancsika
How do I find Waldo?

On Facebook, LinkedIn, MySpace, Twitter, Google, Github, GnuCentral, etc., I
type in Waldo's name and instantly discover Waldo's profile. On Facebook it
even shows me Waldo's profile before I consider discovering him.

Also, how does the system make it likely that when I search for Waldo I get
Waldo and not his evil twin Odlaw?

Also, how do you incentivize adoption so that the community doesn't end up
rationalizing "Error 404: Waldo not found" as the proud badge of an artisanal
social network?

~~~
RSSify
How do you find people's email addresses?

~~~
alexandercrohde
Exactly. I think there are two types of social network users

1\. People who want to consensually maintain two-way contact with people they
talk to in normal life.

2\. People who want to anonymously get life details of classmates they have a
crush on, ex's, etc

Building a network to support #1 while maintaining true anonymity and privacy
is much more doable. Not being in group #2, I don't worry about it.

~~~
jancsika
Being in group #1 is great.

Denying that there is profound value in digital communication between two
consenting adults who have _never_ met in normal life is a Luddite position.

~~~
alexandercrohde
Nobody is saying that, you're making a straw-man argument.

People are just saying that they have no interest in being part of a network
that tracks their videos, location, actual name, phone number, text messages,
behavior across the whole internet, email address, and builds a psychological
profile on them in exchange to look up college buddies (and therefore have
deleted their accounts).

Many of us want a network that errs to the side of too private, and it's okay
if not everybody is on that network. Many of us would rather have no network
as compared to one that's too public.

------
jeswin
Some of the points made in the "why ipfs" are inaccurate wrt scuttlebutt.
Secure Scuttlebutt is a signed immutable log/database of a person's posts,
replicated with peers. It is also distributed, instead of federated. (Add:)
And because SSB is a database, you could build pretty much any app on top of
it.

The SSB network is very active, take a look -
[https://www.scuttlebutt.nz/](https://www.scuttlebutt.nz/)

------
Alex3917
Why not just pay a few bucks a month for a social network, and get all the
benefits of centralization without the evils of ad-supported corporations?
Most of us here use and trust GitHub, and imho that's what we need more of.

While I'm a huge supporter of blockchain projects and their allies, in the
case of social networks I don't see how this is going to turn out any
differently than FOAF.

~~~
throwaway127831
Because not all of my friends and family are willing to pay a subscription fee
:-/

~~~
evolve2k
Would you pay to be a power user who can invite and manage say a dozen family
& friends?

In this model it might be possible to assist uptake by having a class of power
user who can manage their group over onto an ad free network.

Example: I have a private github account with repos I share with various
friends who are not paying github users but are nonetheless now engaged in the
github platform.

~~~
pjc50
Yes, this is an under-appreciated idea that may be critical to having the
whole thing work. If it's a paid service users should be able to pay for
_other users_ to use it.

~~~
eitland
WhatsApp had this. :-/

------
teleclimber
I'm kind of baffled that this article did not start with a statement of the
problem, and doesn't even consider other technologies. Instead it goes
straight to IPFS as the technological answer without bothering to define the
kind of social network they are trying to build.

A "social network" can mean very different things to different people. Even
among FB users you find a very wide range of primary use cases.

So if you're going to propose a new social network at least start by defining
the desired characteristics of your network, and even more importantly in this
day and age, talk about the kinds of threats you are going to defend against
and those you won't.

Then you can explore possible technologies to see what fits best. And if you
did that you might come across the DAT protocol[0] and find it's better suited
than IPFS.

Characteristics I'd like to see discussed before launching into a solution:

\- Is this meant for users to connect to wide audiences (like Twitter,
Reddit), or is it meant for me to keep up with my known friends/acquaintances
privately?

\- what features are you going for? Groups? Events? Chat? Just basic timeline?

\- What's the visibility model? If a friend replies to your post, does that
mean friends of that friend see your post? [there are hundreds of questions
similar to this one. laying out some general principles before starting on the
solution seems like a good idea]

\- is end-to-end encryption supported? How do you limit the distribution of
private information when many of these decentralized protocols assume that
knowing an unguessable url is enough to get the contents at the url.

Anyways sorry if this comes off as grumpy.

[0] [https://datproject.org/](https://datproject.org/)

------
ianopolous
People might be interested in the social network on IPFS a few friends and I
are working on in our spare time, Peergos [1] [2]. It also happens to be the
first social network on IPFS (We started before IPFS itself existed).

Everything is encrypted, including metadata and we try not to expose your
follow list to the network. It's inherently multi-device, independent of DNS
and even has streaming E2E encrypted videos playable in the browser (streaming
is disabled by default at the moment because it only works in Chrome) and even
hides file metadata like size, name and directory structure. It's still pre-
alpha though.

[1] [https://peergos.github.io/book](https://peergos.github.io/book)

[2] [https://github.com/Peergos/Peergos](https://github.com/Peergos/Peergos)

------
stareatgoats
I believe the main problems of "the social network" (FB) can't be solved in
this way, it focuses almost entirely on the privacy and "freedom from
surveillance" aspect, to the detriment of other vital aspects (like non-
anonymity).

What we seem to need is a solution that does what Facebook does right, which
corresponds to the networking needs of billions of people, combined with a
transparent and ethical content policy approach. Plus: that doesn't leak data
at an individual level (except after a court order), to name some of the
requirements that seem most important.

On the other hand, a non-corruptible utility-type service like this might be
too much to hope for as well ... ?

~~~
orbifold
In principle every problem solved by facebook in a centralised fashion has
already been solved by phone companies in a decentralised fashion. You can buy
one or several numbers, which are quasi anonymous and distribute them to
anyone you care to share them with. Noone can easily find you unless you give
them that number, it easily possible to separate between work and private
numbers and you get a new number if you change your job. Calling by phone is
nearly universal as is access to SMS, it already connects all people across
the globe without any need to sign up to a centralised service. The only
advantage services like WhatsApp and Facebook have is that it is really cheap
to communicate over them, whereas the only way of operating a traditional
phone service is to charge money.

I think what will eventually happen is that the traditional telco providers
will gradually improve their service quality, prices and infrastructure and
eliminate the need for parasitic communication platforms like WhatsApp and
Telegram by introducing standardised and provider agnostic solutions. For
example why not extend the protocol that is used to route phone calls to a
protocol that allows to route arbitrary packet or streaming data transfers.

~~~
stareatgoats
> "Noone can easily find you unless you give them that number"

Yeah well, finding anyone is not a flaw; it's a one of Facebooks _killer
features_ , without which it would not have become the de facto global
registry of single individuals.

> "The only advantage services like WhatsApp and Facebook have that it is
> really cheap"

I believe this is a gross misunderstanding of the utility of social networks
compared to older systems like telephony. But granted, the brave new world
comes with a number of problems as well.

~~~
orbifold
Actually the real name requirement and the fact that anyone could easily find
me is what kept me off Facebook, so I don't consider it a killer feature at
all. If you know my real name it is easy enough to find me with some
additional information on google and get a work email + current office phone
number, I don't feel like sharing more than that with random strangers
anyways.

~~~
stareatgoats
Yes, it's a sentiment you share with many here on HN, I'm sure. But Facebook
doesn't address our needs primarily; it addresses the networking needs of the
average person, which may add up to half the global population or more by the
time they are done.

Who can at any time reach out to another average person on the other side of
the globe, be it acquaintance or stranger, and discuss matters of mutual
interest, without jumping though hoops or even knowing how to google, and
(because of the real name policy) be reasonably safe from harassment.

But hey, to each his or her own.

~~~
alexandercrohde
>> But hey, to each his or her own.

Then build a system that supports both. Let people opt-in to a lookup
directory (phone-book), but make it anonymous by default.

------
tuxxy
This is great!

The privacy problem is especially interesting because I work on a distributed
key management system called NuCypher. We use proxy re-encryption to do this
and have a distributed network of nodes that perform the actual re-encryption
on split keys.

If anyone is reading this article and wants to work on this problem, we have a
split-key threshold PRE scheme called Umbral that we used to decentralize the
key management part. The link is below:

[https://github.com/nucypher/pyUmbral](https://github.com/nucypher/pyUmbral)

------
Asdfbla
While I like the distributed approach technically, it solves none of the
social problems that social networks bring.

Filter bubbles, propaganda and competition for users' attention with clickbait
and other cheap stories might even become worse, since a centralized platform
could at least tweak their recommendations algorithms to break the bubbles
(which Facebook doesn't seem to do, but it could).

Basically, I'm pessimistic because a distributed network only solves the
(comparatively) easy technical challenge without addressing the problems of
social networks.

------
heynk
Awesome post! I think a ton of people are coalescing on this idea - I’ve seen
multiple people post thoughts around this very recently. I’m about to launch a
distributed social network, built on ethereum and ipfs. Ethereum helps solve
some of these distributed discovery issues. It includes an open source,
centralized ‘gateway server’, which makes it a little easier for onboarding,
plus it has built in support for ActivityPub out of the box, which makes it
compatible with mastodon. I’m posting it here on Monday morning! Sorry for the
self plug. I love your ideas around deleting content - that’s a tough problem
that I’m only really supporting on the client side right now.

------
sneak
There is a distributed (blockchain based) social network today: steemit.com.
Several of the frontends (like busy.org) use IPFS for content distribution, as
the Steem blockchain only holds text and json.

------
pjkundert
The problem is, moderation is actually a poor solution to the real problem -
equal visibility of ignorant/vile and insightful comments.

[https://pol.is/home](https://pol.is/home) presents a more viable option. But
people self-grouping (eg. vile people only seeing other vile people) could
also create echo-chambers.

For example, as a libertarian I’d love to see comments by anyone with “skin in
the game” - regardless of political bent. How could we achieve that?

------
amelius
Interesting that we're now posting blueprints instead of code. I think that's
a good development!

Now if only we could have the requirements posted and discussed first :)

------
hateful
I've been keeping an eye on peer-to-peer/federated social networks for a
while. And though I left Facebook a couple of months ago, none of these can
replace it until they do one simple thing: Allow one user to post to another
users "feed". This is what Google+ was missing when it came out. This is what
Twitter is missing. This is the reason why Facebook is so popular, IMO.

I see something on the Internets which I think my wife would like, but I also
want her/our friends to see it and I post it on her wall/timeline. I don't
want to post it on my feed, that won't help, and I don't want to private
message it to her, that also won't help.

Any of these social networks add this feature - then I will champion them to
the end of the Internet.

And perhaps add support for events. But that can be an adjacent but compatible
application.

~~~
da02
It sounds like a "profile"/feed also acts like a message board? (I never had a
fb account, so pardon the stupid question.)

------
amelius
Why aren't governments issuing grants to universities to research the
development of a new social network?

~~~
zzzcpan
Isn't social network a purely commercial idea born to manipulate people, get
them obsessed over it and exploit them? I mean it's not an actual problem to
solve that can be worth any research.

~~~
jsilence
no sure whether you're cynical

------
syllable_studio
I just started dabbling with IPFS. It has inspired me to revisit a project
prototype that I abandoned for a year.

A year ago, I started making this prototype:
[https://www.dearnation.org/](https://www.dearnation.org/) "Dear Nation is a
living archive of the letters we write to our nation's leaders." I've been
torn about pursuing this concept. I think I'm particularly scared of how messy
it is to moderate and foster democracy online. I'm hoping that by working with
tools like IPFS it will inspire me to give more free time to ideas like this.

