soc.octade.net is a Fediverse instance that uses the ActivityPub protocol. In other words, users at this host can communicate with people that use software like Mastodon, Pleroma, Friendica, etc. all around the world.
This server runs the snac software and there is no automatic sign-up process.
@hongminhee how can we get more East Asian #ActivityPub developers involved in the #W3C #SocialCG and #SocialWG?
wew a lot more traffic after getting the #activitypub #relay online and doing #mastodon relay housekeeping :P
I really miss the heyday of #moocs. It seemed so proactive and exciting in the early era (I was on MIT first 1600x Aero mooc cohort). Everything seems paywalled these days and often lacks in quality... (glances at Udemy). I ponder, could #activitypub be a new option here. Kinda moocs on instances idea. #fediverse (also tell me if I am missing somewhere this exists!)
updated #activitypub #relay list this #mastodon instance connects to: https://www.travnewmatic.com/2026/08/27/the-activitypub-relays-my-mastodon-instance-uses/
There are now more than 700 users on #FediHood, and I've added new topics.
You can tailor your timeline in three ways:
- The distance from your city
- The topics you want to see
- The languages
Topics are more powerful than hashtags (in the context of the project) because:
- They avoid typos
- They work whatever the language
- One mute covers everything, unlike hashtag variants
It also fully supports the #ActivityPub Events used by #Mobilizon.
If you want to join: https://fedihood.social/
https://relay.travnewmatic.com #activitypub #relay is back online! writeup here: https://www.travnewmatic.com/2026/08/27/bringing-my-pleroma-relay-back-online/
Little Fedi looks like an interesting project! I also saw a toot earlier where it was showing a settings screen where someone disabled media without a description. https://littlefedi.org/ #AltText #Fediverse #ActivityPub #Mastodon
🆕 blog! “Some updates to ActivityBot”
I couple of years ago, I developed ActivityBot - the simplest way to build Mastodon Bots. It is a single PHP file which can run an entire ActivityPub server and it is less than 80KB.
It works! You can follow @openbenches to see the latest entries on OpenBenches.org, and @colours for a …
👀 Read more: https://shkspr.mobi/blog/2026/03/some-updates-to-activitybot/
⸻
#ActivityBot #ActivityPub #mastodon #php
I'm going to try and keep a record of all the bugs, errors, and inconsistencies I've reported in #ActivityPub and #Mastodon documentation.
First up, how big are the limits on what you can federate?
Mastodon lists some limits in KB/MB, but others are just raw numbers. That might make sense for an ASCII world - but emoji complicate everything.
Hmm, I can't post a magnet-link here, even though the #ActivityPub supports that protocol: https://docs.joinmastodon.org/spec/activitypub/#sanitization
Neither via @phanpy nor via mastodon-web
The char-limit of my instance is 500, which is less than the particular magnet-link has. This seems to be the issue, the automatic validator doesn't treat it as only 23 characters like with https
Does anyone have the same issue and/or knows more ?
Hmmmm. Some #ActivityPub headers have:
digest => sha-256=…
But others have
content-digest => sha-256=…
Looks like I need to update my code, and a bunch of tutorials need to update their documentation!
Enforcement of Mastodon dominance.
A front against Mike Macgirvin, inventor of the most "disruptive" Fediverse software from a Mastodon point of view, as well as all his creations and inventions.
Forcing a grass-roots development under corporate control and eradicating the grass-roots part. Essentially "embrace-extend-extinguish", but trying desperately to speed-run the "embrace" and "extend" parts to cut to the "extinguish" part as quickly as possible.
The only way this could possibly fail is if Mastodon decided not to play along because more people consider Mastodon the ActivityPub reference implementation and Fediverse gold standard than not.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #ActivityPub
So, I admit that filtering out instances simply because they use the `.cf` TLD can be unfair. After all, it's just a TLD — that's not enough reason by itself to filter an instance out.
So I took a closer look at the JSON file containing the hosts that were actually filtered.
And the overwhelming majority of the `.cf` hosts were:
`activitypub-troll.cf`
I'm not kidding. The screenshots show the actual JSON data I got, and they're only a tiny fraction of the full file. There were so many entries that even VS Code couldn't count them all.
To be fair, there may absolutely be legitimate `.cf` servers out there. I just couldn't manage to find them in this dataset.
But I think we can agree that filtering `activitypub-troll` hosts doesn't require blocking the entire `.cf` TLD. We can replace that broad rule with a much more specific one.
So, that's another improvement to make!
RE: https://social.vivaldi.net/@thanksstevenkim/117154791519179296
A few people have asked where the “710,000 spam servers” number in my previous post came from, so I thought I should explain it more clearly.
First, I should clarify something: calling all of them “spam servers” was an oversimplification for the joke. A more accurate description would be hosts filtered out as likely spam/noise by my automated filter.
When I run `filter_spam.py` for the project, I get the following results. The script outputs in Korean because Korean is my native language, so I've translated the output here:
The actual filtering results are quite long, so I've moved them to the next post in this thread ⬇️
ATTENTION YouTubers
Please provide a PeerTube option in addition to your YouTube account.
EXAMPLE
The Linux Experiment
Website: https://tilvids.com/c/thelinuxexperiment_channel/videos
Fediverse: @thelinuxEXP @thelinuxexperiment
PEERTUBE
Website: https://joinpeertube.org
Fediverse: @peertube @Framasoft
THANK YOU
#Google #YouTube #YouTuber #YouTubers #deGoogle #Framasoft #PeerTube #FreeSoftware #FOSS #FLOSS #SoftwareLibre #OpenSource #Privacy #InfoSec #Fediverse #Video #Decentralized #SelfHost #SelfHosting #ActivityPub
Once we fix all open bug reports, and federation, would you like to see us add support for AtProto (what Bluesky uses)?
#pixelfed #socialWeb #atproto #activitypub #fediverse #askFedi
| Yes, add official native support: | 4 |
| Leave it to 3rd party bridges: | 8 |
| No: | 14 |
Does #Mastodon even use `contentMap` in posts (`Note`)? The #ActivityPub spec specifies a method for multilanguage posts in the form of `contentMap`, but does the rest of the #Fediverse even get to read it? Do posts that have `contentMap` but **not** `content` get to show at all?
I’ve been working on a small Fediverse project called "The Hitchhiker’s Guide to the Fediverse".
It started as a simple directory of Fediverse instances, but I’ve been gradually turning it into something more useful:
- discovering new instances through federation peers
- filtering suspicious/spammy hosts
- monitoring known instances over time
- automatically hiding servers that stay offline
- bringing them back if they recover
- keeping the whole thing updated with GitHub Actions
The monitored set is already around 27,000 instances, so I also had to rethink the collector to use bounded concurrency and checkpointing instead of checking everything one by one.
Still very much a work in progress, but it’s been a fun way to learn more about how the Fediverse actually behaves in the wild.
https://github.com/thanksstevenkim/the-hitchhikers-guide-to-the-fediverse
Finally got to the point where I've started implementing integration testing for the side effects of Add/Move and Remove activities received through the client to server ActivityPub API.
Can't wait for the phase where we no longer need to explain what the fediverse is in fediverse events and all we do is showing news features, and new tools and new platforms
Say goodbye to Linked Data Signatures
https://blog.joinmastodon.org/2026/08/mastodon-4.7/
We now support verifying FEP-8b32 Object Integrity Proofs using either eddsa-jcs-2022 or mldsa44-jcs-2024.
The latest version of Mastodon can verify FEP-8b32 integrity proofs, which replace outdated Linked Data Signatures.
Oproep: kunnen jullie voorbeelden met me delen van interessante vormgeving op servers op #ActivityPub? Wat zijn de mogelijkheden om een NRC-server een beetje mooi te maken? Wat kan wel en wat kan niet? #NRCServer
jacobin.social is a fully customized #Bonfire #ActivityPub server we built with Jacobin.de. It reflects Jacobin’s visual identity and lets readers interact with articles and authors according to their membership tier and much more...
Jacobin explains the thinking behind the project here:
jacobin.de/social/
And here’s our case study, which may be useful for your research:
bonfirenetworks.org/case-stu...
happy to share more about it 😊
RE: https://toot.fedilab.app/@apps/117135174541471537
#FediHood now supports #ActivityPub events, which means it is compatible with software such as #Mobilizon. You can create and receive events in the area you selected.
Joining and leaving events is not implemented yet.
TIL: fitpub.social
Track your adventures, share your experiences, and connect with other active people.
I think I just figured out why the SocialCG prioritised work on encrypted private messaging for ActivityPub.
Decentralised DMs already give the fediverse an edge over the ATmosphere (eg BlueSky DMs are BS-only). If they're all E2EE as well, that puts us head and shoulders above anything the ATProtocol can currently handle.
(1/?)
Question for fediverse server admins and moderators — in the list of servers yours federates with, how would you prefer them to be sorted?
#Smithereen #mastodev #activitypub
| Alphabetically by domain: | 2 |
| By number of their users in your database: | 4 |
| By some other activity metric: | 1 |
| By something else entirely, please specify: | 0 |
The #Miscellany context for #ActivityPub, which documents a few widely-used terms, is now a Draft report of the #SocialCG:
https://swicg.github.io/miscellany/
/cc @socialcg
Has anyone else in #Aotearoa #NZ already tried #FediHood?
It looks like there are only two accounts in this contry (my trial one and another).
But I quite like the approach of using geographical proximity for interactions as well as using full end-to-end encryption for messaging. While all based on the #ActivityPub protocol.
It might also be a good platform for local organisations (e.g. sports teams, scouts, communities, neighbourhoods, etc.).
I feel the hidden question of the #poll is: Given the #technology base exists, can you just code against it at will? I.e. the tech #ethics question is asked. Where on one end of the spectrum we find the techbro / fossbro, and on the other end of the spectrum we are still learning what we should have there as an alternative to make a social web be social and keep it that way. As "social web" technology by itself offers zero guarantee of that.
We are now more than 300 users on #FediHood. The project is stable enough for me to invite you to try it.
It is a software running on #ActivityPub and using #OSM.
The idea? Discover people near you or all around the world, and filter by topic.
It doesn't use GPS, you pick the town. The app warns you if your city is too small and suggests a bigger one nearby. Bonus: it supports #E2EE DMs.
Don't hesitate to share. Thank you!
Week in Fediverse 2026-08-14
Servers
- Akkoma v2026.08
- WriteFreely v0.17.2
- Wafrn v2026.08.03
- Mitra v5.9.0
- Ktistec v3.11.0
- Hollo v0.9.11
- Mastodon v4.6.6
- Forte v26.8.11
- gathio v1.6.4
- ActivityPub for WordPress v9.2.2
- NeoDB v0.17.6
- NodeBB v4.15.0
- Trunk & Tidbits, July 2026 (Mastodon)
Clients
- Aria v1.5.11
- Snowdrop: Multiplatform client for Mastodon API compatable Fediverse software
Tools and Plugins
For developers
- Fedipub v0.9.0
- Library progress report - August 2026 (GoActivityPub)
Protocol
- FEP-e4de: Closing Registration on Unattended Servers
- FEP-633c: Guardians
Articles
- Deploying your own Vernissage instance
-----
#WeekInFediverse #Fediverse #ActivityPub
Previous edition: https://mitra.social/objects/019fde3b-670e-7793-9180-6d8d0ddca40a
Feedback about #FediHood is greatly appreciated. This is a small, unpretentious #Fediverse project. But it seems that the idea of linking #OpenStreetMap to discover content near you was something missing here. It was designed to never use a GPS. It warns you when your city is too small and suggests the biggest one around. Topics and language allow you to get tailored content. I will introduce the #ActivityPub Event used by #Mobilizon for the event topic.
Thank you for using and sharing.
Is it OK to write code that does new things on the Fediverse?
#EvanPoll #poll #ActivityPub #Fediverse
| Yes: | 54 |
| Yes, but...: | 21 |
| No, but...: | 0 |
| No: | 1 |
Loops has developed it's own optimized server to server communication to support near real-time federation of latency sensitive activities, like Live stream chat messages.
I'm working on the draft FEP, and will share more details soon!
I often see that question about the way I use #E2EE over #ActivityPub.
#FediHood and #HolosSocial do not use the end-to-end encryption #Mastodon is working on. They are going for MLS over ActivityPub. I use the Signal Protocol, already working between Holos and FediHood, which I both maintain. Once MLS is available, I'll happily switch.
But to be clear: it works perfectly with the Signal Protocol. The switch would only be for compatibility.
If you add the "indexable" flag in your ActivityPub actor profile, which content search engines can index your content and show it in search results?
https://docs.joinmastodon.org/spec/activitypub/#indexable
#EvanPoll #poll #ActivityPub #Mastodon #ContentSearch #Search
| All: | 5 |
| All except those you opted out of: | 2 |
| Only those you additionally opted into: | 1 |
| Other (please specify): | 0 |
Mastodon has always done what is best for #Mastodon. Over the years it has received lots and lots of criticism for that. I think the criticism was unwarranted. After all any #FOSS project is totally free to do what is best for it.
The problem is more that the 'fediverse community' if you can speak of that, and esp. the #ActivityPub developer community has let Mastodon get to where it is today, and insufficiently took its own path towards maturing the open standards and technology landscape. Leaving Mastodon forever in the driver's seat. Fediverse is now shaped in Mastodon's image, as a microblogging environment.
To this day #fediverse devs are super scared to break precious "Mastodon-compatibility", not showing the way to "Fediverse-compatibility". It is even unclear what "being part of the fediverse" even means, there's no consensus here.
Anyway, this is just a rant, but my rallying cry for making consolidation impossible is:
Back to open standards! 💪
I really think we can bring proximity back to social networks, and #ActivityPub is the best place for it.
#FediHood connects you with people in your own city. Posts carry a local topic: help, events, buy and sell, meet people, news.
Moderators earn their role through good actions in their own area, and lose it through bad ones. The power stays with the users, not with big tech that puts money before moderation.
Hey, Free and Open Source Software developers! Do you want $5000 for making a library in your favourite programming language?
@Interledger is offering grants of up to $5000 for implementations of RFC 9421, "HTTP Message Signatures".
https://interledger.org/grant/open-payments-sdk
RFC 9421 is the essential authentication system for #ActivityPub 's federation protocol. Robust, secure and reusable libraries make it easier to build AP into more software and get more people on the Fediverse.
Please take a look!
@mooooooo I think @mapache has implemented #ActivityPub on #DotNet? Maho, would you mind giving this team a review or some tips?
#ActivityPub people, we're failing at implementing the HTTP signatures necessary for interop, does anyone know how one would do this in #AspNet #dotnet 8?
Otherwise, could you check what's wrong with our implementation by looking at an example request, to see if anything jumps out?
https://codeberg.org/MinotaursAtWork/Dallawan/issues/1
Totally understand that troubleshooting and bughunting is work, I wish we could pay for this. Drop any donation/tip page you have and we'll try to donate what we can when we can <3
RE: https://mediaformat.org/2026/07/nuages-says-hello/
Announcing it here publicly for the first time!
I've been building a general purpose activitypub pwa.
Follow @nuages for official updates!
I'm enjoying the use of Ghost even if the ActivityPub support needs quite some help. (Do they welcome help, as in patches?)
I have just created a feature request to support hashtags in ActivityPub posts (now they render as plain text). If you share this pain and you have an account in their forum, consider adding your vote:
https://forum.ghost.org/t/support-for-hashtags-in-notes-ativitypub/63534
Speaking of hashtag, is there one for this project? "ghost" is too generic.
Excited to announce that @fedipub (formerly known as Federails), the Rails engine for #ActivityPub that powers (amongst other things) @manyfold, has been awarded a grant in the latest round from @NGIZero. I’ll be building community, docs, rounding out features, and ideally making it usable in non-Rails Ruby apps too!
Week in Fediverse 2026-08-07
Servers
- Vernissage v1.42.0
- Loops v1.0.0-beta.14
- Socialhome v0.24.0
- Ktistec v3.10.0
- Mbin v1.10.1
- Mastodon v4.6.5
- Hubzilla v11.4
- snac v1.94
- ActivityPub for WordPress v9.2.1
- PeerTube v8.2.4
- tootik v0.24.0
- NodeBB v4.14.8
- Wafrn v2026.08.01
- PieFed v1.7.10
- appy v0.6.0
- Lemmy Development Update July 2026
- Discovery Week 2026: What we learned, and what we’re doing next (Mastodon)
- What PieFed’s “social credit system” actually does
- Prismo: Federated link aggregation powered by ActivityPub
Clients
- Fedilab v3.43.1
- chan-fe v0.2.0
- Rocinante v1.2.2
Tools and Plugins
- FediFetcher v8.0.0
- Polls for ActivityPub v1.0.11 (WordPress plugin)
For developers
Protocol
Articles
- DrFed on reducing complexity and enabling more people to shape the Fediverse
-----
#WeekInFediverse #Fediverse #ActivityPub
Previous edition: https://mitra.social/objects/019fba46-e7be-7ee0-ae8b-8a2a8daec431
Okay, so
https://docs.joinmastodon.org/spec/security/
According to resources linked in the #Mastodon docs, it seems that signature validation gets the entire #ActivityPub Actor (thus the `#main-key` which the server is supposed to ignore) and then within the Actor it gets the `publicKey` property.
Soooo back to the `#main-key` nomenclature, I guess
The author of a replied post is no longer added to the CC: line, as it does not have much sense.
Fixed mentions for users with hyphens in their identifiers.
Unlisted replies to unknown posts were being skipped from the timeline, so don't do that.
If an actor marked as broken gets a post boosted (proving that is [back] functioning), it's unmarked as such.
Don't try (and fail) to parse non-UTC dates in posts (I'll provide a real fix eventually).
Fixed a redirection loop in the /users alias.
Mastodon API: fixed a bug that made changing the sensitive content string impossible, avatars and headers can be deleted (contributed by bm90).
Updated Czech and Italian translations (contributed by pmjv and fidiben).
If you find #snac useful, please consider buying grunfink a coffee or contributing via LiberaPay.
If you run a WordPress-powered blog, either on wordpress.com or on an independent hosting service, you can turn it into a Fediverse account that people can follow from Mastodon etc. More info about how to do this (and lots of questions answered) at:
➡️ https://fedi.tips/wordpress-turning-your-blog-into-a-fediverse-server
You can follow the official account for the plugin that enables this at:
You can also follow its lead developer at:
➡️ @pfefferle
You are looking for a way to increase your instances visibility and have more Inbox? Look no further, check out https://rel.re our state of the art selfmade #activitypub #relay in #golang. Its incredibly fast, stable and feature rich.
Seeking beta testers for a new opt-in Fediverse service - FediAdhan
https://fediadhan.org/
Have you ever felt your #Mastodon timeline was missing something? You get regular updates about the weather, the bongs of Big Ben on the hour; perhaps even that one account that toots like a chicken. But you've been missing timely updates about the Islamic call to prayer.
No longer: with FediAdhan, simply pick your location on the map and you'll get an account you can follow from your #ActivityPub client, which will drop a toot in your timeline when any of the five Islamic prayer times rolls around (and optionally for sunrise as well). And you get a neat pie chart of daylight/twilight for your location, as a bonus.
Explicitly opt-in, privacy focused, #HumanMade with no LLMs used at any stage in development. Try it out, let me know if you have thoughts, feedback, issues you run into.
Still pretty happy with what we did here for #p2p #ActivityPub https://distributed.press/2023/12/05/announcing-distributed-press-social-inbox-1-0/
Looks like it is self-hostable: https://github.com/ente/ente/tree/main/server#self-hosting
Might also shoot an issue to them to add #ActivityPub support.
In theory you can do anything you want, and in practice people do that too. As long as you don't break anything that #ActivityPub specs prescribe, the #ActivityStreams vocabulary is just a 'toolbox' of #SocialWeb primitives you can use as building blocks in your solution. The only issue arises if you want your mechanism to have #interoperability with other #fediverse solutions. They should either ignore, or understand it, and not break. Writing a #FEP is the best-practice way to walking the path of adoption of your approach.
I added a list of recommended libraries to the ActivityPub developer guide:
https://codeberg.org/ap-next/ap-next/src/branch/main/guide.md#libraries
- activity (Go, used in GoToSocial)
- Fedify (JavaScript, used in Hollo and Ghost)
- Fedipub (Ruby, used in Manyfold)
- activitypub_federation (Rust, used in Lemmy)
- APx (Rust, used in Mitra)
This list only includes libraries that are actually used somewhere. Libraries that are not used, or used in projects with too few users are not included.
#ForgeFed is an #ActivityPub extension that is developed as an open standard. It forms a protocol in itself: specifications for #forge federation.
In the poll above it should've been listed. It might replace 'Git', because that is not a protocol for forge federation. Git is a protocol for distributed version control systems (DVCS).
ActivityPub is more a framework than something you can use out-of-the-box. Arguably ForgeFed might even replace ActivityPub in the poll.
AP is a protocol for developing interoperable social networking solutions. It has no knowledge at all about code forges. It is based on Linked Data.
ForgeFed is a protocol for federating code forges. It is based on ActivityPub.
Btw, active ForgeFed projects:
- https://codeberg.org/activitypub-rs/activityforge
- (on roadmap) https://codeberg.org/forgejo-contrib/federation
And in Activitypub I'm sure there are a lot of features specific to code handling that likely aren't supported. That's why it seems to me that unless either protocol has a major rewrite with this specific usecase in mind, that we're going to have to Frankenstein this.
The wiki reveals even different timeline:
To me, it seems, that Gargon simply was not as colossal nerd, as others, and somehow managed to create cult following of sufficient number of users, which were not really techies.
I think it was in 2016 already that German tech media got interested in decentralised alternatives to corporate silos. Mastodon caught their interest, being developed in Germany and all. Pleroma didn't, in spite of being developed in Germany, too, not to mention more feature-rich than Mastodon. Friendica was developed in Germany back then already, too, but it seemed like either tech media weren't interested in alternatives to something that needed alternatives much more than Twitter, or Friendica managed to continue to fly under the radar even then.
Anyway, Mastodon got media coverage, and nothing else did.
In 2017, right-wingers started attacking furries and queers on Twitter. They had to escape somewhere. Tumblr wasn't it, having been pretty much killed by being bought out and G-rated. But someone happened to know Mastodon due to the media coverage whereas nobody happened to know Pleroma due to no media coverage at all. So those furries and queers escaped to Mastodon. "Awoo" was briefly part of Mastodon's culture in the late 2010s due to the high furry-to-non-furry rate.
From then on, Mastodon had the two advantages of past media coverage and more users. The rest was like a snowball, essentially. The more users something has, the more users something gains by inviting them.
I guess Friendica and Hubzilla, both of which already existed back then, suffered from the same choice of mindsets: "If you build it, they will come," "We'll first need to get this and that fixed before we're ready for prime time," "Can't someone else take care of that? I'm bad at advertising stuff!" Plus, of course, people who really were bad at advertising stuff to anyone who's neither a developer nor a server admin.
I was thinking about need for decentralized social media since at least 2009, as I was watching the old web to slowly loose any relevance. (My Facebook account was canceled without any explanations as soon as perhaps sometimes like 2010?).
By the way, what killed StatusNet was when Identi.ca changed its backend from StatusNet to pump.io and its protocol from OStatus to ActivityPump, thus becoming incompatible with the rest of StatusNet. What remained was largely unable to stand alone. What kind of helped Identi.ca (OStatus as a profile sucked so badly that Evan and Erin themselves had to whip up ActivityPump) did the opposite to StatusNet. A bit later, the FSF scooped it up, forked it to GNU social and eventually merged what was left of StatusNet into GNU social. It got ActivityPub support later on, but it's gone now, too.
Also, in 2010, Mistpark was around, and so was diaspora* (or what already existed of it at that time). diaspora* had tons of advance publicity due to its crowdfunding stunt, but then the four devs didn't manage to deliver before public interest had faded away, even with Mike's help on the protocol (not even kidding here). And speaking of Mike, he built Mistpark, but almost nobody came because he did nothing in terms of advertising. Even though Mistpark of May, 2010 was more powerful than diaspora* is today. Even though Mistpark took two months for a public alpha and four for a stable point release whereas it took diaspora* years to go beyond alpha, not to mention the entire development team being replaced.
I guess you would have been a prime Friendica user candidate. Particularly, you would have been one of those who were happy on a Friendica node without the performance-hogging Facebook connector in times when everyone was seeking out and piling onto the nodes with that connector, just to see them close registration at not even 150 accounts.
I was thinking about basing it on bunch of combined RSS feeds, the publicly compatible vs. the activity stream, which is not so different from from like ActivityPub is made today, except that signing of content with public keys is more advanced concept, that what I was able to imagine.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Mastodon #Pleroma #StatusNet #Identi.ca #GNUsocial #Friendica #Hubzilla #OStatus #ActivityPump #ActivityPub
Slowly developing the in depth testing of the same functionality at different levels in the #GoActivityPub stack.
I have just finished the collection pagination integration test as exposed in the reference server implementation for the library. So we now have the same pagination functionality covered in unit-tests in the different storage backends, also covered by the storage conformance suite, and now, through an integration test in the server application itself.
Also, ALT text translates with the rest of the post, which can be helpful for images which contain only foreign language text.
Hubzilla is the most incompatible ActivityPub software in Fediverse. You do just lot of things wrong, to put it mildly.
Here are the facts:
Mastodon was launched in January, 2016.
Hubzilla was launched in March, 2015. Counting an earlier incarnation named Red, it was created in May, 2012, when Friendica's creator re-wrote his own fork of a Friendica fork of his own.
Mastodon implemented ActivityPub in September, 2017, when the spec wasn't finalised yet.
Hubzilla implemented ActivityPub in July, 2017. Two months before Mastodon. Hubzilla was the first software to ever implement ActivityPub.
Hubzilla implemented ActivityPub strictly by the book. It has always tried to stick as close to the official W3C ActivityPub spec as possible.
Mastodon, in stark contrast, has always been stretching the ActivityPub spec until it broke. Not only that, but it has always been adding stuff outside the spec. First it did so to take over certain features from StatusNet which was its original protocol. More recently, it did so with the very intention to break compatibility with the rest of the Fediverse and make everything that isn't Mastodon look broken. And people like you keep falling for it because they think they know for a fact that Mastodon is the ActivityPub reference implementation.
The whole Fediverse has to break the ActivityPub spec just to be able to federate with Mastodon.
yes, the Hubzilla author is writing Streams, with nomadic identity, but it also means, that he understands, that Hubzilla approach is kind of dead-end.
Mike Macgirvin, creator of Friendica, Hubzilla, (streams) and Forte created his post-Hubzilla server applications because he kept advancing the Zot protocol. And he couldn't implement these advancements into Hubzilla because they bore the chance of breaking compatibility with what already existed.
(streams) is not a completely new development, nor is it a straight Hubzilla fork.
(streams) is a 2022 fork of Roadhouse.
Which was a 2022 fork of either the third Osada or Mistpark 2020 or Redmatrix 2020.
Which were 2020 forks of Zap (or each other, but at least one of them was forked from Zap).
Which was a 2018 fork of either Hubzilla itself or the first Osada, which was a 2018 fork of Hubzilla.
Osada and Zap were created to develop Zot6. In its early stages of concept, Mike expected Zot6 to be incompatible with everything else. Mind you, he didn't see that as something bad. Advancing Zot was necessary because the then-current version of Zot was less than optimal. And Mike's vision was a decentralised, nomadic network named the "Grid", entirely based on Zot. The Grid would have been vastly superior to the existing Fediverse in every way possible.
So the issue with his early draft of Zot6 was that it was quite incompatible with non-nomadic protocols. Nomadic Zot6 content could not be translated into non-nomadic protocols like the diaspora* protocol or ActivityPub.
Thus, developing Zot6 on Hubzilla was out of question. Zot6 would have broken too much on Hubzilla. Besides, Hubzilla was bad as a platform to experiment on due to its wealth of supported protocols and other features, all of which would have had to be made compatible with Zot6.
And this is the real reason why Mike created Osada and Zap. From how I see it, and how I remember what he talked about back in the day (I was there, yes), he first forked Osada from Hubzilla. Then he ripped everything out that he didn't need, including support for all protocols except for Zot itself, ActivityPub, RSS and Atom, including the CMS stuff like articles, planning cards, notes, wikis and webpages, etc. Then he modified what was left against his early version of Zot6.
Then he discovered that a cloned Osada channel couldn't properly send content via ActivityPub.
Then, shortly afterwards, he forked Osada into Zap. He removed nomadic identity from Osada which kept ActivityPub and ActivityPub support from Zap which stayed nomadic.
The idea was to have a nomadic, cloned channel on Zap as your main channel that would only connect to Hubzilla, Osada and Zap, and to have an additional, non-nomadic channel on Osada that would serve as a "gateway" between nomadic Zap and the non-nomadic ActivityPub Fediverse.
Of course, this was highly impractical. But by 2019, Mike found a way to make Zot6 compatible with non-nomadic protocols. So, in early 2019, Mike discontinued Osada and forked a new Osada from Zap which only differred from Zap by having ActivityPub support while still being nomadic. This enabled Mike to have one development platform for Zot6 in conjunction with non-nomadic protocols and another one on which ActivityPub did not stand in the way.
Later in 2019, both Osada and Zap got stable releases. At that point, Osada and Zap were identical in code. Both had ActivityPub support. It was included into their cores now and no longer an add-on like on Hubzilla. They only had two differences. One was the branding. The other one was that Osada servers had ActivityPub activated by default, and Zap servers had ActivityPub disabled by default. Keeping Osada around was unnecessary now, so ActivityPub was activated by default on Zap, and Osada was discontinued. Zot6 was so stable that it was soon backported to Hubzilla.
Mike wasn't done yet, though. He now wanted to develop Zot8. Again, he did not want to develop protocol changes on stable production software that people potentially daily-drove.
Thus, three new forks emerged in 2020: another Osada, Mistpark 2020 (a.k.a. Misty) and Redmatrix 2020 (named after the Red Matrix, the name that Hubzilla bore from late 2012 to early 2015 between being created as Red and being re-branded into Hubzilla). Mike used them to develop Zot8. They were identical in all but brand identity.
This was fully intentional on Mike's part to confuse the hell out of the brand fetishists that were growing more and more numerous in the Fediverse. His goal was for people to declare Osada or Misty or Redmatrix the best Fediverse software and superior to everything else, just for him to tell them that Osada, Misty and Redmatrix are absolutely identical. In fact, the three remained identical to Zap in features.
Zot8 never got stable because Mike kept advancing it further and further. In early 2022, he was at Zot11. But Zot11 was so incompatible with everything else, including previous Zot versions, that Mike declared it a new protocol of its own and renamed it Nomad. In order to test-drive it, he forked Osada or Misty or Redmatrix into Roadhouse. After all, there were people who were daring enough to daily-drive production channels on Osada, Misty and Redmatrix, albeit only few. Roadhouse was still identical in features to Zap, Osada, Misty and Redmatrix.
It was now possible to crossgrade between Zap, Osada, Misty, Redmatrix and Roadhouse by simply rebasing the server code.
Later in 2022, he created a new fork of Roadhouse itself. The reason for this was not further protocol advancement. No, this time, it mostly had branding and licensing reasons.
First of all, he wanted to make that fork as easy for others to fork and adopt as possible. Everything he had developed so far was under the MIT license (he himself had relicensed Friendica under the AGPLv3 in 2011, but he didn't actually develop on Friendica; he developed on a fork named Free-Friendika that was still MIT-licensed and then backported the changes to the Friendica repository, and Red was a Free-Friendika fork). This new repository was released into the public domain. At first, the whole thing was never primarily intended to be installed on servers as it was, but rather to be forked as the base of something new.
At least the core and Mike's own add-ons were. What third-party add-ons from Hubzilla times were still there got to keep their maze of licenses. This was intentional on Mike's part, too. It would make it impossible for commercial players to scoop up the whole thing and relicense it into something non-free and commercial without breaking any licenses, or without pumping tons of money into their legal department to work around that maze of licenses.
Also, Mike removed any and all naming and branding from the software. He absolutely intentionally made it nameless. You've read that right. He did this for two reasons. One, whoever wanted to fork it would have to give the fork an individual name and an individual branding. Two, this was to mess with brand fanbois and brand fetishists even more: This thing had no brand to gush over to begin with.
Furthermore, Mike removed all nodeinfo code that he could possibly get away with removing. Again, this was intentional. One intention was to stop this software from automatically joining the "my Fediverse project is bigger than yours" and "my server is bigger than yours" rat races. He intentionally did everything he could to keep this software away from The Federation, Fediverse Observer, FediDB and the like.
The other intention was for the case of commercial players looking for free code to steal. If this software had really taken off and left its stats proving its popularity everywhere, some big commercial player would have been likely to try and steal this software, make it commercial and non-free and release it as their own original creation. So his intention was for them to not even be able to find it in this case. (This, by the way, was the reason why he relicensed Friendica under the AGPLv3, and why he hardly ever spoke about Free-Friendika: Now that Friendica was growing popular, he didn't want big commercial players to scoop up code of his under a license that they could change to non-free.)
This server application became the first and only one in the Fediverse with no fixed server type identifier, in fact, with none at all by default. It has one text field for the server name, just like Mastodon and Friendica and Hubzilla and the like. But it has an additional field where the server type, i.e. the identifier for the software, can be entered. If none is entered, it's derived from the server name. Mike used to have a server that identified as "Y" because, as he said, "Y is not X."
While the application itself is nameless (for it still is), the code repository did require a name of sorts. Mike named the repository "streams".
Now, the community needed something to call that nameless software when they spoke about it. So they unofficially established "(streams)", complete with parentheses that make sure that this is not actually the name of this software. Those who say, "Streams," with a capital S and no parentheses, and who use that term as if it's an official name, usually sincerely believe that this is the official name.
Mike himself uses "streams" without the parentheses because even he needs something to call his own software by. Before Forte was made, he preferred talking about the streams repository without directly mentioning the software. And he himself denied that (streams) is even a project. It's just a bunch of code that runs.
As far as I know, it was now possible to freely crossgrade between six different server applications because they were still identical in features. Only that Mike also had six server applications to take care of now.
So on December 31st, 2022, Mike discontinued Zap, Osada, Misty, Redmatrix and Roadhouse. Admins who ran either of these on their servers were recommended to rebase their servers to the streams repository. In this case, by the way, the old branding was kept. I've seen a server that still had "zap" as its subdomain which indicated that it was set up as a Zap server, that had Misty branding, but that actually ran (streams).
From then on, Mike dedicated his time to maintaining and developing only the streams repository. He still occasionally helped Hubzilla out, though.
In 2023, the Mitra creator and developer silverpill approached Mike. The goal was to make Mitra nomadic. I guess earlier attempts using a blockchain and crypto technology didn't come to fruition, so it had to be Mike's way which had proven itself stable for more than a decade. However, Mitra was to remain based on ActivityPub.
It was in this exchange that Mike realised that ActivityPub could indeed be used for nomadic identity if a few things were added to it. One outcome was FEP-ef61 "Portable Objects" which introduced decentralised IDs (DIDs) that would not be bound to any one server domain.
Instead of creating a whole new server application to play with, Mike simply made a "nomadic" branch in the streams repository (even though the software was already nomadic) in which he implemented support for nomadic identity via ActivityPub. Support as in (streams) understanding it while internally still using Nomad for nomadicity.
In June, 2024, Mike considered the "nomadic" branch reliable enough and merged it into the "dev" branch.
In July, 2024, Mike merged the "dev" branch into the "release" branch which caused DIDs as per FEP-ef61 to be rolled out to existing production servers. On accounts created on this new version, channels would have a DID internally. On accounts greated on any previous version, even new channels would keep the old ID system for the time being. This way, existing accounts and channels weren't messed with.
However, what had worked under supervised and restricted lab conditions completely blew up under real-life conditions. Again, I was there on (streams) with a pre-DID account and two channels on it. I still have them. (streams) channels wouldn't federate with anything anymore. It had become impossible to send anything anywhere. What Mike was facing was nothing short of an enigma because not even he knew what was going in.
So he started tinkering. In mid-August, Mike forked the streams repository into something named and branded Forte. He did so so he could rip the Nomad protocol out while still keeping the entire functionality. He had to get rid of Nomad because he had discovered that (streams) got confused juggling all the many IDs it had to deal with, so he had to weed out the Nomad and Zot6 IDs to make things easier. But he couldn't possibly have done that on (streams) proper.
This way, Mike created the very first Fediverse server software that uses ActivityPub for full nomadicity, including cloning.
By the end of August, things got back to normal. But Mike, having spent every free minute in the last few weeks to get (streams) back into working condition, was burned out. He sent an open message around in which he declared that he would completely retire from Fediverse development, and both the streams repository and Forte were up for grabs.
But nobody was found who could take over either. (streams) and Forte probably had way fewer than 100 users combined. Those few who would have been able to maintain either didn't have time. One did have time and was willing to do so, but he didn't know how to code. He eventually did start teaching himself, and he occasionally contributes merge requests, but there was no way he could take over as the only dev for either, much less both. So Mike had to go on, whether he wanted or not, albeit at a somewhat slower pace.
This is why Mike is still developing (streams) and Forte to this day.
By the way: The reason why Mike "abandoned" his old software was because he needed to invest all his time into protocol development and advancement. Mike isn't the one to constantly maintain stable server software unless he absolutely has to.
In 2011, he handed Friendica over to two new developers so that he had time to create the Zot protocol.
In 2015 already, he handed Hubzilla over to two new developers so that he had time to explore the advancement of the Zot protocol. He still contributed to Hubzilla's development.
In 2019, he wanted to hand Osada and Zap over to the community, now that they were stable, so he had time to develop Zot8. But the Osada/Zap community was so tiny that he couldn't get a new dedicated developer team together.
In 2024, he wanted to hand (streams) and Forte over to the community because fixing (streams)' huge identity bug, which led to Forte's creation, had burnt him out. He wanted to quit. But, again, he couldn't because (streams) didn't have a single user who had both the time and the knowledge to take over as the new main dev.
Consider this: Gargron was a young man when he made Mastodon. I think he was still at university. Mike Macgirvin made Friendica, he had some three decades of professional work in IT and software under his belly. Gargron was at the beginning of his career. Mike had quit and moved from the USA to the western Australian outback where he has been living as a farmer ever since. He might actually be older than Gargron's parents.
while nomadic identitity would be cool thing, currently it does not exist
Nomadic identity does exist. Not as a vague idea, not as a concept on paper, but as a stable, production-grade feature that has been used to its full extent for well over a decade now. Just because Mastodon doesn't have it, doesn't mean the Fediverse doesn't have it. And just because Mastodon doesn't recognise it, doesn't mean it doesn't exist.
The Fediverse has loads of features which Mastodon users want "the Fediverse" to have. It has features which many Mastodon users have never wanted "the Fediverse" to have such as quote-posts, introduced by Mike Macgirvin on Mistpark in 2010. It even has features that are completely and utterly unimaginable for Mastodon users, and it has had even these since as early as 2010, 2012 or 2015.
Nomadic identity was invented by Mike Macgirvin in 2011 with the Zot protocol.
It was first implemented by him in mid-2012 when he rewrote Red against Zot. This means that Hubzilla itself has been offering full-blown nomadic identity since 2012, almost four years longer than Mastodon has existed.
This very Hubzilla channel that I'm commenting from right here, right now, is actually nomadic. It is cloned across two servers: hub.netzgemeinde.eu and hub.hubzilla.de. And it has been since before Elon Musk announced to take over Twitter in early 2022. When I sent you this comment, it was automatically sync'd over to hub.hubzilla.de. When you sent the comment that I'm replying to, it was automatically sync'd over to hub.hubzilla.de. The clone has actually been of great help at least once.
Unfortunately, non-nomadic software identifies cloned channels as fully separate accounts with fully separate identities. But rest assured: @Jupiter Rowland on hub.hubzilla.de is my clone. It's the live, hot, real-time, bidirectional backup of the main instance of my channel, @Jupiter Rowland on hub.netzgemeinde.eu that you're following now. They're both one and the same channel with one and the same identity, jupiter_rowland@hub.netzgemeinde.eu, even though Mastodon is unable to see it as such. Go check both. You'll see they've got all the same content in them, including comments from others. Including your comment. How else can jupiter_rowland@hub.hubzilla.de possibly have one of your comments under a post if you've only sent that comment to jupiter_rowland@hub.netzgemeinde.eu if it weren't for nomadic identity?
Even nomadic identity via ActivityPub is available as a stable, production-grade feature in stable, production-grade software right now as we speak. Forte was the first to be fully nomadic via nothing but ActivityPub, as of mid-August, 2024. Tootik, based on Gemini instead of the World Wide Web, is fully nomadic at server level, too. Mitra is fully nomadic by means of the Minimitra client.
#Long #LongPost #CWLong #CWLongPost #FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Fediverse #Mastodon #MastodonCentricity #MastodonNormativity #QuotePost #QuotePosts #QuoteTweet #QuoteTweets #QuoteToot #QuoteToots #QuoteBoost #QuoteBoosts #QuotedShares #QuotePostDebate #QuoteTootDebate #ActivityPub #Zot #Zot6 #Zot8 #Nomad #Friendica #Red #RedMatrix #Hubzilla #Osada #Zap #Mistpark #Mistpark2020 #Misty #Redmatrix2020 #Roadhouse #Streams #(streams) #Forte #Tootik #Mitra #Minimitra #NomadicIdentity
It's a strange feeling, building something with no one to answer to but the people using it.
No walls to raise. No data to harvest. No quarter to hit.
Just a network of communities that actually belong to the people in them.
Week in Fediverse 2026-07-31
Servers
- Mastodon v4.6.4
- yukimochi/Activity-Relay v2.0.11
- Iceshrimp.NET v2026.1.2-beta
- Mitra v5.8.0
- ActivityPub for WordPress v9.2.0
- Misskey v2026.7.0
- NeoDB v0.17.4
- NodeBB v4.14.5
- Announcing Bonfire for communities: groups and tools to organise together
- bandwagon.fm: July 2026
Clients
- Fedilab v3.43.0
- Pachli v3.8.0
- PleromaFE v2.11.2
- Aria v1.5.10
- Photon v2.4.3
- Rocinante v1.2.0
- FediSuite: Manage all your Fediverse accounts in one place
For developers
- Masto.js v8.0.0
- activitystreams-vocabulary: ActivityStreams 2.0 Vocabulary data structures (Rust)
Protocol
Articles
- Pelago: The Old Man, The Sea, and The Island
- Cooperative Software
- Cacheable Requests for Remote Content
- A newbie's guide to self-hosting: GoToSocial part 1 (installation and set-up)
-----
#WeekInFediverse #Fediverse #ActivityPub
Previous edition: https://mitra.social/objects/019f95f5-5736-7753-8aaa-83f9c26fa07e
27 slides and counting... going to dive into some technical stuff as usual!
I keep saying I should generalize my talks, but alas, here I go again...

I'm looking for a freelancer or org who can help me set two Ghost instances in one virtual server, with ActivityPub. Only setting up the instances and the server, I can handle the web administration.
I'm almost there with the first instance but at every step there is something, I'm not a sysadmin, and I'm losing my patience. 😅 I bet this is straightforward for someone with experience.
I can give you more details -- and see https://the.socialmusic.network/t/a-music-selection-idea-welcomes-your-feedback/854
https://www.thefulcrum.dev/the-programmers-fulcrum-31-july-2026/
🏠 FediHome v1.24.0 is out.
🔒 Two security fixes — worth updating for
🔔 Checks for updates on its own now
🔐 Offers a real password, not a 64-char key
🧹 Notifications clear themselves
Self-hosted. MIT. Yours.
https://github.com/TemujinCalidius/FediHome
When I started the work on ActivityPub projects I fully embraced Maslow's Hammer adage. I wanted as much as possible in my services to go through the #ActivityPub vocabulary and I fully embraced the client to server API.
But there are elements of a web application that require custom functionality no matter what, say changing a password. So for those I just added the capability of running commands through ssh.
My catch-all email address is getting spam emails for accounts on my self-hosted Mastodon instance. The spam scrappers must be confusing federation email-like user@instance account handles as email. #Mastodon #Spam #ActivityPub #Federation #MastoAdmin Anyone with a catch-all box seeing this? Interested if another instance with two or three dozen or more users on their instance is...
I'm so excited by the possibilities of Bonfire. In many ways it seems like a natural extension of one of the key strengths of the Fediverse itself - that different communities can be set up to match the needs and values of those communities, rather than a monolith deciding how everyone should interact.
Now Bonfire extends that beyond just the community rules or basic settings like post length, and into major functionality of instances such as groups, events, videos, you name it. The possibility to expand even further into mutual aid, group decision making, misinformation protection and more is amazing!
Looking forward to playing with Bonfire more and contributing where possible. ❤️
That is very cool!
@angusmcleod is the creator of the current #ActivityPub Discourse plugin, that has become official. But it is still rough around the edges.
The AP community forum #SocialHub doubles as a test deployment for this plugin.
https://socialhub.activitypub.rocks
"What is a forum?" if it were built from scratch for the #fediverse is an interesting exercise.
I've just read Ghost's ActivityPub Integration Feels Half-Baked, by @deadsuperhero
https://deadsuperhero.com/ghosts-activitypub-integration-feels-half-baked/
It was published 7 months ago and I wonder whether anything has changed and/or the future prospects of further development have improved.
It is an important question for me because I'm about to start a new project and I'm still undecided between Ghost and WordPress, and ActivityPub support is key -- see https://the.socialmusic.network/t/a-music-selection-idea-welcomes-your-feedback/854
httpsig.org is a site with one sole purpose, to advocate for the adoption of RFC 9421 HTTP Signatures. It has a "Libraries" tab that does exactly what it advertises, it lists a bunch of libraries for you to use so you don't have to roll your own.
If you want to integrate AP today, but you don't want to roll your own everything, where do you go? Who do you ask?
All I know is:
Do we even have a list sorted by language? This would be huge. What other AP frameworks do you know of?
Granted, I didn't do a lot of thinking and deep diving before I listed those two examples, but even then, that's 1 more example than is listed on https://activitypub.rocks, so I think I might be on to something here from a developer advocacy point of view.
If I were looking to integrate AP, one of the first conclusions I'd come to is that the protocol itself is fairly complex and a library or framework might help.
I don't think there is a list that plainly lists supported libraries by language.