julian

@julian@activitypub.space · Joined ⁨Aug⁩ ⁨2025⁩

Co-Founder (NodeBB) | Husband 🤷‍♂️ and Dad 🙉 to three | Rock Climber 🧗‍♂️ | Foodie 🥙 | Conductor 🎵 | Saxophonist 🎷

✅ Small teams craft better code.
🇨🇦 Made in Canada
🗨️ Federating NodeBB with funding from NLNet ♥️🇪🇺

Replying to @⁨julian@fietkau.social⁩

@julian@fietkau.social ah, of course @smallcircles@social.coop has a list for it. That's quite handy, thanks both!

fietkau.socialJulian Fietkau (@julian@fietkau.social)4.59K Posts, 1.7K Following, 1.32K Followers · Human-computer interaction #HCI, computer science & programming, home server & self-hosting, games and other fun stuff. Fediverse tool builder: @encyclia@fietkau.social, @canary@correct.webfinger-canary.fietkau.software, FediRoster, Pinhole, ... see https://fietkau.software/tag/fediverse for more. I also help out with @fedidevs@fosstodon.org. If you do HCI-related research, check out https://directory.hci.social. He/him. Posting mostly in English, but you might see the occasional German boost.

Replying to @⁨mariusor@metalhead.club⁩

@mariusor@metalhead.club makes sense. It seems like even for some frameworks, depending on libraries for trickier bits is a better idea in the long run.

Metalhead.clubmarius (@mariusor@metalhead.club)7.44K Posts, 853 Following, 1K Followers · Mostly a programmer. Implementing #ActivityPub in the #Go programming language. Current projects: * #GoActivityPub - a library to use ActivityPub in Go. * #FedBOX - a generic ActivityPub service supporting the client to server API. * #brutalinks - a link aggregator inspired by (old) reddit, hacker news and lobste.rs built on top of FedBOX. * #oni - a single user ActivityPub server with minimal fuss.

Replying to @⁨julian@activitypub.space⁩

Tagging @j12t@j12t.social as this might be something worth discussing in relation to activitypub.rocks

Johannes' Mastodon placeJohannes Ernst (@j12t@j12t.social)2.52K Posts, 1K Following, 1.95K Followers · Engineer, founder, organizer. Let's put people back in control of their technology. The Open Social Web is a good start. Also wondering aloud where we are taking this planet. Check out my home page for more info and links. tfr

Reflecting on the existence of httpsig.org

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.

www.rfc-editor.orgRFC 9421: HTTP Message Signatures This document describes a mechanism for creating, encoding, and verifying digital signatures or message authentication codes over components of an HTTP message. This mechanism supports use cases where the full HTTP message may not be known to the signer and where the message may be transformed (e.g., by intermediaries) before reaching the verifier. This document also describes a means for requesting that a signature be applied to a subsequent HTTP message in an ongoing HTTP exchange.

Edge case when backfilling topics

When it comes to backfilling topics, NodeBB utilises what is called "context collection backfill" instead of reply-chain traversal. In a nutshell, instead of crawling up and down the reply tree one-by-one — kind of like what Mastodon does currently — it checks for a canonical source-of-truth in the context property.

NodeBB supports both strategies, since not all objects contain context.

I found a fun little edge case where if I start a topic, a reply is received, and that reply points to my instance, it won't catch any replies made in between.[...]

In other words:

localA starts topic → remoteB replies → remoteC replies to B only → remoteB replies to C and A

In this scenario, because my instance A is left out of the third activity, I don't know about it. When the fourth activity appears, the context is checked, C's reply isn't in it, and I proceed without knowing about it. Oops!

In this case, when incoming replies reference a context that is same-origin to your own instance, you should not use context collection backfill, because:

  1. You already have the entire context, so it's unnecessarily duplication of work
  2. You won't catch any replies made out-of-band unless you do reply-tree traversal

Tagging @silverpill@mitra.social because this is related to FEP f228.