Excited to share that Fedify CLI is now available on Scoop for #Windows users! You can easily install it with scoop install fedify. One more way to get started with #ActivityPub development!
activitypub
Week in Fediverse 2025-02-14
Servers
- Mbin v1.8.0
- snac v2.72
- Lemmy v0.19.9
- flohmarkt v0.8.0
- GoToSocial v0.17.4
- Hollo v0.5.0
- Manyfold v0.100.0
- Mitra v3.17.0
- ActivityPub for WordPress v5.2.0
- Pleroma ActivityRelay v0.3.4
- NeoDB v0.11.4.7
- tootik v0.15.3
- kmyblue v17.0
- Trunk & Tidbits, January 2025
- Bringing Quote Posts to Mastodon
Clients
- Mangane v1.13.6
- Thunder v0.6.1
- Fediboat: Mastodon TUI client with a Newsboat-like interface
Tools and Plugins
- Event Bridge for ActivityPub v1.0.0 (WordPress plugin)
- Enable Mastodon Apps for WordPress v1.0.0
- LemmyWebhook v0.19.0
- Mastodon – Simplified Federation v2.2.1
- Utsukta Hub themes: A collection of custom themes developed for Hubzilla
For developers
- BotKit v0.1.1
- TootSDK v13.0.0
- apsig: Signature implementation used in ActivityPub (python)
Protocol
- FEP-efda: Followable objects
Articles
- Tumblr to join the fediverse after WordPress migration completes
- Last Week in Fediverse #103
-----
#WeekInFediverse #Fediverse #ActivityPub
Previous edition: https://mitra.social/objects/0194e1e4-74a9-17c1-c347-9674b1a3f9c9
Build your own #fediverse server with #Fedify!
Fedify is a #TypeScript framework that simplifies #ActivityPub implementation. Want to build a federated server without the complexity? Fedify has got you covered!
✨ Key features
Complete protocol support including WebFinger, HTTP Signatures, and NodeInfo
Enhanced interoperability with Object Integrity Proofs and Linked Data Signatures
Type-safe Activity Vocabulary API to prevent development mistakes
Reliable delivery with automatic retries and message queues
Full observability through OpenTelemetry integration
Multiple backend support: Redis, PostgreSQL, AMQP
Seamless integration with popular web frameworks: Express, Hono, Fresh, SvelteKit
Comprehensive logging and tracing
Debug ActivityPub in real-time with ephemeral inbox server
Inspect ActivityPub objects and actors with lookup tool
Tunnel your local server for development
🚀 Runtime support
📚 Easy to learn
Extensive docs
Step-by-step tutorials
Community support via Matrix & Discord
Available under the #MIT license—free and open source!
이番(번)에 @lqez 님의 《우리의 코드를 찾아서》에 出演(출연)하여 #페디버스, #ActivityPub, #Fedify, #Hollo에 關(관)해 이야기를 나눴습니다. Fedify와 Hollo의 開發(개발) 祕話(비화) 같은 게 궁금하시다면 한 番(번) 보셔도 재밌을지도 모르겠습니다. ㅎㅎㅎ
There we go. #Snac2 up and running with the preferred installation process. Added custom styling to boot. One confusion point with styling is that it does NOT affect the root page (greeting.html) only the profile pages. So I thought I had done something wrong, but finally figured it out.
Week in Fediverse 2025-03-28
Servers
- Hollo v0.5.5
- Pixelfed v0.12.5
- Manyfold v0.105.0
- Mitra v3.21.0
- Gancio v1.25.0
- Merp Relay v0.2.2
- March 2025: Search Update (Bandwagon)
- PieFed development update Mar 2025
- Funkwhale 2.0 Alpha candidate
- Pinka: A commenting server that bridges static sites to ActivityPub sites
Clients
- Fedilab v3.31.0
- Mastodon for iOS v2025.1
- Pixelfed (React Native) v1.2.0.1
- Voyager v2.26.0
- Interstellar v0.9.0
Tools and Plugins
- Enable Mastodon Apps for WordPress v1.4.1
- Lemmy Community Seeder (LCS): A tool to seed communities, so your users have something in their All feed
- Meh… another comment system
For developers
- Fedify v1.5.0
- ActivityPods v2.1.1
Protocol
- FEP-5711: Inverse Properties for Collections
- Lemmy RFC 0008: Plugins
Articles
- Pixelfed leaks private posts from other Fediverse instances
- But It's Public, You Posted It On the Internet
- New Paradigms in Trust and Safety: Navigating Defederation on Decentralized Social Media Platforms
- PeerTube: the Fediverse’s decentralized video platform (part 2: creator edition)
- Fediverse Report – #109
-----
#WeekInFediverse #Fediverse #ActivityPub
Previous edition: https://mitra.social/objects/0195ba9c-b3d5-7402-e337-39b10034bcfc
A fedi explainer video you can share with your grandma. Thanks for your work on this @_elena
Week in Fediverse 2025-04-25
Servers
- GoToSocial v0.19.0
- ActivityPub for WordPress v5.8.0
- NeoDB v0.11.6.0
- Vernissage Server v1.10.0
- NodeBB v4.2.2
- Custom usernames (Ghost)
Clients
- Fedilab v3.32.2
- Fread v1.3.1
- Voyager v2.31.0
- Blorp v1.1.0
- pl-fe changes summary
Tools and Plugins
- Fediphoto Lineage v7.5
- FediFetcher v7.1.16
- Enable Mastodon Apps v1.4.3 (WordPress plugin)
For developers
Protocol
- FEP-8a8e: A common approach to using the Event object type
- Activity Streams/Primer/Language mapping
- Activity Streams/Primer/Relationship type
Articles
- If I ran Mastodon
- How decentralized is the fediverse
- Fediverse Report – #113
-----
#WeekInFediverse #Fediverse #ActivityPub
Previous edition: https://mitra.social/objects/01964a3e-3eef-f858-31a1-b1385bd0971c
Week in Fediverse 2025-04-04
Servers
- Mbin v1.8.1
- Betula v1.4.0
- ActivityPub for WordPress v5.6.0
- Manyfold v0.106.0
- Mastodon v4.3.7
- Mitra v3.22.0
- NeoDB v0.11.5.6
- Hatsu v0.3.3
- kmyblue v17.4
- Gush! v0.0.15
- Vernissage Server v1.7.0
- Gone surfing (Ghost)
Clients
- Fedilab v3.31.2
- Pachli v2.11.0
- PleromaFE v2.8.0
- TootRain v2.1.1
- Voyager v2.28.0
- Aria v1.0.0
Tools and Plugins
Protocol
- FEP-1042: Peer to Peer Fediverse Identities
- FEP-044f: Consent-respecting quote posts
Articles
- Open-source tools needed for the future of decentralized moderation
- Fediverse Report – #110
-----
#WeekInFediverse #Fediverse #ActivityPub
Previous edition: https://mitra.social/objects/0195de2c-e094-1ed3-e7fa-aad28ef161cb
You don't know Snac? But you should: https://codeberg.org/grunfink/snac2
A simple, minimalistic #ActivityPub instance server written in C, no database needed, totally JavaScript-free, no cookies either, not much bullshit.
What to learn more about the #fediverse and #ActivityPub? This tutorial (https://fedify.dev/tutorial/microblog) from @fedify is a really good starter. It explains how to implement a really simple #federated server and see how communication exchange are done with AP.
Week in Fediverse 2025-05-30
Servers
- Socialhome v0.21.0
- Sharkey v2025.4.2
- gathio v1.6.0
- Ibis v0.3.1
- NeoDB v0.11.7.3
- Platform update - May 2025 (Vernissage)
- PieFed development update May 2025 - Passkeys, Flair, Image hashing & much more
- Metabolizing mentions (Ghost)
- Tvmarks: a TV tracking site connected to the Fediverse
Clients
- Pachli v2.13.0
- Mangane v1.14.0
- Fread v1.4.0
Tools and Plugins
For developers
- Fedialgo v0.55.0
- ap-components: A collection of Web Components for showing ActivityPub objects in a browser
Articles
-----
#WeekInFediverse #Fediverse #ActivityPub
Previous edition: https://mitra.social/objects/0196feaa-e902-fdfb-9628-0a17333c6da5
ActivityPub object identifiers are not IRIs. They are URIs:
https://www.w3.org/TR/activitypub/#obj-id
Unicode characters are not allowed there.
After reviewing FEP-5624: Per-object reply control policies and GoToSocial's interaction policy spec, I find myself leaning toward the latter for long-term considerations, though both have merit.
FEP-5624 is admirably focused and simpler to implement, which I appreciate. However, #GoToSocial's approach seems to offer some architectural advantages:
The three-tier permission model (allow/require approval/deny) feels more flexible than binary allow/deny
Separating approval objects from interactions appears more secure against forgery
The explicit handling of edge cases (mentioned users, post authors) provides clearer semantics
The extensible framework allows for handling diverse interaction types, not just replies
I wonder if creating an #FEP that extracts GoToSocial's interaction policy design into a standalone standard might be worthwhile. It could potentially serve as a more comprehensive foundation for access control in #ActivityPub.
This is merely my initial impression though. I'd be curious to hear other developers' perspectives on these approaches.
#FEP5624 #fedidev #fediverse #replycontrol #interactionpolicy
With just 32 hours left to go...I can't believe it...they are less than $500 away from meeting the $55k goal, which will add in-app live streaming capabilities.
Let's make this happen. 💪🏼
Added support for scheduled posts (for this to work correctly, users will have to set their time zone, see below).
The user can now select a working time zone. This will be used to correctly parse the local date and time of a scheduled post.
Fixed incorrect poll vote format, which was causing problems in platforms like GotoSocial.
Mastodon API: added support for /api/v1/instance/peers.
Added a new snac-admin helper script (contributed by shtrophic).
In the web UI, posts are separated by the <hr hidden> tag; it's invisible in graphical browsers, but it separates post clearly in text-based browsers.
Some Finnish, Spanish, Czech and Russian translation updates and fixes.
https://comam.es/what-is-snac
If you find #snac useful, please consider buying grunfink a coffee or contributing via LiberaPay.
#snacAnnounces
This release has been inspired by the song Pictures on the Wall by #MichelleGurevich.
I've been wrestling with implementing #multilingual content support in Hackers' Pub, our #ActivityPub-powered platform for software engineers.
While ActivityPub theoretically supports multilingual content through the contentMap property, the reality is that most server implementations (Mastodon, Misskey, etc.) don't properly handle this content as of April 2025. This creates a significant challenge for us.
We want our users to share their knowledge in multiple languages, but we need to ensure compatibility with existing ActivityPub servers. I'm considering several approaches:
Creating separate posts for each language with clear language indicators, linking them through inReplyTo relationships (so translations appear as replies to the original post)
Using the primary language in content while storing translations in contentMap
Adding "View in other languages" links at the bottom of each post
Implementing inline language dividers that degrade gracefully on non-supporting servers, for example:
<div lang="en"> <h3>English</h3> <p>This is the English content…</p></div><hr><div lang="ko"> <h3>한국어</h3> <p>한국어 내용입니다…</p></div>
I'm leaning toward a hybrid approach—showing content in the user's preferred language when possible while providing easy access to other language versions.
Has anyone tackled this problem effectively? I'd love to hear about your experiences or ideas for making multilingual content work well in the fediverse, especially when dealing with server implementations that don't fully support ActivityPub's multilingual features.
Fediverse Report #115 - This week's #fediverse news:
- @peertube launches v1 of their mobile apps
- @Mastodon shares more information on their team is growing
- @swf launches places.pub, a way to put OpenStreetMap data directly on #activitypub
I've been considering what to add in the next version of BotKit (v0.2.0) and wanted to share my current plans. After reviewing feedback and examining the #ActivityPub ecosystem, I've identified three key features that would significantly enhance the framework's capabilities:
Custom emoji support. This would allow bots to use server-defined custom emojis in their messages, making communication more expressive and allowing better integration with instance culture.
Emoji reactions. I plan to implement both sending and receiving emoji reactions to messages. This provides a lightweight interaction model that many users prefer for simple acknowledgments or responses. This would manifest as new event handlers (like Bot.onReaction) and methods (like Message.react()).
Quote posts. The ability to reference other posts with commentary is an important discourse feature in the fediverse. Supporting both sending quotes and detecting when bot posts have been quoted would enable more sophisticated conversational patterns.
These additions should make #BotKit more capable while maintaining its simple, developer-friendly API. I expect implementation to involve extending the Message class and adding new Text processing capabilities, all while keeping backward compatibility with existing bots. Having built both Hollo and Hackers' Pub, I already have deep familiarity with how various ActivityPub implementations handle these features across the fediverse. I welcome any community feedback on priorities or implementation details before I begin coding.
As someone who has developed several #ActivityPub software implementations (Fedify, Hollo, BotKit, and Hackers' Pub), I believe one of the most frustrating features to implement in the #fediverse is #custom_emoji.
The challenges are numerous:
First, there's no standardization. ActivityPub specifications don't define how custom emoji should work, leading to inconsistent implementations across different servers like Mastodon and Misskey.
Rendering is particularly problematic. Emojis must display properly across different contexts (in text, as reactions, in emoji pickers) while maintaining quality at various sizes. Animated emojis add another layer of complexity.
Perhaps most concerning is the poor #accessibility. Most implementations simply use the emoji code (like :party_blob:) as the alt text, which provides no meaningful information to screen reader users (in particular, non-English speakers) about what the emoji actually depicts or means.
What really dampens my motivation to implement this feature is knowing I'm investing significant effort into something that ultimately creates accessibility barriers. It's disheartening to work hard on a feature that excludes part of the community.
Just rolled out some fediverse-related improvements:
- Now you can follow Write.as blogs from Ghost! There was a tiny bug with this that we just fixed. (WriteFreely PR: https://writefreely.org/pull/1373)
- We now support the `preview` property as a fallback for Articles. This will make your posts look much nicer as more platforms support it! (WriteFreely PR: https://writefreely.org/pull/1374)
#WriteAs #WriteFreely #WriteFreelyDev #Ghost #fediverse #ActivityPub
You don't know Snac? But you should: https://codeberg.org/grunfink/snac2
A simple, minimalistic #ActivityPub instance server written in C, no database needed, totally JavaScript-free, no cookies either, not much bullshit.
We're excited to introduce emoji reactions in the upcoming #BotKit 0.2.0 release!
With the new Message.react() method, your bot can now react to messages using standard Unicode #emojis:
await message.react(emoji`👍`);
#Custom_emoji support is also included, allowing your bot to react with server-specific emojis:
const emojis = bot.addCustomEmojis({ // Use a remote image URL: yesBlob: { url: "https://cdn3.emoji.gg/emojis/68238-yesblob.png", mediaType: "image/png", }, // Use a local image file: noBlob: { file: `${import.meta.dirname}/emojis/no_blob.png`, mediaType: "image/webp", },});await message.react(emojis.yesBlob);
Reactions can be removed using the AuthorizedReaction.unreact() method:
const reaction = await message.react(emoji`❤️`);await reaction.unreact();
Want to try these features now? You can install the development version from JSR today:
deno add jsr:@fedify/botkit@0.2.0-dev.84+c997c6a6
We're looking forward to seeing how your bots express themselves with this new feature!
Added Webmention support for links (Markdown-style or direct) written in a post.
Added new command-line options for list maintenance.
Display custom emoji in more places (contributed by dandelions).
Mastodon API: fixed infinite scroll in many clients (thanks to cheeaun for giving me the clue), added /api/v1/accounts/.../lists endpoint (contributed by dandelions).
Email notifications can now be sent via libcurl SMTP instead of spawning the /usr/sbin/sendmail program. To use this new feature, some additional server configuration is needed, see snac(8) (contributed by shtrophic).
https://comam.es/what-is-snac
If you find #snac useful, please consider buying grunfink a coffee or contributing via LiberaPay.
#snacAnnounces

