Decentralizing Web Ideas

created Apr 6, 2017 - updated Oct 18, 2018


Scuttlebutt is slang for gossip, particularly among sailors. It is also the name of a peer-to-peer system ideal for social graphs, identity and messaging. Scuttlebutt was created by Dominic Tarr, a Node.js developer with more than 600 modules published on npm, who lives on a self-steering sailboat in New Zealand.

Dev diary: building an SSB app for Android

October 2018

Whoa. This is way more complicated than web browsers, HTML forms, and CGI or some other server-side programming setup.

GNU Social




mastodon is:

A GNU Social-compatible microblogging server

An alternative implementation of the GNU social project. Based on ActivityStreams, Webfinger, PubsubHubbub and Salmon.

Focus of the project on a clean REST API and a good user interface. Ruby on Rails is used for the back-end, while React.js and Redux are used for the dynamic front-end.

Fully interoperable with GNU social and any OStatus platform Whatever implements Atom feeds, ActivityStreams, Salmon, PubSubHubbub and Webfinger is part of the network


  • Ruby
  • Node.js
  • PostgreSQL
  • Redis
  • Nginx

How exactly is it decentralized? There are different ways in which something can be decentralized; in this case, Mastodon is the "federated" kind. Think e-mail, not BitTorrent.

There are different servers (instances), users have an account on one of them, but can interact and follow each other regardless of where their account is.

Technically, how does the federation work? We are using the OStatus suite of protocols:

  1. Webfinger for user-on-domain lookup
  2. Atom feeds with ActivityStreams, Portable Contacts, Threads extensions for the actual content
  3. PubSubHubbub for subscribing to Atom feeds
  4. Salmon for delivering certain items from the Atom feeds to interested parties such as the mentioned user, author of the status being replied to, person being followed, etc


Dec 2017