Salta al contenuto principale


Surfacing discussions


If someone replies to a reply, and nobody is around to see it. Did it really happen?

Welcome back to the Ghost Lab, where pull requests multiply faster than gremlins in the rain, and the phrase “just one more edge case, I swear” has been officially banned by HR (hi Beccy).

Last week, we swapped war stories about shipping ActivityPub; this week we’re diving into the true sport of the social web: keeping conversations readable once they start breeding like decentralized rabbits. Buckle up, because reply chains are a subject you're about to wish you didn't know so much about.

What's new with ActivityPub?


Discussions on the social web are surprisingly complex things, and recently we spent some time wrapping our paws around some of the finer details. The joy of this newsletter is that whenever we suffer, you get to share in that experience.

On the face of it, a discussion is just a chain of replies. You make a post, and someone else responds. You get a notification about the response, and that response shows up somewhere in the app, below the post you made.

All pretty straightforward. We know about your post, because it was made in Ghost, and we know about the replies, because they got sent directly into Ghost and they reference the post you made as what they're in response to.

So, a simple discussion is easy to render:


  • 📍 Your original post
    • Reply to OP
    • Reply to OP



Discussions are rarely one-layer deep, though. When two people go back and forth with each other, each one of those responses is a new reply to a previous post.

Something you may have noticed in Ghost for the past few months, though, is that it took a lot of clicking to follow a discussion between two people. We'd only fetch the immediate replies to the post you're viewing, so for a long reply chain, you'd only see 1 level of replies below the current post. To see replies to the next level, you'd constantly need to click deeper into the discussion


  • 📍 Your original post post you're viewing
    • Reply to OP you can see this
      • Reply to reply you can't see this, or below
        • Reply to reply-guy
          • Reply to that reply
            • Ok this is becoming a debate
              • No, you
                • Actually









As well as multiple layers of depth to a discussion, there might be multiple threads of discussion happening under your post. And this is where it starts to get interesting. You post from Ghost, someone replies to that post on Mastodon, someone else replies to the reply from Mastodon, on Mastodon. Now we're in a place where we (Ghost) aren't necessarily aware of all the replies taking place, because they're happening elsewhere.


  • 📍 Your original post
    • Reply to OP
      • Reply to reply
        • Reply to reply-guy





      • Reply to reply
Reply to OP
  • Reply to reply




It doesn't stop there, though. Your original post might actually, itself, be a reply to a post that came before it. So when you view that post, you probably also want to see what it's in-reply-to, otherwise the context of the discussion is going to be hard to figure out.

If the first post is "That's the craziest thing I've ever heard" and the replies are all "I've heard crazier" – you're likely to have questions about the topic at hand.


  • Parent post
    • 📍 Your original post
      • Reply to OP
        • Reply to reply
          • Reply to reply-guy


        • Reply to reply


      • Reply to OP
        • Reply to reply





And (you can probably see where this is going) that post you're replying to may, itself, be a reply to some other post. The discussion tree has infinite levels in both directions. Your post and its replies may be a tiny branch on the end of a far larger tree of conversation.


  • Great-grandparent post
    • Grandparent post
      • Parent post
        • Someone else's original post
          • Reply to OP
            • Reply to reply




      • Parent post


    • Grandparent post
      • Parent post
        • 📍 Your original post
          • Reply to OP
            • Reply to reply
              • Reply to reply-guy
              • Reply to reply-guy


            • Reply to reply
              • Reply to reply guy



          • Reply to OP






All this to say, we've done a bunch of work in Ghost to crawl our way up and down the branches of a discussion, pull the most relevant posts around yours, and make them visible inline on the post you're viewing.

Now, rather than just seeing the immediate replies to a single post, you'll start to see larger chains of replies that have been surfaced to make it easier for you to follow a discussion.

Replies-to-replies are connected with a line:

And when the discussion has even more levels available to explore, we show a link to allow you to expand that particular thread:

The same is true when you click on a notification, where we'll load the post you clicked on and the 'parents' of that post, so you can scroll up to see the context of what came before.

It's not perfect, of course, but it's now much easier to get a feel for the conversation(s) happening in and around the posts you're viewing.

That’s the tour for this week’s code safari. Hit publish, poke the new threads, and let us know where the discussion tree still gets tangled.

Coming up next week (and you may have already seen some hints of this):

Better notifications!


Ramping up for expansion


Welcome back, intrepid subscribers! We’ve survived another week of midnight deploys, questionable snack choices, and philosophical debates about unit tests. Pull up a chair while we unpack our latest neuroses.

Last week, we got @mentions working in Ghost. Finally, you can click a name, stalk someone's profile, and then ping them relentlessly if you so choose. One small tap for man, one giant heap of database load for mankind.

What's new with ActivityPub?


About a year ago, we kicked off this whole adventure with a duct-taped prototype and a tweet that basically said “hold my beer, we’re federating Ghost.”

For those of you who've been here since the very first newsletter – thank you!

We came from pretty humble beginnings...

To what is now a pretty extensive social web integration, today:


0:00
/0:08

Along the way, there have been trials and tribulations (most of them related to databases), an obsession with pugs that frightens normal people, some wonderful collaboration, and relentless optimization for the only KPI we really care about — your comments.

The team working behind the scenes on ActivityPub at Ghost grew from 3 to 8 in 2025, and now we're ramping up our work to launch things officially in Ghost 6.0 in the next month.

We're excited, but nervous. You never get everything done that you hope to, before launching a first version, but launch you must.

This launch, though, feels bigger than most, because ActivityPub is more than a protocol or a fancy feature; it’s a statement that the open web still matters.

Federating Ghost means publishers no longer have to choose between owning their work and reaching an audience. You post once, on your own domain, and it travels everywhere—the network effect without the lock-in.

That's the dream.

While centralized networks are coming apart at the seams as battles rage between the most powerful people on earth who own them, the fediverse represents an alternative path.

It's an answer to the question: What if nobody owned this? The same question that Tim Berners Lee posed to the world, 35 years ago.

Back then, the model was about connecting information – documents – using funny-looking syntax. www followed by dot notation and slashes. Today, it's about connecting individuals – people – using funny-looking syntax. This time, @ symbols.

Will it work? It's not clear yet.

That part is up to all of us.

Networks succeed when people use them. The more participants there are, the greater the incentive for new people to join. And vice versa. It's a flywheel that's incredibly difficult to get started, and nearly impossible to stop once it has momentum.

So, as we prepare to launch 6.0 over the next few weeks, we leave you with just one request for the open social web: Participate!

Use what we've built to follow one another, comment on each other's newsletters, reply to notes, repost things you love, share what you're thinking about or working on, tag people with @mentions.

We have a real opportunity, now, to create the web we want – but the most tempting mistake is to wait for everyone else to join, before getting involved.

Those early adopters you're waiting on, to get things going and make it interesting?

If you're reading this: It's you.


wakest ⁂ reshared this.

in reply to Building ActivityPub

> If someone replies to a reply, and nobody is around to see it. Did it really happen?

I remember a recent discussion of work to make AP threads more complete. Might be there's an FEP being drafted for it?