This Blog Is Federated
On Tuesday, December 26 of 2017, the day after Christmas, I made the first commit of what was to be an ActivityPub implementation in Go. The past month I had been working on wrapping my head around the yet-to-be-finished protocol, and was working towards getting the first edition of go-fed out. I wanted this tiny blog to be able to simply receive comments from other ActivityPub-based software out there.
I am happy to say that today, 507 days later, I’ve finally gotten this blog federated. About 500 of those 507 days were spent building and improving the library while only a week or so of work spent on this blog. Many of the problems I solved along the way were of the general sort. Warning: tech terms the rest of this paragraph! I built a tool to code-generate native Go types from JSON-LD defined ontologies. This required novel JSON-LD context processing algorithms that the existing specifications do not outline. The code-generation tool is future proof for future RDF ontologies and new ActivityStreams extensions. These types are used by the ActivityPub portion of the library. It uses dependency-injection principles so clients to customize behavior for their application. It provides default behaviors for varying degrees: a new application can use all of the out-of-the-box behavior (such as this blog), while a maturing application can begin to replace pieces of go-fed with its specific requirements.
Now, compared to other software out there such as Write.as, Pleroma, PixelFed, and Funkwhale, this blog is bare bones and feature-less. But, users that use those social media platforms can actually find this blog, follow it, receive notifications when I publish a new blog post, and reply in their own app! Once they reply, those comments federate over here and show up on these blog posts, below! Of course, the internet is a scary place, so I had to build some rudimentary ban tools into this blog in order to easily manage the troublemakers out there.
The go-fed library needs to be finalized for version 1’s release. Many bugs and issues were uncovered while getting this blog to federate. Major thanks to Ben Lubar for helping me uncover and document them along the way. Also many thanks to my wife for the nights she lets me hack away. The ActivityPub dev community has been a majority-positive experience, and I thank the other devs who’ve lent me their ear the past year and a half.
Finally, I still have quite a few ideas floating around. Some of it is related to ActivityPub software and some of it is related to the Fediverse community as a whole. I am perpetually frustrated with how few hours in the day there are for everything in life, so time will tell which get prioritized.
Created: May 17, 2019 16:10:59 EDT
Last Updated: May 17, 2019 16:11:44 EDT
By: Cory Slep