What if we worked together

What if we worked together

Oh look it's the end of another week, and that means it's time for another tirade thoughtful newsletter about building ActivityPub in Ghost. If you're new around here (there have been thousands of signups since the first announcement) you may want to catch up on previous editions in the archive for context.

💡
Remember! If you only signed up to hear when this feature is available, or you're wondering what ActivityPub even is: This probably is not the newsletter for you. This is a behind-the-scenes, engineering-heavy, somewhat-deranged build log by the team who are working on it.

If that's not your cup of tea, you can adjust your email preferences here.

Before we get into this week's edition, I want to first take the time to express my gratitude to Murray on Xitter for today bringing this delightful red wine BA wild ale to our immediate attention. It seems important to Murray that people know about this, so we felt it was important to pass along to you. You're welcome.

In future we would prefer that you send us pictures and recommendations for Pugs doing Activities, because that's more our jam — but sure, red wine ale is cool too. Alright let's get on with it.

What's new with ActivityPub?

Last week we touched on some of the architectural choices made in Ghost that have heavily influenced the way ActivityPub is taking shape. We also launched a community suggestion leaderboard, which was apparently a very successful motivational tool judging by the number of comments.

I want to highlight one comment from Setto, who said:

I'd like to speculate a little bit on how [ActivityPub] will be leveraged by Ghost ... Ghost website would perhaps function as groups, where every author is a user ... Basically a group in this context means that when an author (user) part of a group, publishes to that group, the group re-posts (boosts, retxeet, whatever...) this article to everyone subscribed to the group ... Now, remember this is all speculation from a little dyne like me.

We're flattered by the implication that we have a master plan of which you are reading the tea leaves, but I want to be absolutely clear we're using your speculation more as a product roadmap — so it's kind of a self-fulfilling prophecy. We hadn't gotten as far as thinking about groups yet, so thanks for the suggestion!

That being said, several of you did make comments along the same lines we've been thinking when it comes to architecture more generally. If we're going to build ActivityPub outside of Ghost anyway... could it be a service that's re-usable by other platforms? Some of you (Matt Cannon) even went so far as to research and suggest existing services out there which may be usable.

In fact, if you go back to the comments section of our 2nd ever newsletter, the very first person to make this suggestion was Hong Minhee:

Ghost is written in JavaScript, so how about using Fedify, an ActivityPub server framework? (Disclaimer: I'm the creator of Fedify.) Implementing ActivityPub from scratch isn't impossible, but it's going to take a lot of time and effort. Working from the appropriate foundation will save you a lot of time and effort.

All of you have made some really compelling points. Yes, it would be amazing if multiple platforms could collaborate on a shared ActivityPub service that isn't specific to Ghost. Yes, it probably would make a lot of sense not to start completely from scratch.

So, in the past week we've been exploring these options in some detail and kicking the tires on a few to get a sense of how they work. The overall take so far: This feels very promising, and we think it's probably the right direction. By the time you receive the next newsletter from us, we're hoping to have a firm decision and some details to share.

While all that's going on, we're still continuing to build out the front-end reader client that will live inside Ghost Admin, regardless of how the back-end service works:

We're starting to flesh out some of the interactions around seeing who you're following, who's following you, and appending actions to those lists like follow, unfollow, follow-back, etc.

Along the way, we're also learning all sorts of fun quirks about the ActivitPub spec that make it challenging and occasionally frustrating to work with. But that's a story for another day.

While the last couple of weeks have felt a little slow as we slogged through the "figuring it out" phase, our confidence has increased quite a lot from where we were on day 0. As some of these large pieces come together, we're hoping that progress will start to speed up.

Now let's take a look at that leaderboard!


Answering your questions:

It's that part of the week where we practice favoritism with your comments.

Quick question - is the user the Ghost website? or is the user considered to be the Ghost website member/subscriber?

So far we're thinking about staff users (and potentially members) being ActivityPub "Actors" — or, as we refer to them internally, "Pugs" — while the website itself might function more like a "Group" in the way that Setto was alluding to in his comment last week. So you might have something like index@publication.com be the overall site, which features posts by both jamie@publication.com and ali@publication.com.

Are you currently looking for outside contributors for the AP initiative? Would love to help in any way I can, and would be a great way to contribute to the NodeJS ecosystem.

Yes! The response to this newsletter has been amazing, so as we firm up the overall direction of the project - we're going to try and open up our development process, too. Collaborating with everyone on ideas is cool, but collaborating on code would be even cooler.

Please keep up with the discovery work and thanks for keeping us on the loop in such a fun way. That said, I didn't get the "Ghost AI newsletter author" reference. What do you mean by that? Was this newsletter written by AI?

As an AI, I don't write or send out newsletters. However, the phrase "Ghost AI newsletter author" could potentially refer to a situation where an AI (like me) is used to write and send out a newsletter.

black pug puppy