In late 2016, the fediverse was reeling under the onslaught of the first two major waves of people leaving Titter for our shores. So in April 2017, in an attempt to put the fediverse into a bit of a historical context for these newbies, I published a blog piece. Aiming for a breezy, vaguely shitposty tone, that would make it entertaining to read, as well as somewhat informative.
I don’t know whether to be pleased or embarrassed that this blog piece continues to get linked on the fediverse every now and then, and in blog posts about it. Despite the fact that the only way to do that is via archived copies. Because the service that hosted my blog vanished from the web in 2020, not with a bang, but with a whimper.
Anyway, since this piece is seen to have some value as a milestone in the road of fediverse history, and I’m sick of spending half an hour digging around to find an archive.org link every time I want to refer to it, I decided to post a copy here. Hope that’s OK.
Please note that a lot of the sites I linked to in 2017 are also ex-parrots. I’ll fix them with archive links as I have time (unless someone with admin privileges feels like doing it).
Please note also that I knew very little about Mike MacGirvin’s branch of the fediverse family tree at the time (eg that Zot and Hubzilla were all his work), nor the various projects using the Diaspora or IndieWeb protocols, nor anything at all about Matrix really. So their valuable contributions are grossly under-stated, in a way that feels quite disrespectful in hindsight. Sorry folks! On the positive side, one thing I did get right was to anticipate (and perhaps facilitate) some crossover between the fediverse and ValueFlows/ CTA folks, some of whom are now working on Bonfire and other ActivityPub apps AFAIK.
I recently started preliminary work on the follow-up piece that I mention in the 2018 update. But it will take a while to make sure I do justice to all the various contributions that fed into the federated social web we know and love. In the meantime, enjoy this blast from the past.
EDIT 2024-09-20: For those interested in fediverse history, I recently posted some musings on ActivityPub, the origins of the standard, the challenges of implementing the spec in its current form, and what all this might mean for the future of federated web standards.
———
A Brief History of the GNU Social Fediverse and ‘The Federation
Back in the glass age, a guy called Evan wrote some free code in PHP to run a vaguely Twitter-ish site called Identi.ca. The software was called Laconica, and then it was called StatusNet. It was able to federate with other vaguely Twitter-ish sites running the same software using the OpenMicroBlogging standard (a mash-up of existing protocols including OAuth, OAuth Discovery, YADIS, and XMPP), which was replaced by the OStatus standard (a bouquet of existing protocols including Atom, Activity Streams, PubSubHubbub, Salmon, and the delightfully named Webfinger), both of which Evan was also pretty involved in developing. A bunch of other sites/ softwares had a go at supporting OStatus (there’s a list on its Wikipedia page), hoping that one day they could all get along.
A few years later, glass was being replaced by aluminium. Evan got bored with trying to fix a bunch of baked in architectural limitations in StatusNet (or maybe PHP itself, I’m guessing, I don’t know his reasons) and started working on a new piece of vaguely Google+ish software called pump.io, written in Javascript. Evan announced that Identi.ca would be switching from StatusNet to pump.io, which it did in 2013. Pump.io federates using a new pump.io protocol (which still uses Activity Streams, but with JSON and a “REST inbox API“, whatever that means).
This is good news for potential interoperability, since a bunch of other sites and softwares are already using Activity Streams (including any that support OStatus), and Activity Streams is being standardized under a license from the Open Web Foundation by the Social Web Working Group (SocialWG) of the World Wide Web Consortium (W3C). As it happens, Evan was also involved in starting the W3C SocialWG (which took over the standards work of the OpenSocial Foundation in 2014, but let’s not get ahead of ourselves…).
Meanwhile, Mikael Nordfeldth was hacking away on a fork of StatusNet called Free Social (or “Free & Social”), which debuted in late 2012 on on the FreeSocial.org website he was running for the Piratpartiet. According to OpenHub, Nordfeldth set out with a plan “to make the codebase smaller, leaner, neater and more modular”. Also in the aluminium age, as GNU Social founder Matt Lee tells it in his interview with the FSF LCL (Free Software Foundation Licensing and Compliance Lab):
“GNU social was created as a companion to my earlier project, GNU FM, which we created to build the social music platform, Libre.fm. After only a few short months, Libre.fm had over 20,000 users and I realized I didn’t want to be another social media silo like MySpace or Facebook, so I came up with this vague idea called GNU social. A few prototypes were built, and eventually we started making GNU social as a series of plugins for Evan Prodromou’s StatusNet project, with some help from Ian Denhardt, Craig Andrews and Steven DuBois.”
You could think of all this as Fediverse 0.1, the gestation that was happening as it slumbered in the world wide womb, waiting to be born.
“Later”, continues Matt, “StatusNet, GNU social and Free Social… would merge into a single project called GNU social.”
After this was announced in 2013, lots of people who had still been running StatusNet sites, and getting concerned about the lack of active development as Evan worked in pump.io, started migrating to the first release of GNU Social, and other folks started setting up new GNU Social servers. Some of them continued to or started to federate using OStatus. Users who had been missing StatusNet since Identi.ca switched to pump.io (including yours truly) started finding and joining GNU Social servers. The Fediverse 1.0 is born.
This part of the history happened a few years ago, so I’m pretty sure I’ve got it right, but I welcome corrections in the comments. For the next part, I’m kind of winging it on the basis of what appears to have happened more recently, so apologies for any misunderstandings and again, please feel free to set me straight.
The growing GNU Social Fediverse then sets out to try and make friends with some of the other kids in the federated social networking neighbourhood; particularly established players like Pump.io, Diaspora*, Friendica (formerly Mistpark), and Hubzilla (formerly Red Matrix), but also up and coming projects like Tent, the Matrix, and the skinny jeans wearing rebels of the IndieWeb. Some want to use their own brand spanking new protocol(s) (pump.io, Tent, and the Matrix, what is the Matrix? Still working that out). Some don’t really want to federate at all because it threatens to breaks their privacy model (Hubzilla), and others had already threatened in 2012 to take their ball and go home, to work on their reinvented decentralized authentication (the Zot protocol, which ended up being used as the federation protocol for Hubzilla). To be honest, I’m still left wondering why the hell they didn’t all just use XMPP but I’m not a developer so…
Despite all that, GNU Social does manage to make some friends, and there is talk of a grand Federation (this link lists active Diaspora*, Friendica, and Hubzilla nodes). Some success appears to be made in allowing users to communicate between some of these projects, mostly using some variant on the OStatus cluster of protocols, which seem to be the lowest common denominator. The Diaspora protocol uses similar bunch of protocols to OStatus, but it uses them differently, including adding support for private massages. Sean Tilley of the Diaspora* crew sums up the resulting blends:
“Friendica, Diaspora, Hubzilla all talk to each other through Diaspora. Friendica can also speak OStatus. Hubzilla and Diaspora currently cannot.”
Meanwhile, in a parallel universe, another cluster of free code developers are also working on communication and collaboration software. Some of them create the Valueflows project to work towards a standard for them all to interoperate, and a larger federation of projects groups form the Collaborative Technology Alliance to do the same. Working on standards is complex work, but not nearly as hard as getting everyone to agree on what standard to use.
Back in the Fediverse, a few developers get bored with trying to hack around a bunch of baked in architectural limitations in GNU Social (or maybe PHP itself, I’m guessing, I don’t know their reasons), and develop a bunch of add-ons or replacements for the GNU Social server software (formerly StatusNet, remember?), in a few different languages. Qvitter, started by Hannes in 2013, is a Javascript layer used on the Quitter sites to give a more Twitter-ish user experience. In 2016, Maiyannah Bishop forks GNU Social to start the PostActiv project, which is not GNU Social but still part of the Fediverse, and Eugen Rochko starts working on Mastodon in Ruby on Rails, which is not even a GNU Social fork but is still part of the Fediverse and uses the same GNU AGPL software license. With a cluster of different server-side packages available for those who want to set up their own node in the OStatus-powered federated network that started with StatusNet/ GNU Social, this is the point where I feel I can say the Fediverse has turned 2.0.
So to sum up, there’s been a lot of different things under a lot of different names. Some of the things still exist and some of them don’t. Some of the things are organisations, some of them are networks or sub-networks. Some of them are websites, some of them are software, standards, or protocols. Some of the things are a smaller part of bigger things, or a collection of smaller things, and some of the things can connect to some of the other things, but not all the other things. The Fediverse / Federation aims to eventually unite all the things that still exist into one glorious meta-thing.
Confused yet? I know I am. The branding is a spaghetti junction, as it too often the case with free code projects and their organic and messy (r)evolution. But thanks heaps to all the hard working people whose dedication, much of it unpaid, has brought us all the things. We’ll all figure it out as we go along. Long live the Federation (in the utopian Star Trek sense of the word, rather than the dystopian Blake’s 7 sense).
Update (2018-02-07): a lot has happened in the year and a half since I wrote this post, and I’ve learned a lot more about all the various projects I mentioned in it. Since a lot of people have linked to it, I feel obliged to do a major 2.0 update to make sure the piece is as accurate as I can make it at this time. Watch this space. In the meantime, TalkPlus.org has a good article on Mike Macgirvin’s branch of the federation family; Friendica/ DFRN, Hubzilla/ Zot, Zap, and Osada (now sadly defunct). Still looking for a good history of the Diaspora project, the other major branch of the family.
Update (2017-05-03): Here’s another ‘Brief History’ of the Fediverse that fills in some gaps in mine, and comes from a different political angle.
Update (2017-04-17): Thanks to Federation pioneer and Friendica/ Hubzilla developer Mike Macgirvin for sharing his thoughts in his unique and inimitable way, I’m planning a separate ‘brief history’ post covering his branch of the family. Thanks also to Sean Tilley of Diaspora for answering politely each time I asked the same questions clarifying the status of federation efforts between Diaspora and the other apps (my tribal name is Memory Like Goldfish ;).
Update (2017-04–04): Thanks to fellow GNU Social user Claes Wallin for offering some corrections and clarifications. I’ve tried to correct this piece to reflect these.