Mapping out ActivityPub support

Mapping out ActivityPub support

An overview of our roadmap for the next few months, as well as a preview of some alternative design options.

Happy Sunday friends, followers and fellow pug lovers. Last week I mentioned that we were deep in the planning stage for the next phase of integrating ActivityPub into Ghost. This week, we've got a couple of quick updates to share with you, mapping out where we're headed.

What's new with ActivityPub?

A challenge we've come across in our early development work on ActivityPub has been figuring out how to interpret the spec. All specs have some amount of room for interpretation, but ActivityPub has more than most. The standard itself encompasses the major concepts and building blocks of how the network is intended to work, but when you get into the weeds of implementation it quickly becomes clear that decisions must be made for which there is no guidance.

What to do?

When a standard is first released, the answer is to make it up as you go along. There's no prior art to go off, so you interpret as best you can and deal with issues as they come up. Later on in the life of a standard, though, the framework for these types of decisions changes.

The litmus test goes from "Are you following the standard?" —to— "Are you following the standard in a way that is compatible with existing implementations?"

You see, we could in theory build full ActivityPub support into Ghost. Following the standard perfectly (by our interpretation). Only to get to the end of our work to discover that our implementation still doesn't work properly with others.

In the end, the most important thing for our ActivityPub implementation is not how well it works between Ghost sites. If we wanted to build a Ghost-only network, we could have done that far more easily, as many other publishing platforms have. No, the most important thing for an ActivityPub implementation is that it actually works with other ActivityPub services. In reality, not just in theory.

For Ghost to be a successful member of the ActivityPub ecosystem, it needs to work well with Mastodon, PixelFed, Buttondown, Flipboard, Lemmy, WriteFreely, Misskey, Threads, and many more.

Now that we've got many of the foundations in place, we're going to shape our roadmap from here around building compatibility for Ghost with 3rd party services first — before we even think about how Ghost integrates with other Ghost sites. Shaping our product and our code architecture around testing against real, existing products is going to ensure that we're on the right track.

That's a 3-paragraph summary of great deal of thoughtful planning and discussion, but the big takeaway here is that we now have a clear idea of where we're going — and a clear starting point.

First up: We're going to focus on getting Ghost to work (well!) with Mastodon.

Why Mastodon? Mainly because Mastodon has the most active users of any ActivityPub platform, so it will give us the largest footprint to test against — and it will also immediately provide the largest existing audience for Ghost publishers to tap into. So there's real value.

Over the next few months you can expect updates to focus on some Mastodon-centric examples of how we're evolving Ghost's ActivityPub functionality, piece by piece. We've already got very basic Ghost sites showing up as profiles in Mastodon, and next we're going to focus on getting a full 2-way experience working.

Alongside this, we're also going to be experimenting with different views of Fediverse content in Ghost. Our initial designs have focused on an inbox-style layout like you might find in an email client or RSS reader, but we're also experimenting with feed-style layouts. These are naturally a little more agnostic in terms of the content formats they can easily support.

0:00
/0:27

Click to play

Keep in mind, these are just prototypes. To start with we'll probably offer a couple of different view options for you (and us!) to test out, and see what feels best. We might end up consolidating on just one, or we might keep the options in place if there are big fans of each. Similar to how Reddit works.

All this and more is what we'll start digging into in the coming weeks.

In other news, did you see that MKBHD turned on Fediverse sharing for his Threads account, this past week?

In the industry, this is what we call "foreshadowing".

Alright.

In the wise words of Gerald: I'm done.