With https://discover.holos.social we may have highlighted that many Fediverse users don't pay attention to their default settings. We built a fully respectful search engine that only relies on #ActivityPub, with instant deletion, updates, and indexing only consenting users. We will likely shut down the service, but the source code will remain available as we believe the approach is ethical. That same indexable setting already lets Google index your posts and keep them cached long after deletion.
Has anyone figured out how to use ActivityPub to make something IRC or Discord shaped?
The Future Is Federated
...
And will be federated for the amazing work of the amazing people in the fediverse.
One of my fav photos from #fosdem2026
Sweater by @_elena, photo by @sturmsucht
Anyone in my followers list on a server that has secure fetch enabled? I want to use it to test my proxyUrl implementation for client to server #ActivityPub. :D
Anyone in my followers list on a server that has secure fetch enabled? I want to use it to test my proxyUrl implementation for client to server #ActivityPub. :D
The Future Is Federated
...
And will be federated for the amazing work of the amazing people in the fediverse.
One of my fav photos from #fosdem2026
Sweater by @_elena, photo by @sturmsucht
there is currently a #Piefed Hackathon going on if anyone is interested in partaking. There are groups working on spanish, german, french and japanese translations, and a bunch of other things.
https://tarte.nuage-libre.fr/c/fediverse/p/221411/hackathon-this-week-7-8-febuary #fediverse #fedidev #activitypub
Portable #ActivityPub objects with server-independent IDs https://codeberg.org/fediverse/fep/src/branch/main/fep/ef61/fep-ef61.md
My fosdem talk is up!
I make a case for more platforms to support the ActivityPub client API, and how we should look beyond microblogging for future growth of the ‘verse
https://fosdem.org/2026/schedule/event/QK7XSV-activitypub-c2s/
RE: https://social.coop/@django/116019244368171843
Dear #Fediverse developers, please do more cool things with #ActivityPub C2S.
Just note that "Direct Messaging apps" are way more complex than you might realize and that #XMPP has solved most of the problems you might encounter.
Fun! Wired up my GoToSocial bio to my Eleventy site at build time. Update my ActivityPub bio → site rebuilds → geff.re stays in sync automatically.
- GoToSocial instance (id.geff.re) holds my canonical bio
- Eleventy global data file (_data/bio.js) fetches bio from API.
- Github Secret injected into the build env / ‘dotenv` for local dev
Static sites don't have to be static data. 😬
@hongminhee I'm reading this thread as a relative noob, but what I see again and again: almost no one "properly" implents #ActivityPub largely because #JSONLD is hard but also because the spec itself is unclear. Most people who get stuff done have to go off-spec to actually ship.
This seems a fundamental weakness of the #fediverse - and that disregarding the limitations coming from base architecture. Seems to pose a mid/long-term existential threat.
What can we do to help improve things?
I have deeply mixed feelings about #ActivityPub's adoption of JSON-LD, as someone who's spent way too long dealing with it while building #Fedify.
Part of me wishes it had never happened. A lot of developers jump into ActivityPub development without really understanding JSON-LD, and honestly, can you blame them? The result is a growing number of implementations producing technically invalid JSON-LD. It works, sort of, because everyone's just pattern-matching against what Mastodon does, but it's not correct. And even developers who do take the time to understand JSON-LD often end up hardcoding their documents anyway, because proper JSON-LD processor libraries simply don't exist for many languages. No safety net, no validation, just vibes and hoping you got the @context right. Naturally, mistakes creep in.
But then the other part of me thinks: well, we're stuck with JSON-LD now. There's no going back. So wouldn't it be nice if people actually used it properly? Process the documents, normalize them, do the compaction and expansion dance the way the spec intended. That's what Fedify does.
Here's the part that really gets to me, though. Because Fedify actually processes JSON-LD correctly, it's more likely to break when talking to implementations that produce malformed documents. From the end user's perspective, Fedify looks like the fragile one. “Why can't I follow this person?” Well, because their server is emitting garbage JSON-LD that happens to work with implementations that just treat it as a regular JSON blob. Every time I get one of these bug reports, I feel a certain injustice. Like being the only person in the group project who actually read the assignment.
To be fair, there are real practical reasons why most people don't bother with proper JSON-LD processing. Implementing a full processor is genuinely a lot of work. It leans on the entire Linked Data stack, which is bigger than most people expect going in. And the performance cost isn't trivial either. Fedify uses some tricks to keep things fast, and I'll be honest, that code isn't my proudest work.
Anyway, none of this is going anywhere. Just me grumbling into the void. If you're building an ActivityPub implementation, maybe consider using a JSON-LD processor if one's available for your language. And if you're not going to, at least test your output against implementations that do.
@hongminhee I'm reading this thread as a relative noob, but what I see again and again: almost no one "properly" implents #ActivityPub largely because #JSONLD is hard but also because the spec itself is unclear. Most people who get stuff done have to go off-spec to actually ship.
This seems a fundamental weakness of the #fediverse - and that disregarding the limitations coming from base architecture. Seems to pose a mid/long-term existential threat.
What can we do to help improve things?
Fun! Wired up my GoToSocial bio to my Eleventy site at build time. Update my ActivityPub bio → site rebuilds → geff.re stays in sync automatically.
- GoToSocial instance (id.geff.re) holds my canonical bio
- Eleventy global data file (_data/bio.js) fetches bio from API.
- Github Secret injected into the build env / ‘dotenv` for local dev
Static sites don't have to be static data. 😬
🛠️ Code Contributor – Badgefed
The verified Badge was issued to @Damian Fajfer
You've rolled up your sleeves and made the fediverse a better place—one commit at a time. This badge is awarded to those who improve the BadgeFed project's source code, squash bugs, or add new features.
Earning Criteria: Must have at least 1 merged Pull Request to the Badgefed project repository. PR must be substantive—examples include:
* Fixing a reported issue.
* Adding tests or improving test coverage.
* Implementing a feature or enhancing functionality
* Improving accessibility, performance, or localization Must follow the project’s contributing guidelines and pass all code reviews and CI checks.
Badge is granted upon successful merge and verification by a project maintainer.
--
https://github.com/tryvocalcat/badgefed/pull/24.
Issued on: 01/18/2026 18:25:23
Accepted On: 01/18/2026 18:27:30
Verify the Badge here.
RE: https://badgefed.org/grant/badgefedorg_135_8_81bd973ba9611087987c50769193a675
@fajfer has helped #badgefed by deploying it to its first Kubernetes environment, smoothing out the rough edges to make it work properly, and now I’m proudly quoting his badge to test quotes!
Comment if you can see this quote in #mastodon!
I have deeply mixed feelings about #ActivityPub's adoption of JSON-LD, as someone who's spent way too long dealing with it while building #Fedify.
Part of me wishes it had never happened. A lot of developers jump into ActivityPub development without really understanding JSON-LD, and honestly, can you blame them? The result is a growing number of implementations producing technically invalid JSON-LD. It works, sort of, because everyone's just pattern-matching against what Mastodon does, but it's not correct. And even developers who do take the time to understand JSON-LD often end up hardcoding their documents anyway, because proper JSON-LD processor libraries simply don't exist for many languages. No safety net, no validation, just vibes and hoping you got the @context right. Naturally, mistakes creep in.
But then the other part of me thinks: well, we're stuck with JSON-LD now. There's no going back. So wouldn't it be nice if people actually used it properly? Process the documents, normalize them, do the compaction and expansion dance the way the spec intended. That's what Fedify does.
Here's the part that really gets to me, though. Because Fedify actually processes JSON-LD correctly, it's more likely to break when talking to implementations that produce malformed documents. From the end user's perspective, Fedify looks like the fragile one. “Why can't I follow this person?” Well, because their server is emitting garbage JSON-LD that happens to work with implementations that just treat it as a regular JSON blob. Every time I get one of these bug reports, I feel a certain injustice. Like being the only person in the group project who actually read the assignment.
To be fair, there are real practical reasons why most people don't bother with proper JSON-LD processing. Implementing a full processor is genuinely a lot of work. It leans on the entire Linked Data stack, which is bigger than most people expect going in. And the performance cost isn't trivial either. Fedify uses some tricks to keep things fast, and I'll be honest, that code isn't my proudest work.
Anyway, none of this is going anywhere. Just me grumbling into the void. If you're building an ActivityPub implementation, maybe consider using a JSON-LD processor if one's available for your language. And if you're not going to, at least test your output against implementations that do.
If decentralization is the future of social media, where millions or even billions of people share knowledge, then we can learn a lot from how the Open Knowledge Foundation ( @okfn) and the Wikimedia Foundation ( @wikimediafoundation) built cross-border, international movements with clear missions.
These two organizations are just two examples, but they demonstrate an important point: decentralization worked because communities were intentionally nurtured, not just because the technology was open.
The Fediverse, powered by the ActivityPub protocol, already has the technical capacity to thrive (UI tweaks aside).
What we still lack is the decentralization of communities, including shared ownership, coordination, and a mission that extends beyond individual instances.
Cc @eloquence @bjoernsta @_elena
#Fediverse #ActivityPub #Openknowledge #Wikimedia #Decentralization #SocialMedia
If decentralization is the future of social media, where millions or even billions of people share knowledge, then we can learn a lot from how the Open Knowledge Foundation ( @okfn) and the Wikimedia Foundation ( @wikimediafoundation) built cross-border, international movements with clear missions.
These two organizations are just two examples, but they demonstrate an important point: decentralization worked because communities were intentionally nurtured, not just because the technology was open.
The Fediverse, powered by the ActivityPub protocol, already has the technical capacity to thrive (UI tweaks aside).
What we still lack is the decentralization of communities, including shared ownership, coordination, and a mission that extends beyond individual instances.
Cc @eloquence @bjoernsta @_elena
#Fediverse #ActivityPub #Openknowledge #Wikimedia #Decentralization #SocialMedia
My fosdem talk is up!
I make a case for more platforms to support the ActivityPub client API, and how we should look beyond microblogging for future growth of the ‘verse
https://fosdem.org/2026/schedule/event/QK7XSV-activitypub-c2s/
RE: https://social.coop/@django/116019244368171843
Dear #Fediverse developers, please do more cool things with #ActivityPub C2S.
Just note that "Direct Messaging apps" are way more complex than you might realize and that #XMPP has solved most of the problems you might encounter.
Loops now supports FEP-3b86: Activity Intents ✨
If you have a Loops.video account, try it out:
https://loops.video/intents/follow?object=https://pixelfed.social/loops
