Sign in

Building ActivityPub

@index.activitypub.ghost.org.ap.brid.gy
409 followers 0 following 52 posts

Ghost is federating over ActivityPub to become part of the world’s largest publishing network [bridged from activitypub.ghost.org on the fediverse by fed.brid.gy ]

PostsRepliesMedia
Reposted by Building ActivityPub
John O'Nolan @index.john.onolan.org.ap.brid.gy · 19/08/2026
Couple people noticed that Ghost was just displaying sensitive content in feeds without any warning. Fixed now, and added a global setting! (This is just a screenshot of the new UI)
066
Reposted by Building ActivityPub
John O'Nolan @index.john.onolan.org.ap.brid.gy · 20/07/2026
Ghost now supports custom domains for social web handles! You might've noticed my username previously was @john@john.onolan.org - but now it's just @john@onolan.org (drop the 'john' - it's cleaner, etc) Find it under Preferences → Social web handle Our […] [Original post on john.onolan.org]
6713
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 11/12/2025
Topics are now on the Explore page. Browse by Technology, Business, News, Culture, and more to find publishers writing about what you care about.
085
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 03/12/2025
GIF support is here. Upload them like any other image.
0112
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 04/08/2025
Everyone loves a SWEET right 🍬 Analytics **suite — it's been a long day ok
151
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 04/08/2025
It's finally here! Ghost 6.0 is the biggest update we've ever made — and it includes federated publishing for everyone, with ActivityPub ❤️ We also shipped a brand new native analytics sweet, and passed a pretty cool milestone. Independent publishers […] [Original post on activitypub.ghost.org]
104076
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 03/08/2025
🕶️
0115
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 03/08/2025
SAME
020
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 03/08/2025
Big week next week. BIG.
065
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 22/07/2025
Good news: Update activities work now - so when you update a post in Ghost, it'll be updated in the Fediverse, too. Not long to go now 🤞
1103
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 14/07/2025
just 1 more bug I swear
062
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 01/07/2025
Hi fediverse 👋
3142
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 01/07/2025
activitypub.ghost.org
The longformers
Ghost<>WordPress<>Flipboard<>Fediverse
177
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 30/06/2025
The Lever is a nonpartisan, reader-supported investigative news outlet that holds accountable the people and corporations manipulating the levers of power. Founded in 2020 by David Sirota, an award-winning journalist and Oscar-nominated writer who served as the presidential campaign […]
activitypub.ghost.org
Original post on activitypub.ghost.org
325
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 26/06/2025
You can now follow Casey Newton, and his essential newsletter at the intersection of technology and culture, right here in the fediverse, on @feed@platformer.news
0156
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 19/06/2025
It's official, @tangle_news@readtangle.com is now available in the fediverse! Tangle is one of the most successful Ghost publications in the world with over 300,000 subscribers. It's a non-partisan politics newsletter that gives you a 360-degree view on the news. No spin. No clickbait. Opinions […]
activitypub.ghost.org
Original post on activitypub.ghost.org
135
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 16/06/2025
btw if you enjoy our unhinged newsletters and you're a senior engineer with 4 paws and a love of JavaScript, we're hiring! 🌍 Fully remote since 2013 📅 4 day work week 💸 Competitive salary 🧑‍💻 Equipment paid for careers.ghost.org
careers.ghost.org
Ghost
Ghost is a proud non-profit organisation building open source technology for fiercely independent, professional publishers.
068
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 16/06/2025
activitypub.ghost.org
Surfacing discussions
If someone replies to a reply, and nobody is around to see it. Did it really happen?
195
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 06/06/2025
activitypub.ghost.org
Ramping up for expansion
Ghost 6.0 is coming soon
3168
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 29/05/2025
Slightly delayed on this week's newsletter, sorry about that! But it's a good one. You can now send, receive, and navigate @mentions in Ghost
074
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 29/05/2025
activitypub.ghost.org
Metabolizing mentions
We got those pesky little @ symbols doing the things they're supposed to
172
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 19/05/2025
activitypub.ghost.org
Moderation preferences
Hello again! We're back with a quick incremental update this week as we continue on our quest for fediverse feature-completeness. Let's get into it. Last week, we introduced domain-based blocking to complement user blocking, and we improved how ActivityPub notifications are displayed to make it easier for you to spot conversations when people respond to your posts. ## What's new with ActivityPub? Following the last couple of weeks of work around blocking controls, we just rolled out a new moderation screen within ActivityPub preferences. Now you can track, edit, and update lists of blocked users and domains in one place. Another quick improvement: If you unfollow someone, we now automatically purge their past posts from all your feeds. This is expected/usual behavior across most social apps, but it's not default behavior in ActivityPub. Now it works the way you're used to inside Ghost. ## Magic Pages ActivityPub beta In addition to our ActivityPub open beta available on Ghost(Pro), there's now an independent community social web beta running on Magic Pages. Jannis, always ahead of the curve, figured out how to get everything up and running even before we'd finished writing our self-hosting documentation! It's very cool seeing the service running for the first time in multiple places. ## Next up: Mentions An obvious thing that's been missing from our social web beta is @mentions. Next week, we're hoping to change that.
150
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 12/05/2025
activitypub.ghost.org
Blocking domains
If you thought slashing tariffs by 115% to ease global tensions around an impending recession was good news, just wait till you hear what we've got in store for you this week when it comes to ActivityPub. Last week, we shipped the ability to block individual users with ActivityPub, so you can limit interactions from people you would rather not engage with. We also touched on the idea that thoughtful moderation can't be achieved with a single feature, but rather is something that requires a collection of tools. ## What's new with ActivityPub? Building on that collection, this week we shipped support for blocking _domains_ with ActivityPub. Domain blocking is a powerful way to limit entire servers in the fediverse, rather than just a single user. Now, if you get spam or abuse from `@bob@spam.com` , `@sally@spam.com`, and `@bot@spam.com`, you don't have to go and block each user manually. Instead, you can block the entire `@spam.com` domain to limit interactions from all users on that server. 0:00 /0:11 1× Once a domain is blocked, you'll no longer see posts or notifications from any of those users, and they won't be able to interact with your profile. In the upcoming week, we'll also add new setting screens to allow you to easily look up all your blocked users and domains and make changes to it if needed. ## Notifications improvements A small but significant design improvement also went out last week, making it much easier to spot when someone sends you a reply using ActivityPub. While follows, likes, and reposts are useful signals that your content is getting engagement, we wanted to highlight even more clearly when you get a reply or comment on something you've posted – so you never miss out on a conversation. If you visit the explore section, you'll also see that this week (for the first time since this newsletter started) we are no longer the most popular user of ActivityPub on Ghost! 404Media have overtaken us and moved into the number 1 slot as the largest website sending out all their newsletters with ActivityPub, and they've been getting some great conversations going in the replies on their posts. If you haven't already followed, they're a great example to take a look at. By the way, we're tweaking and updating the list of sites featured in the Explore section each week. Our sorting is based on a combination of popularity and activity. People using ActivityPub the most are the most likely to get featured! Finally, we know there are still some issues with custom usernames and Bluesky sharing. We haven't gotten to the bottom of it just yet, but we're working on it.
153
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 08/05/2025
Notifications screen in Ghost just got a lil refresh, now it's easier to pick out replies among all the activity 🎨
033
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 05/05/2025
activitypub.ghost.org
Blocking users
Welcome back, intergalactic explorers. Pull up a chair and join us on a Monday morning social web detour. Your todo list can wait. You've got the entire week still ahead of you! Last week, we introduced brand new preferences for ActivityPub, the ability to edit your social web profile, and dedicated sharing settings for Threads and Bluesky. Each week, Ghost publications in the fediverse become a little more unique. It's lovely to see! ## What's new with ActivityPub? This week, we shipped our first set of moderation controls: The ability to block users from interacting with you, if you don't want them to. If you've spent any amount of time in the Fediverse over the past 6 months, there's a good chance you've come across _Nicole_ in your mentions. But you can call her the Fediverse Chick. Nicole (not her real name) is a not-so-convincing spam bot with hundreds (thousands?) of profiles across different Mastodon servers, and uses the @mention feature to promote her warez. The same warez. Every time. The good news: Now you can send her out the airlock. When a user is blocked, they can see your public posts, but they can no longer interact with you. Any requests they make to follow, like, reply, repost, mention, or interact with your profile are automatically rejected. Being able to block users is important because healthy communities grow on the principle of consent. Every participant should be able to decide who can reach them, who can’t, and when the conversation is over. In an open, federated environment like ActivityPub—where posts can flow in from thousands of independent servers—bad-actors, drive-by harassment or spam aren’t hypothetical edge-cases; they’re statistical certainties. Robust user-level moderation tools turn that reality from a deal-breaker into a manageable nuisance. They allow you to publish publicly without surrendering your personal boundaries, so you can curate a meaningful experience. That being said, the astute pugs among you will have noticed a shortcoming in this argument. _Nicole_ is so famously persistent because the spam doesn't just _come_ from a single user. You can block her, but invariably she'll pop up again a few weeks later with a new username on a new server. In reality, it doesn't take just one feature to facilitate thoughtful moderation; it requires a collection of tools that can be used together in concert. User blocking is our first step down this road, but there's much more yet to come. Our long-term goal is simple: Each Ghost publication should be able to define its own social atmosphere. That means putting the dials and levers of moderation directly in the hands of publishers, whether that’s blocking a single nuisance account, muting an entire server, or setting up automated filters. Your publication, your rules, your community.
141
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 05/05/2025
Good morning social web! Newsletter is going out shortly. Need some inspiration for an unhinged intro this week. Any ideas?
010
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 28/04/2025
Sent newsletter. Realised 15 seconds later that there's an image missing from the newsletter. The empirical laws of thermodynamics indicate that these events occurred in precise accordance with ancient prophecies of our forefathers.
061
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 28/04/2025
activitypub.ghost.org
Images, profiles, and preferences
They say you are the sum of the 5 newsletters you spend the most time with, and, since you're reading this one again – it's probably time to start getting worried. Last week, we shipped the glorious ability for you to change your ActivityPub handle, so you're no longer stuck with `@index`. Hundreds of you are now rocking brand new social web identifiers, and looking good doing it. ## What's new with ActivityPub? The big news this week is that you can now upload images to notes, comments, and replies on the social web. Now, when you want to share a quick photo, receipts for your argument, or a dank meme: You can. ### Editing your profile As well as being able to change your social web username, you can now also edit the rest of your social web profile. By default, we set up your profile with the title, description, and icon of your Ghost website. Now you can customize them for the social web, and add an optional cover image. ### Sharing to Threads & Bluesky As discussed last week, Threads and Bluesky require additional steps to display content. Rather than having you figure out what those steps are and then perform them manually, we've simplified the process by turning it into a button you can click. You can find these new buttons on the new **Preferences** screen and, once enabled, a shortcut link to view your profile on those services. 0:00 /0:07 1× That said, this is kind of like a beta of a beta. Betaception, if you will. If you enable Threads/Bluesky sharing and _then_ change your social web handle afterwards, Threads/Bluesky aren't particularly good at handling that right now. Sometimes things break. We've reported these issues to their respective teams, and hopefully they'll be resolved soon enough. Nice. Coming up next, we'll deal with the Fediverse Chick. IYKYK.
071
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 25/04/2025
TFW u added image uploads to notes
070
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 21/04/2025
activitypub.ghost.org
Custom usernames
We've been shipping hard in the last week, and we've got more ActivityPub updates to share for those of you who are trying out the beta! Last week, we recapped the top feedback we've received so far around what's working well about ActivityPub; and what isn't. This week, we're addressing the request that has been sitting firmly in the number one spot. ## What's new with ActivityPub? Up until now, all users of ActivityPub in Ghost had a simple, fixed username of `@index@domain.com`. And, if your domain included `www` then the username would be `@index@www.domain.com`. Now, the `www` prefix has been automatically removed from all usernames, and you can customize the `@index` part to anything you like! This a first step to give you more control how people see and interact with your profile in the Fediverse, and you can expect more settings like this to be added as we go. ### What about _multiple_ usernames? One of the other common questions we've had lately is whether Ghost will allow multiple staff users within a website to have separate usernames. The answer to that is: Yes, that's that plan. But we're not there yet. Eventually, we're hoping to make it so that you can have a publication-level profile like `@index@404media.co` that contains all posts, from anyone on the site — as well as staff user profiles like `@jason@404media.co` and `@sam@404media.co` that represent posts and interactions from those individual authors. This part, though, is still a way off. Making it possible to support multiple users within a single Ghost install is a significant piece of work, and there are many other things we're hoping to get working first. Like, for instance, support for @mentions and being able to add images to replies! (Foreshadowing)
2118
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 14/04/2025
activitypub.ghost.org
Recapping your feedback
We're back once again for the renegade master, D4 damager, power to the people. And if Fatboy Slim doesn't float your boat, we'll just have to stick to ActivityPub updates instead. Last week, we shared bugs fixed, Threads compatibility improved, and a terrible tale about how we managed to gain several thousand ActivityPub followers and then lost almost all of them. This week, we've got more fixes to report, and we're going to go over the top feedback we've received from the public beta so far. A quick reminder, in case you missed it: Anyone on Ghost(Pro) can now enable the ActivityPub beta under **Settings → Labs**. More details: here.**** ## What's new with ActivityPub? We continue to hunt down bugs and assassinate them with the conviction, cloaking, and clicking noises of a predator in pursuit of aliens. In the past week, we knocked off around 30 of them. Many were things you reported; a few were nefarious little bastards we tracked down ourselves. We're also still making continuous performance improvements each week. Since the beta began, you should have noticed Ghost profile pages and notifications, particularly, come up more quickly when navigating to them. While the more minor issues typically get fixed right away, after a month of the public beta being out in the wild - it feels like a good time to do a quick recap of the top 3 pieces of feedback we've been hearing from you, as well as our thoughts on each. So, in order of feedback we're hearing the most, here's what's been coming up: ### You want to change your username By far, the top request is that people want to change their username from `@index@www.site.com` to something else. Including, and especially, without the `www`. We agree, and we're working on it this week. Hopefully, we'll have some more news to share in the next newsletter! ### Confusion about posts not showing up on Threads / Bluesky Probably the next most common thing we've heard is that many of you are confused about why your posts aren't showing up on Threads / Bluesky. And for good reason. It is, in fact, confusing. **To make your Ghost site show up on Threads:** You have to first interact (as in: like, reply or follow) something _on_ Threads. Eg: Inside Ghost, search for `@ghost@threads.net` and press _Follow_. Now, your site will also show up on Threads. **To make your Ghost site show up Bluesky:** You have to first search-for and follow `@bsky.brid.gy@bsky.brid.gy` inside Ghost. Now, your site will also show up on Bluesky, but with a different (weird) username. We're going to replace the entire above process with two buttons: "Enable Threads" and "Enable Bluesky" - which you can just... click. ### You want a more comprehensive search function Many people have requested a more comprehensive search function, and are confused about the lack of username autocomplete, or why - when they search for keywords like "news" or "pugs" - nothing comes up. This problem exists across almost every ActivityPub product out there. The problem with the search function, as it exists today, is that it's _not_ actually a search function. It's an address bar (like your web browser) where you can type in an address and then go to that address. Browsers can't autocomplete against every web address in the world because they have no idea what every website in the world is. If you type "news" or "pugs" into a browser address bar, that goes to an external _search engine -_ like Google - but the Fediverse, for now, does not yet have a search engine. There are several projects out there working on this problem, but it's one that's probably going to take a bit of time to solve. In the short term, though, we're going to make some design updates to help make this a little clearer — at the very least. ### What else? Outside of the top 3, we've heard your feedback about adding more publishers to the **Explore** section, making the app faster, and adding support for @mentions and image uploads to Notes. We're tracking all these things, and the team is iterating quickly based on all the messages we receive in the "Beta feedback" thread located in the bottom-right corner of your screen: Got more feedback for us? Things not mentioned here? Hit that button and let us know!
110
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 07/04/2025
activitypub.ghost.org
You think you're following us, but you might not be
It's a new week and, once again, time for a fresh round of updates from your ever-frantic bunch of Fediverse explorers. Last week we explored some Threads compatibility updates, how to find and follow people across the Fediverse, and the progress of the social web beta launch. This week, we've got more fixes and updates to share, as well as a painful and embarrassing story that we wish had never happened. Oh, what's that? Delicious scroll-bait? Yes. Yes, it is. ## What's new with ActivityPub? Speed and bugfixes, mainly. We closed another 44 issues in the past week as we resolved problems that we noticed, and you reported. We also announced the social web beta on the main Ghost changelog, causing a second wave of publishers to turn on Fediverse sharing for the first time. Fediverse Observer is now tracking 500+ Ghost servers in the wild, but the real number is over double that! More publishers in the beta means more interesting accounts available to follow, and one of the most common pieces of feedback over the past few weeks has been that you're looking for more accounts to follow. Good news: We've refreshed the list of accounts on the **Explore** page and there are now hundreds of Ghost publishers just 1-click away for you to discover. We'll continue to refresh, update and refine explore over time, so keep checking back. It's a bit of a chicken/egg situation. We can only do interesting things with Explore when there are enough interesting publishers to populate it. So, the more publishers start using the social web beta, the more updates we'll make. ## Threads compatibility Following on from last week, and thanks to the team at Threads, we've made more major steps forward in sharing content between Ghost and Threads! Following and receiving notes (short-form content) now works in both directions: Notes from Threads show up in Ghost, and Notes from Ghost show up on Threads. 💡 ****Note:**** You have to interact with Threads in some way to enable this connection. Once you follow, like, or reply to something on Threads from Ghost, then Threads will index the Ghost profile. They do this so that anyone who doesn't __want__ to have their profile show up on Threads, doesn't have to. https://www.threads.net/fediverse_profile/index@activitypub.ghost.org There's still a long way to go, but this is already a huge jump forward compared to just a couple of weeks ago! ## Fixing the most painful bug Here's a fun (_read: not fun_) story for you, of how we fixed the most embarrassing bug. Every now and then, over the course of developing our ActivityPub service, we've noticed that our follower count seemed... off. In particular, sometimes it would just drop out of nowhere, but then eventually it would always go back up again. At first, we assumed that it was a bug in our code for counting followers. Later we thought it might be an issue with all the database drama we were working through. Then, a couple of months ago, we noticed that our own Mastodon profiles were repeatedly unfollowing this newsletter - without us clicking "unfollow". After a lot of digging, we eventually discovered an issue with a niche synchronization service in the depths of our codebase that was accidentally triggering Mastodon instances to unfollow Ghost, en-masse. In October 2024 we had ~**6,000** followers here. By March of 2025 we were down to just **800**. Worst of all, because of the nature of the bug itself, there's no way to recover them. They're just... gone. The only good news is that this bug only existed for Ghost instances with a large number of followers, which was literally just 1 instance: _Ourselves._ We found and resolved the issue eventually, but there are a lot of people out there right now who think they're following us and have subscribed to receive updates but, in fact, no longer are. Ouch. So, if we can ask you a favor this week: Please share and repost this newsletter so that we may hopefully reach and regain some of our lost Fediverse companions. We miss them.
31127
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 07/04/2025
Sup Threads
130
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 31/03/2025
activitypub.ghost.org
Gone surfing
It's the start of a new week and time for a fresh round of updates from your favorite ~~neighborhood~~ intergalactic pugs. Here, hold my miniature kong. Last week we covered the opening gambit of our social web beta, along with our new onboarding guide. This week, we're diving headfirst into some of the changes and improvements that have been made based on your feedback, and how we're going to address your _most_ requested feature. ## What's new with ActivityPub? This week is a veritable grab bag of news, mostly centered around bugfixes and improvements, of which there have been many. Since the launch of the beta, our little team has been carefully watching all the feedback coming in, investigating reports of things that aren't working, and responding as quickly as possible. In the past seven days, we shipped 47 different fixes and improvements, addressing a combination of things you noticed and things we noticed while we were fixing the things you noticed. Many of the fixes were small, like how sometimes you couldn't see the "following" list when viewing a profile. Others were more substantial, like a permissions bug that meant the ActivityPub screens weren't visible to administrator users. In the meantime, the number of users in the beta is still rapidly climbing! Thanks to some work from the Threads team, we also made significant progress in interoperability. You can now follow Threads accounts from Ghost, and their posts will appear in your feeds. There's still a long way to go, though: Profile pictures don't work, and posts from Ghost don't yet show up on Threads. These are things that still need to be resolved by the Threads team. ## How to find people to follow In our last newsletter we encouraged everyone to reply using ActivityPub to help Ghost users discover each other – and you did! There were over 50 replies, and last week's replies became a fantastic way to find and follow Ghost publishers. If you're ever reading a post on the social web inside Ghost and you see someone interesting in the replies, you can click on their username or profile picture to reach their profile, and follow them. 0:00 /0:17 1× This is the backbone of organic discoverability: following the rabbit hole of other people responding and engaging with content you're interested in, which often leads to unexpected finds. Back in the olden days, we would call this "surfing." [_cries in millennial_] We're also using your replies to find more people and publications to add to the **Explore** section inside Ghost – you can expect to see some updates there this week. ## What's coming next Outside of bugfixes and general improvements, there are two main things on our pug radar screens right now. The first is announcing the social web beta more widely, which we plan to do this week. Initially, we only announced the beta to subscribers of this newsletter to give us a little time to monitor how it was all going. Now that we're reasonably confident no servers will melt, we'll promote the beta on all of Ghost's official channels. The second is username customization. We know `@index@www.site.com` isn't the prettiest, and what you really want is `@name@site.com`. We're working on it! The easy part is allowing the username to be changed. The hard part is making sure you don't lose all your followers when you do. Hopefully, we'll have some good news to share on this front in the next couple of weeks.
174
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 27/03/2025
Hey you know that bug where you couldn't see the list of who someone was following on their profile page? 🐛 That's gone! Following lists are now even easier to access than a federal group chat
022
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 26/03/2025
Good news: We've fixed that pesky bug where Ghost sites were unable to follow @bsky.brid.gy@bsky.brid.gy You should now be able to search, find and follow that account - to bridge your site to Bluesky
1121
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 23/03/2025
Schroedinger's newsletter: Anything you write simultaneously does and does-not contain any typos, until the moment you send it; at which point it does.
074
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 23/03/2025
activitypub.ghost.org
The social web lift-off
We're still catching our breath after the past few days, but our team of misfits is in high spirits. Last week, we shipped a public beta for ActivityPub on Ghost(Pro) that anyone can now test out for themselves just by enabling the beta flag under **Settings → Labs**. **** After 8 months of work, much of it remarkably challenging, it felt really good to achieve the milestone we've been building towards. This week we're going to do a little recap of the launch, and talk about what's next. ## What's new with ActivityPub? For the past couple of months, we've been slowly rolling out ActivityPub in private beta to a small handful of early adopters who suffered through a mostly-broken experience and provided us with lots of valuable data. Last week, we opened things up for anyone using Ghost(Pro) to try, and the number of sites using ActivityPub in the wild shot up like a rocket. Excitingly, all those new users got to experience an updated onboarding flow that the team iterated heavily on following all your kind feedback on the first version we shared in this newsletter a few weeks back. We shifted the focus, bringing an explanation of increased distribution and reach to the beginning, with a more precise overview of the reader (and why you might want to follow others) toward the end. We also covered this in more detail in our social web beta onboarding guide. You may have also noticed that outside of this newsletter, we're now using the phrase "social web" rather than talking about ActivityPub. This is an intentional effort, as we shift from developer preview → alpha → beta → general availability, to also shift the language we use to be less technical, and more friendly. Ultimately, our measure of whether we've done a good job will be when people can use and understand the social web in Ghost without needing to understand the technology and protocols behind it. Like how people who use email don't need to know what SMTP is. * * * One of the other fun things that shipped with the beta last week was that we included a feedback widget which invites people to reply to a Note directly inside Ghost to tell us how their experience is going. So we're using ActivityPub replies to an ActivityPub note to collect feedback about ActivityPub functionality using ActivityPub. Here, hold my turtles. 0:00 /0:08 1× What's more, as you can see from the video, it's working! We've had lots of great bug reports and requests, and the whole team is now actively working on issues coming up from your responses. So, keep sending em. There are already far more requests than we can possibly deal with all at once, though, so we're prioritizing issues that come up more frequently and/or cause the most significant problems. For the next week or two, you can expect these newsletter updates to be heavy on bugfixes 🫠 In the meantime, if you're already using the social web beta — we'll leave you with a request: **Reply to this article in your Ghost inbox, using your social web handle**! We'll use social web replies to this week's newsletter to **find people to feature in the Explore section** - so you can find and follow other Ghost sites, and perhaps discover some great new people and publications to follow and interact with.
355
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 17/03/2025
activitypub.ghost.org
The social web beta is here
Today we're opening a public beta for our social web integration in Ghost. For the first time, any site on Ghost(Pro) can now try out ActivityPub. For those of you who have been subscribed to this newsletter for the past year or so, thanks for your patience! It hasn't been easy to get this far, but we're excited to hear what you think as you become one of our very first explorers to launch into the Fediverse. To help you get started, we've put together a detailed guide explaining how this new feature works, and what you can expect from using it in its current state. Take a quick read through everything here, as an introduction: Social web (beta)💡Currently in public beta on Ghost(Pro) This feature is in active development, and is not yet complete. We’re welcoming early testers to give it a try and share their feedback, as we work on finalizing this experience for inclusion in Ghost 6.0. Since 2013, Ghost has made itGhost Help CenterGhost Once you're ready to take ActivityPub for a test drive yourself, open Ghost Admin and head over to **Settings → Labs** and enable the beta. We're looking forward to chatting with you!
1811
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 16/03/2025
Big things coming tomorrow 👀
042
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 09/03/2025
activitypub.ghost.org
Actually, I take that back
Happy Sunday! While you're enjoying a well-earned weekend, you might as well kick back and enjoy some more delightful tales of decentralized decadence from your favorite neighborhood pugs. Last week, we delivered _substantial_ performance improvements for ActivityPub in Ghost thanks to our long but necessary campaign to architect a solid database for all our Fediverse work. This week, we shipped a new feature! Dreams do come true. ## What's new with ActivityPub? Up until now it has been possible to publish new content into the Fediverse with Ghost, but.. um... it was sort of permanent. If you made a typo or just changed your mind about something, there was no way to delete. This week, we fixed that! You can now delete posts via ActivityPub. On the face of it, deleting a post sounds like a pretty unremarkable feature. If you can create a post, it follows that it should be straightforward to delete it – but distributed systems make things a little more interesting than centralized ones. In a regular application when you create something (most of the time) you're just adding a row to a database. When you delete it, you delete that row from the database. There's really not much to talk about. 0:00 /0:13 1× In a decentralized network, though, the question is: Which database? When you publish a post via ActivityPub it doesn't just get stored in 1 database, it gets sent out to every follower you have, and the server of every single one of your followers stores that post in _their_ database, too. If you want to delete a post, it has to be deleted in all those different places, too — and that doesn't just happen automatically. This is a relatively novel concept which hasn't been a significant feature of past decentralized protocols. If you send an email to 10,000 people, you can delete it from your email app's sent messages folder, but you can't delete it from anyone else's inbox. It's just... _out there_. In ActivityPub, though, it is possible. When you publish a post, you send out a `create` activity that instructs the servers of all the people who follow you to create a new post. Then, if you change your mind, you can also send out a `delete` activity which instructs all those same servers to delete a particular post. That's _outbound_ delete activity. You also need to be able to handle an _inbound_ delete activity, when someone else on another server sends a `delete` that they'd like you to process, to remove something you previously received from them. As of this week, Ghost can now handle both inbound and outbound deletes, so that they work properly across the whole Fediverse. 0:00 /0:45 1× Once you wrap your head around the core idea that everything in ActivityPub is an _activity_ which you send and receive, you begin to see how it's quite an elegant system for achieving a diverse set of functionality distributed across different applications. It's a different way of thinking about building software. It makes things a little more complex than they might be in an isolated system, but it's quite remarkable when you consider the scale of a functional decentralized network comprised of thousands of different pieces of software and millions of users, 99% of whom have never met, spoken, coordinated or interacted with one another. Just thinking about it makes my paws tingle. Anyway, that's all for this week. Next week, if all goes well, we'll have a larger update about the **public beta**.
022
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 09/03/2025
Drafting up this week's newsletter, we've been busy little pugs.
040
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 02/03/2025
activitypub.ghost.org
Warp factor 5, Mr. Sulu
It's said that there are only 2 hard problems in computer science: Cache busting, naming things, and off-by-one errors. But if we can add a 5th, database architecture should probably be on the list. Last week, we shared the final UI structure for the ActivityPub reading client inside Ghost Admin, which has come a _very_ long way since our early prototypes. We also shared an invitation from the Flipboard team, for anyone who's interested, to attend the Fediverse House meetup at SXSW next weekend. ## What's new with ActivityPub? The best kind of performance improvement is the one that surprises you. The kind where you flip a switch, look at the numbers, and go, _"_ Oh.." — followed by a long moment of disbelief, intertwined with cautious optimism. That finally happened this week. We've been working on a major update to the ActivityPub database for _a while_ now, as anyone who has been subscribed to our updates for more than a few weeks will already be well aware. As with all database-related work, it has been a deep, unavoidable architectural rework. But the payoff, in performance? See for yourself, in a before-vs-after where the "after" can't come soon enough. 0:00 /0:41 1× Having finally shipped our database upgrade for the main ActivityPub timelines in Ghost, the performance boost is even better than we'd hoped for: A **100x speed improvement**. In our logs, that looks like our average request time dropping from 5+ seconds, to ~50ms: This work has been the main blocker to opening ActivityPub in Ghost up for a public beta with many more users, so this is a _big_ milestone for our little team! There are still a few places where we're using the old database architecture that remain slow. We're not out of the woods just yet. Within the next couple of weeks, though, the beta **will** be open to everyone on Ghost(Pro) to try out. For those of you following along and waiting patiently, your patience is about to pay off! ### What about self-hosting? Several people have asked about using ActivityPub if you're hosting Ghost elsewhere. Some quick notes about that: Importantly, Ghost's ActivityPub service is already out in the wild, open source, and released under the MIT license. We build in public, and all our work is up on GitHub for anyone to download, fork, run or deploy if they want to. GitHub - TryGhost/ActivityPub: A full-featured ActivityPub server for networked publishing with GhostA full-featured ActivityPub server for networked publishing with Ghost - TryGhost/ActivityPubGitHubTryGhost What's missing right now, mainly, is documentation. You could already self-host ActivityPub if you really wanted to, but there's a lot you'd need to figure out to get it running properly. So the question is less "when will it be possible" and more "when will it be easy"? At the moment we're moving quickly and making many breaking changes each week which aren't backwards compatible (like switching to a new DB) – so the app isn't stable. Even if we did document everything, if you self-hosted then it would just break constantly — so it doesn't make much sense for us to try to document and promote self-hosting, because it won't be a good experience for anyone. Right now we're prioritising developing the app and building features, deployed in a single location, so we can make progress. Once the app is stable, then we'll start documenting (and optimizing) the process of deploying it and hosting it elsewhere. We're hoping to get to that work some time this summer, and we'll share details of that here, as we go. Our first priority is just getting ActivityPub _working and stable_ with a base feature set.
011
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 23/02/2025
activitypub.ghost.org
Loading-spinner.gif
Hello again! It's us, your friendly neighborhood ActivityPugs — with a short-form update for you this week about what we've been up to. Firstly, thanks so much for all your comments and thoughtful feedback about ActivityPub onboarding in response to last week's newsletter. There were lots of great ideas in there that we'll be discussing and incorporating into the next revisions as we start putting things together. ## What's new with ActivityPub? The last few weeks have been challenging, and we were hoping to be closer to launching the public beta by this point, but we've been running into some engineering issues that are just taking a lot longer to get past than we hoped. So, this update is a little lighter than usual on details. One bit of good news is that our reading client in Ghost has reached its final form, and is broadly representative of what you can expect to see in Ghost 6.0 later this year. It even has dark mode now 🌚 0:00 /0:43 1× The main challenges remaining, now, are all on the back-end — making this functionality performant, stable and feature-complete. Hopefully we'll have some more progress to share soon on that front. While you wait, here's some extra Fediverse news from our good friends over at Flipboard: ### ActivityPub at SXSW '25 Flipboard + Surf.Social are hosting the first-ever **Fediverse House** in Austin, Texas, on **March 9 - 10** , 2025, and are looking to invite Ghost community members into the space. Come listen to panels, network, grab some refreshments, and dream big about an open-source future. And if you’re interested in getting involved on the panels about creators or communities, please email mia@flipboard.com with a bit about yourself. Otherwise, learn more and find RSVP here: SXSW ’25 - About FlipboardFlipboard and Surf are hosting the first-ever Fediverse House at SXSW to explore the world of decentralized social media.About Flipboard
010
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 16/02/2025
activitypub.ghost.org
Your thoughts on onboarding
It's another week of pug-themed product development, and this time around we're turning the tables on you. Usually you ask questions about what the hell we're doing and we do our best to provide answers. This time, we're asking you questions about what the hell we're doing. Please send help. Last week, we shipped the repost, the cornerstone feature of any viral moment – allowing content that resonates to repopulate. Slowly but surely we're building out the edges of the ActivityPub experience. ## What's new with ActivityPub? This week, we're thinking about onboarding. As we get closer to a public beta where many more people will be trying out ActivityPub in Ghost for the first time, how do we help them get started? We have a few ideas, but in the context of this week's newsletter, we're interested to hear what you think. The biggest challenge of ActivityPub is that it's too technical to easily explain to regular people. Nobody is interested in a jargon-laden diatribe about servers and federation. When simple questions have overly complex answers, people tend to switch off. Our job, as product builders, is to understand the jargon and complexity of the specification ourselves, and then abstract as much of it away as we can so that end users _don't_ have to think about it themselves. Think of it this way: Your iPhone has 5G. How does it work? If Apple did their job right, they know exactly how it works, and you should never need to. What you _should_ know is: How does 5G benefit you? Faster internet. That's it. That's the whole thing. There might be examples of streaming 4k video or online gaming to underscore the value, but the core point is simply that 5G gives you faster internet. If the first time you picked up an iPhone, it started telling you about MIMO, beamforming and network slicing across 3 different radio wave spectrum bands to deliver 20gbps network speeds with minimal latency... it would be a very different experience. So, as we think about onboarding Ghost publishers to ActivityPub this year, we're also spending time experimenting with how we talk about it. How can we help publishers "get it" in the simplest possible way, without bamboozling them? Here's one direction we've been playing with so far: The core message we're working on here is that this section of Ghost allows you to follow others, and others to follow you. We're deliberately reusing a lot of design language and patterns from existing social networks in an effort to create a sense of _familiarity_ when people experience this flow. The more it feels like something they've used before, the less explanation and direct guidance is needed. At least in theory. Our question for you, this week, is whether this theory matches reality. Does the framing in the screenshots above make sense to you? How would _you_ explain ActivityPub to a Ghost publisher to help them understand it, without using any technical terminology? The thing we know publishers care about the most is growing their audience.
154
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 11/02/2025
activitypub.ghost.org
Repost the stuff you love
Missed your weekly dose of decentralized delight? Fear not, for we have returned with more tail wagging tidbits about ActivityPub progress. Last week, we dropped the unfollow feature like it was hot, and shared the Ghost keynote from FOSDEM 2025. The final video, which fixed a few issues in the preview, is also now available here. ## What's new with ActivityPub? This week we're making more progress toward fleshing out our feature-set in way which are important, yet wholly unsurprising. For those of you who are new around here, allow me to re-introduce myself: I am the repost. 0:00 /0:12 1× Twitter called them ReTweets, Mastodon calls them Boosts, the ActivityPub spec calls it an Announce, but everyone else just calls it a Repost. The act of sharing a post from someone else with your audience, at the touch of a button. One small step for pug, one giant tennis ball for pug-kind. Etc. ### Public beta news coming soon The other thing that's new is a bit of a teaser. After a couple of months of testing with a small number of private beta testers, we're now gearing up to launch a public beta of ActivityPub on Ghost(Pro) – which anybody will be able to opt-in to just with the flip of a switch. We have two more hurdles to conquer before we do that, though: Support for delete activities, allowing to quickly absolve yourself of regret – and improved performance. Hopefully we'll have news on both of those fronts in the next couple of newsletters!
030
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 03/02/2025
activitypub.ghost.org
If you didn't like it then you should have just unfollowed it
Happy Monday! This week's edition comes to you a little later than usual, hot on the heels of a bunch of different work we're excited to tell you about. So grab your favorite sweater and a cup of coffee as we dive back into all that's bold and beautiful from across the open social web. Last week we shared Pixelfed's crowdfunding campaign with you. They're doing great, so far, and every little helps. If you haven't already backed the campaign, please consider doing so! It makes such a huge difference to indie teams doing their best to go up against giant corporations with minimal resources. ## What's new with ActivityPub? First and foremost, ladies and gentlepugs, we have achieved a great innovation within the hallowed halls of social networking. A technical feat so staggering you'll be forced to steady yourself like an FAA employee who just got back from vacation. Are you ready? Forget AGI. We have achieved the unfollow: 0:00 /0:09 1× Yes, it's true. For the past 6 months you could follow people in Ghost, but it was pretty much an until-death-do-us-part situation. Not ideal in those cases where you find out that your casual acquaintance Nigel turns out to hold some rather extreme views that are only now coming to light and you realize you made a huge mistake. Oh Nigel. Unfollows are kind of interesting because, on the face of it, they seem simple: Just stop following a person and getting new posts from them. Under the hood, though, there's a little more work to do. For instance, after you unfollow someone, you probably expect to stop seeing their posts in your feed — which means we need to figure out how to go and find all their posts that are _in_ your feed, and then remove them. What's hard about that? _[All together now]_ The database! Unless you've stored things neatly then it's hard to query, retrieve, process and delete the right things. So this is the first little feature-release we're getting out as a result of shipping our new database architecture. More of that on the way. This also feels like an opportune time to remind a few of you that if you don't like AI generated images of pugs, you should feel free to unfollow _us_! AI pugs make us happy, if they don't make you happy then that's totally ok. We can like different things. * * * In other news, John spoke at FOSDEM 2025 this weekend and gave a more detailed look into what we've been working on with ActivityPub. The official video hasn't been released yet by the conference, but as a subscriber to this newsletter we're sneaking (read: leaking) you an early copy. Shh. Unfortunately, the video has a few issues. John is mostly not on the screen, there's a bit of footage missing around the 20-minute mark, and the end of the Q&A is cut off. You can see the slides and hear all the audio easily enough, throughout, though! So what's coming up next? **Reposts.** Helping your most voracious visions go viral across an ultimately infinite plane of existence via technologically tenuous means of mass multiplication.
123
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 26/01/2025
activitypub.ghost.org
Help fund the Fediverse
Happy Sunday! You've probably been wondering where your 4-pawed friends have gotten to, and what the latest is with ActivityPub. And even if you weren't wondering, we're still going to tell you. Last week, we touched on some more refinements to the reader client and progress toward our new database architecture. This week, we're pleased to say that we've made really good progress with the database work, and the first pieces of it will be shipping next week(!) So, while we're in a bit of an in-between phase here, we wanted to direct your attention to a different ActivityPub project this week. ## What's new with PixelFed If you've been a subscriber to this newsletter for a while, you will have heard quite a few mentions of PixelFed — an open source, ActivityPub-based photo sharing platform. What Mastodon is to Twitter, PixelFed is to Instagram. A product where you can find, follow and share photos you love, but without a single corporation controlling everything and deciding what you see. Like how we all wish photo sharing apps worked! In the past few months, the popularity of PixelFed and its sister app, Loops (think: Tiktok, but independent), has exploded. Between the launch of official mobile apps, and major regulatory issues for large centralized social networks, demand has reached an all-time high. Growth is fun, but it also comes with more pressure and expenses. So, this week saw the launch of a crowdfunding campaign from @dansup, the prolific Canadian developer behind Pixelfed, Loops, Sup, Pubkit and FediDB. https://www.kickstarter.com/projects/pixelfed/pixelfed-foundation-2024-real-ethical-social-networks Ghost itself started out on Kickstarter some 12 years ago, so we have a soft spot for crowdfunded open source software. Without Kickstarter, Ghost wouldn't exist, so we've joined the project at the Platinum sponsorship level to support Dan's work and pay it forward, if you will. If you're excited by where ActivityPub and the wider Fediverse are going, please consider backing the Kickstarter to help fund more independent, open source software in the world! Pixelfed & Loops on Kickstarter → ## Back to Ghost So, back in pug-town, this time next week we should have some more significant updates for you about ActivityPub progress in Ghost itself. It's been a lot of behind-the-scenes work for the past few weeks, but the end is in sight now. Also, John will be speaking at FOSSDEM in Brussels next week on the Social Web track, and talking about everything we've built so far. In case any of you are attending, come say hi! FOSDEM 2025 - Networked Journalism: Bringing long-form publishing to the Fediversefosdem-2025 Until next time. 🐕
115
Building ActivityPub @index.activitypub.ghost.org.ap.brid.gy · 19/01/2025
activitypub.ghost.org
Zen and the art of ActivityPub maintenance
Another week, another update from your friendly ActivityPugs. Can you believe January is almost over already? The beginning of each year feels like some sort of time warp where our simulation overlords start messing with the settings. Last week, we recapped everything that happened in 2024 and looked ahead to what's coming up in 2025 — including Ghost 6.0. ## What's new with ActivityPub? For the next couple of weeks our updates are going to be a little more brief than usual as we work hard to transition over to our new database architecture. After that, you can expect us to be back with more details about features and visible progress. We made good progress this week moving over the first few pieces of the app to the new DB schema, and next week we hope to have the first piece of that working in production. This will start to unlock several critical (basic) features we've been blocked on for a while, like making it possible to easily unfollow people and delete existing posts. In the meantime, we're still working away to improve the reader experience of articles and posts when you open them inside the Ghost ActivityPub client. This week, we added an outline view with an integrated table of contents to help you navigate longer pieces like a breeze. 0:00 /0:09 1× As usual, we've also been fixing bugs reported by beta testers, and inviting more people to join the private beta to try things out. If you're using Ghost(Pro) and you'd like to be one of the first people to try ActivityPub, you can apply here for a private beta invitation. Just to reiterate, because people often ask, Ghost's ActivityPub work is all open source, and will be available to self-hosters, too. We're just focusing on running it on our own network, first, while we're still in active development. While we're busy over here hitting the AP engine with a plasma gun, let's bring back a section of the newsletter that we haven't had for a while! The Q&A. Got questions about ActivityPub, the Fediverse, Ghost, pugs or anything in between? Drop a comment on this week's newsletter and we'll answer as many as we can in the next one. Or take a long nap. Hard to say. We're unpredictable. Hope you have a great week!
016