
Show HN: A new decentralized microblogging platform - daveid
https://github.com/Gargron/mastodon
======
captainmuon
Nice! I was preparing myself for a rant against yet another proprietary
"decentralized" platform, when I read that this is GNU Social compatible :-).
This is great, maybe some more (compatible) competition will do the network
good. The current offerings like GNUsocial are not quite as polished as e.g.
Facebook and Twitter.

One little suggestion, I can't see anything of your network when I visit the
main page. I'm hesitant to sign up for something if I can't see it. Maybe you
could add a list of users of the instance / network, public tweets, etc. Or
even better, publish a link to a (public) profile, so users can get an idea
what it looks like in use.

(If I'd make a federated microblogging / social network site, I would center
it around the profile page. I'd make it at first glance less about networking
and more about presenting yourself. Like the early Facebook, or MySpace. This
way, a user has an incentive to sign up even if no or only few friends are on
the network yet. You'd be able to customize your page a lot, leave contact
data, write (micro) blog posts, have a wall (guestbook) etc... And almost
incidentally you'd be able to use your identity to comment on GNUSocial, use
XMPP, OpenID, ....)

~~~
daveid
Here is my profile:
[https://mastodon.social/users/Gargron](https://mastodon.social/users/Gargron)

I also made a demo video (linked in the README):
[https://www.youtube.com/watch?v=YO1jQ8_rAMU](https://www.youtube.com/watch?v=YO1jQ8_rAMU)

I realize that a public timeline would be a good addition.

~~~
davidcollantes
@daveid, are there instructions on how to get Mastodon running without Docker?
Very nice looking app, thanks!

~~~
midgetjones
It looks like a standard Rails app, so you should just be able to clone the
repo and google the rest.

------
xj9
Why do we keep building centralized "decentralized" services to replace
entrenched centralized providers? What hope of victory is there against the
Twitters and Facebooks of the world? They already own that space! They aren't
going to be disrupted by Yet Another Twitter Clone.

Disruption means doing something that your competitors are effectively
incapable of doing.

~~~
blowski
Their USP, which Facebook and Twitter can never compete with, is self-hosting.
Multiple companies could set up, some with ad-free paid options, others funded
by advertising. And if you don't like those options, you can host it yourself
for you and your family.

I think that's a worthy goal, though I'm not convinced it we'll achieve it
because of the amount of money the vested interests can throw at preventing
it. But it remains a good idea, even if it never becomes mainstream.

~~~
eropple
_> Multiple companies could set up, some with ad-free paid options, others
funded by advertising._

OK. But why _would_ they? What is the raison d'etre for such a company to
exist? What is the competitive advantage here for those companies to actually
_do_ that? How does this not turn into a hilarious race-to-the-bottom that
zeroes out any reason for anybody to do it in the first place?

I am profoundly unconvinced that you're going to ever beat a Twitter or a
Facebook and it's not because of "vested interests preventing it", it's
because the current options meet the needs and desires of the userbase. The
size of the group that cares about self-hosting something like this is within
epsilon of zero percent. Because nobody cares, there is no network effect to
pull other people.

~~~
toomuchtodo
It turns into a utility, like Wikipedia, or OpenStreetMap. Not all that
provides value generates profit, hence the need for a different model.

Mind you, Telegram is funded by one wealthy benefactor, and I'd argue its a
reasonably large service not attempting to compete for profit against other
incumbents.

~~~
eropple
That model still needs _users_ , then. "It's self-hosting" does not provide
any kind of user story for, say, me. I have Twitter. Twitter works. This adds
nothing to the experience and subtracts about a kerjillion people from the
pool.

~~~
toomuchtodo
I agree that self-hosting isn't a story, but an underlying feature. You have
Twitter. Twitter works. For now. Will it when Disney acquires it? Or some
other corporate suitor?

~~~
lazerwalker
Say Twitter gets acquired and subsequently completely fucked up (not that the
latter necessarily follows from the former), and there's now a market void.

What're the odds the "winner" of the ensuing fight is the decentralized FOSS
platform — that has very real tangible benefits, but ones that are hard to
explain to an average user — over the shiny new VC-funded Twitter clone that
can throw hundreds of thousands of dollars at user acquisition?

~~~
toomuchtodo
I have no idea how to fight the never ending torrent of VC money funding clone
after clone after clone.

~~~
zanny
Time. It is only "worth it" for the one VC that wins the winner take all rat
race. There can only be so much stupid money in the world before only the
smart people are left with any.

------
etatoby
When I read these news I'm always reminded of a certain old project.

There once was a decentralized communication platform that promised to replace
email, wikis, forums, article comment services, blogs, microblogs, you name
it.

It was technically very advanced: many people could work on the same document
at the same time and they would see each other's changes in real time, even if
they were working from different federated servers. The history of all changes
was accessible as well, in a very user-friendly way (play button and time
slider.)

The GUI was not as fast as it could be, but it was cross-platform, user-
friendly, and it worked.

I'm talking about Google Wave. It was federated, it was very advanced, and it
failed spectacularly. Keep that in mind as you make further predictions.

~~~
mxuribe
Just my opinion, but I actually would have reported this differently.

Firstly, Wave - the protocol - is still around; its an apache project:
[https://incubator.apache.org/wave/](https://incubator.apache.org/wave/) So
technically and actually anyone could create their own (free or for-pay)
service/instance. There's nothing stopping a couple of kids (or senior
employees disgruntled with their current enterprise employer) from scrapping
together a new project/venture to start a new social network based on Wave,
etc.

The platform didn't fail so much as Google let it die off (at least retired it
from their infrastructure, retired it as a product they supported, etc.). As
another person here has noted, google creates some cool tech. And, in this
case, google either didn't know what to do with this cool tech., or felt they
couldn't make money on it, or felt users couldn't adopt it, etc. Or, who
knows, maybe it was a technology too far ahead of its time for google to
really understand its potential. I myself thought it was a great idea.

------
rayalez
Looks really interesting and exciting.

Feedback:

\- Strange decision to have several vertical feeds - doesn't seem very
convenient. Can there be one stream with several tabs or something like that?

\- It would be cool if there would be reddit-like discovery system, so that
you could browse tags, and then sort the posts in the tag by hot/new/top.

Questions:

\- What are your plans for this platform? Is it just a fun side project? Are
you planning to compete with twitter?

\- Are you planning to monetize?

~~~
daveid
As the other poster pointed out, I was heavily inspired by TweetDeck which
I've been using for 6+ years.

And yes, I agree that's a nice suggestion, user/content discovery is
definitely a big area in which this can be improved.

Edit: I realized I forgot to answer the last two questions.

Plans for the project: I'm a realist so I don't think that it will be able to
compete with Twitter. However I would like this project to become the go-to
option for people who are already inclined to prefer decentralized/self-hosted
solutions, and simply be better than the other software in that space.

No, I don't plan to monetize. Mastodon is open-source, licensed under AGLPv3.
However I do have a Patreon through which interested people could support me
while I work on it.

~~~
rayalez
I wish you luck!

It doesnt have to become mainstream to be extremely valuable. If it could
become a high quality niche community of geeks and hackers, like HN, it could
be very awesome. Maybe it could be to twitter what HN is to reddit?

------
timmorgan
This is great. Good work!

My entire family is currently using Path as a small social network and share a
lot there. I'd love to move us to something we can control and where the data
(esp. photos) aren't locked away in a proprietary system. Does this (or Gnu
Social) support protected accounts, where permission must be given for people
to see and follow accounts?

~~~
mxuribe
That is exactly my same use-case: a private/self-hosted social network only
for my family; and I happen to use Gnu Social. To be clear, Gnu Social is
_NOT_ the only open source platform that accommodates this use-case. Specific
to your question, here's a screenshot of some of the settings for restricting
access on gnu social: [http://imgur.com/a/gXy7y](http://imgur.com/a/gXy7y)

As far as mobile clients, my family and I use AndStatus
[[http://andstatus.org](http://andstatus.org)] which works awesomely with gnu
social, is an extremely lightweight mobile application, gets updated
constantly by the dev. team, and also allows you to post to your twitter
account.

Good luck!

------
daveid
If you don't know anyone you can follow on it yet, you can start with me:
Gargron@mastodon.social

Also if you have any questions feel free to ask!

~~~
ytjohn
One nitpick (I'm sure you've gotten many). If I go to
[https://mastodon.social/users/Gargron](https://mastodon.social/users/Gargron)
there are no follow buttons. If I'm logged in and I add you to follow, then I
can click on your name and get the (un)follow/block buttons, but not from the
main user page.

To compare, when I click on aqeel, I get
[https://social.aqeeliz.com/aqeel](https://social.aqeeliz.com/aqeel) which has
a subscribe button.

------
the_common_man
Some questions:

1\. Is this supposed to be run by me (an individual?) or run for my by
somebody else (some existing community?).

2\. Is there any information on what makes this decentralized? How does it
"discover" other users?

~~~
okket
> Is there any information on what makes this decentralized? How does it
> "discover" other users?

The README says it is a Gnu Social implementation (previously known as
StatusNet). It uses Jabber/XMPP for Message transport, which is decentralised
and federated. See also

[https://en.wikipedia.org/wiki/GNU_social](https://en.wikipedia.org/wiki/GNU_social)

~~~
daveid
Mostly correct but it does not use Jabber/XMPP, it uses a set of procotols
like Webfinger (account resource discovery), Atom/ActivityStreams, Salmon
(remote account notifications) and PubSubHubbub (follower update
notifications)

~~~
okket
Right, sorry. I should have read the Wikipedia article more carefully.

------
qwertyuiop924
Ironically, these decentralized microblogging and social platforms are getting
too diverse. We're all trapped in wall-less walled gardens.

~~~
dublinben
This is exactly why the W3 is developing a standard called ActivityPub, so
that all of these platforms can communicate amongst each other. It shouldn't
matter what platform or node you choose to host your social media profile.
They should all be able to communicate with everyone else (like email!).

[https://www.w3.org/TR/activitypub/](https://www.w3.org/TR/activitypub/)

~~~
qwertyuiop924
Now that is good news. At the moment, we have a xkcd/927 situation on our
hands.

~~~
daveid
ActivityPub is a successor to ActivityStreams/Salmon which Mastodon and GNU
social are currently using. At least with these it's not really a xkcd/927
situation.

~~~
qwertyuiop924
Diaspora? Pump.io? Patchwork (the SSB thing)?

~~~
erikb
Why do you drop other names? Diaspora is a tool, not a standard. If they are
still developing that then they may actually implement to read and share data
in the standard as well.

~~~
qwertyuiop924
However, they haven't done that yet. So they're competing "standards," even if
one isn't standardized.

------
mxuribe
Between playing around on mastodon, and my family's own/private gnu social
instance, and matrix.org, i honestly don't know which to give my
attention...In any case, it is exciting that there are a few efforts underway
that have to do with decentralized communication. Funny how email - and its
decentralized-ness - still lives on. I grant you that other platforms might
get their attention (sometimes short-lived), but decentralized platforms - yes
like email - just don't die...and i think that's great because among other
reasons decentralization fends off death.

Kudos to the Mastodon team!

~~~
erikb
"Private" in the meaning of running your own host, or "private" as in "people
I don't trust can't access it"? The latter would be quite interesting to me.
How to achieve that with gnu social platforms?

~~~
mxuribe
In my case I actually meant both; I do host my own, and I've locked it down as
a private instance only for my family. (I do this partly to play around and
learn, but more so for me to teach my kid how to actually use social media
_but_ in a safe environment, before letting them loose on the
public/uncontrollable silos.)

Here's a screenshot of some of the settings for restricting access on gnu
social: [http://imgur.com/a/gXy7y](http://imgur.com/a/gXy7y)

~~~
erikb
It really looks like they thought about that when developing gnu social as
well and you can just set checkboxes. That's nice. In that regard I'll
probably also set up my own instance. Thanks!

------
mnx
So, a couple nitpicks, hopefully of some use:

[https://mastodon.social/users/mnx/updates/11273](https://mastodon.social/users/mnx/updates/11273)
(no proper breaking of lines)

[https://mastodon.social/users/mnx/updates/11268](https://mastodon.social/users/mnx/updates/11268)
(might want to add overflow:hidden)

When clicking the follow button with no address typed, I get a 404
notification after a couple seconds.

I also got a 422, but I can't reproduce it now.

~~~
daveid
Right, I'll get on fixing the styles for that.

The error messages are a bit close to programmatic at the moment, 404 means
user hasn't been found, 422 (unprocessable entity) means validation error
(like if you submit empty status or over the character limit). So it's all
intended, just the error messages could be humanized a lot.

------
zokier
Random poll: Do HNers make distinction between decentralized and federated
platforms/systems/networks?

~~~
saynsedit
Centralized: Facebook, Twitter

Decentralized: xmpp, email, gnu social

Distributed: bittorrent

~~~
2AF3
Decentralized & Distributed: Twister

------
est
The URL is so Rails-ish RESTful

[https://mastodon.social/users/est/updates/11744](https://mastodon.social/users/est/updates/11744)

Maybe it can be simplified like twitter's URL

[https://mastodon.social/est/11744](https://mastodon.social/est/11744)

~~~
midgetjones
One plus point over the norm is that it's not open to enumeration attacks. At
least on the user endpoint and the link you posted.

------
augustl
Looking forward to the day when we get a decentralized microblogging platform
where clicking iOS/Android app store link and installing the app is all you
need to get started. Until then, or until something like Sandstorm takes hold
as something you can assume your users have access to, I'm on the fence..

~~~
daveid
I'd love to write an app client for it eventually.

~~~
augustl
Cool! I think the moment I can tell my friends to "go here, install this thing
and sign up" something will happen. A lot of people will want to produce
content without a 3rd party controlling it!

------
mark_l_watson
I really enjoy using GNU Social and it is good to see alternative
implementations using the same protocol. An option to just use Postgres, and
not Postgres + Redis might make installing easier for experimenting with
running a node.

~~~
daveid
Mastodon uses redis sorted sets and publish/subscribe for timelines and real-
time message delivery respectively. And for background processing. It's not
easily replaceable, plus it's a super lightweight dependency and a lot of
projects nowadays use redis as well.

------
bikamonki
An alternative that's been out for a while now:
[https://github.com/diaspora/diaspora/](https://github.com/diaspora/diaspora/)

------
hypercluster
I still don't quite understand how these decentralized networks work. So
there's no "global" stream you can take a look at? Only from people you added?
Because from a privacy standpoint I'd think that it would somehow be possible
to get access to all available profiles on all instances and create a big
platform where you gather all data and keep it forever.

~~~
daveid
Yes, you could do that. It would be like crawling the web and the task would
probably require equivalent resources depending on how big the whole known
network is.

------
arisAlexis
There is also [https://www.writedown.co](https://www.writedown.co) (not gnu
compatible)

~~~
Adam24
:) I'm also co founder of aris' product.

------
aq3cn
Is there is a dummy password for guest users? I don't want to create a new
account and just to audit a service.

Don't you think, email requirement should be optional, at least in the stage
of early development.

~~~
chriswarbo
You can use mailinator.com to get a throwaway email account, or use
bugmenot.com to make a throwaway <whatever> account

------
VertexRed
Looks good, would love to see this take off! I've been really curious about
rails lately - were there any major benefits compared to writing this in PHP?

------
pjc50
How is spam and abuse handled in this system?

~~~
skizm
That is left as an exercise for the reader.

~~~
kkarakk
maybe a blockchain of trust with your wallet having more value the more people
rank up your content? then you only allow people with a certain wallet value
to "interact" with your content ie comment/like/get access to a secondary
"paywalled" subsite. initial values are assigned and handed out by core
developers/"influencers" ie the rich

maybe a second threshold value that can only interact with each other(they
won't be visible to people who set their threshold to above the value that
they own) ie the poor can interact with the poor

only the rich can talk to the rich and the poor can only talk to the poor but
the poor are allowed to look at the rich and verify that they themselves are
indeed poor. the poor can collaborate with each other or incentivise the rich
to "pay" them.

trust flows just like centralised social networks because it's easier to do
than play whackamole with low value easily created bots/spammers.any bots who
abuse these systems and rise to positions of visibility are considered high
value bot networks(since they somehow managed to get enough "value" to exist
in the system either by using random meme based content generation or other
abusive but entertaining tactics for eg r/subredditsimulator ). these bots
could then be easily de-valued by users with very high values( the super rich-
the core developers/influencers) if they irritate their audiences too much.

~~~
chriswarbo
I don't see why a blockchain or "currency" would be needed. It adds a large
administrative overhead (the blockchain, a diverse pool of peers, etc.), is
exclusionary as you say, and causes (a weak form of) centralisation. The
benefit of a blockchain is having arbitrary adversarial agents reach a global
consensus (such as who owns what); but that's much stronger than what's
required for blocking spam.

You can make spam expensive by using a proof-of-work system like HashCash (
[https://en.wikipedia.org/wiki/Hashcash](https://en.wikipedia.org/wiki/Hashcash)
), which is the idea that inspired mining. HashCash adds proof-of-work to a
message, which is specific to that message. The receiver verifies the proof
then discards it. There's no datastructure to maintain, no consensus required,
no need to involve anyone other than the sender and receiver, etc.

HashCash didn't catch on for email, since its 'fire and forget' nature
prevented senders and receivers from negotiating a non-zero amount of work.
Such problems can be avoided in this kind of real-time protocol: just add an
extra step to ask the receiver how much work it requires, then do the work,
then send the message.

With such a negotiation layer, there's no need for every message to require
the same amount of work. You could receive the message without hashcash, and
reply with a cost based on how spammy it looks.

Everyone would be free to implement this however they like: give a high cost
to everyone; check senders against public blacklists; give a whitelist of
'friends' a lower cost; reduce the cost if we've previously
'liked'/'followed'/etc. the sender; look up the sender in a pagerank/web-of-
trust/friend-of-a-friend/etc. database; use a spam filter to score the message
content; etc.

------
supercoder
Why would I use this over Twitter ?

~~~
erikb
Not an author or a big fan, but the answer is quite objective so I can give it
as well: (1) If you use a decentralized system you can decide who to give
control over your data. (2) Using a software with open standards doesn't
enforce you to continue using it if you don't like it anymore, since you can
transfer your data elsewhere or delete it. (3) Using a software with open
standards means you can interact with people who decided to use another
software as long as it implements the same standards.

E.g. FB is handled by the FB company. You can only choose to enter that system
or stay away. You can not choose to host your family photos only at another
company and still share them on FB. But in a decentralized system you can use
a choice of hosters or host them yourself and still share them with other
users.

E.g. in most modern contact book and calendar apps you can export your data in
open formats and then import them into another tool. Having more contacts
doesn't mean anymore you need to stay with the tool you created them in.

E.g. your email client, whether it's Gmail, Outlook, or Thunderbird, can talk
to the other email clients and hosters, since email is an open standard. In
fact for most cases you don't really care what email program the other person
uses.

The disadvantage of both decentralized and open-standards is that they usually
require more effort to use. You need to have more skills yourself and take
more responsibility. With Twitter, because they want your data, they will make
it as easy as possible for your to give it to them. But in that case you need
to rely on trusting the Twitter the company with that data for the rest of
your life.

~~~
mxuribe
Well said!!

