


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 β₯οΈπͺπΊ

[email protected] that's cool, so hopefully I'll have something to test against besides another NodeBB server π

[email protected] no, I haven't read that actually! I did now and I'm feeling a bit reassured that I came to the same solution, although it's currently high level and theoretical.
That there's an FEP written for it is great as well. Are there any existing implementations of this FEP?
As an aside, my forum hadn't seen your post before, so when it pulled it in it automatically back filled all of the comments too, because [email protected] added support for 7888/f228 awhile back! Neat to see it outside of a testing context (no pun intended) heheh.

Idle thought re: account delegation
I've been toying with the idea of using OAuth2/OpenID and the C2S API to have a service act on behalf of another instance (e.g. act on Lemmy, post as Mastodon account)
But now I'm wondering whether that kind of complexity is needed... one could theoretically register a public key to the instance it is acting on behalf of, and simply sign activities using the ID of the other server... Second server would need only update the actor with the new public key for verification purposes...

[email protected] NodeBB supports topic based following, because it's a forum and that's literally how it was done way back then.
You can follow tags as well.

Loops is newly funded, so that round is still active. I still wouldn't get hype about it until it happens though! π

Unfortunately it actually isn't. NodeBB (me!) and Discourse are the only two forums that federate.
NodeBB has full two-way support with discovery features, Discourse is mostly broadcast-style (i.e. you can't find Lemmy posts from Discourse)

ska there is an issue with category sync with Lemmy, since they do not support categories following their communities.
https://github.com/LemmyNet/lemmy/issues/5354
I'll have to take a closer look at Peertube.
Are you able to follow those users using your local account, not via the ACP?

Furbland-Channel-2 could have a follow request time out after some time...?

[email protected] CTV SciFi is still an add-on channel, which is unfortunate for freeloaders like me (I use an antenna which probably makes me a crusty old fart.)

Theoretically, it shouldn't matter.
In the ideal case every connected server should host a full and complete copy of the data from the originating server (as [email protected] says, that's B)
Reality is a bit different, but not enough to warrant always picking B. Just share whichever you'd like, but B is the most right.

ForumWG cancelled this month (July)
Apologies again for cancelling the WG meeting again, as I have a conflict with another meeting held at the same time.
We'll reconvene in August!

> We have the potential to create something far more human and revolutionary than any of the ad-based mainstream platforms.
Right on! That's the refrain I hear a lot from people who discover ActivityPub and then build software for it.
Building something out of principle is a wonderful approach. I hope someday were in a position so that you don't have to sacrifice principles to make money.

What drew you to ActivityPub?
This question was asked by [email protected] on Dot Social's latest episode about the blogosphere on Fedi.
[email protected]: "we wanted to connect Ghost blogs to each other, but then we discovered ActivityPub"
[email protected]: "we wanted to connect WordPress blogs to each other, and ActivityPub has been the most successful attempt"
[paraphrased for brevity]
Did you catch the subtext? Both those answers, and my own answer with NodeBB contain the same seed idea... that we originally wanted to connect our software with itself only. We went through years of building a company and vying for profitability that it never occurred to us to work towards cross compatibility with anyone besides out own software.
Then ActivityPub came along and quite literally expanded the pote

Yes. When the reply is posted to C, it is sent to A. A then sends as:Announce
to C, as well as any other communities that follow it.
B seems to be irrelevant here.

Hi! We should chat.
NodeBB also does this, and currently still does. A category (group actor) can follow another category (also a group actor).
It essentially is synchronization of categories using 1b12.
Proof of concept does work but it needs reworking in some ways. The largest issue is that Lemmy itself doesn't understand when a group actor tries to follow a community.

Tell me about it! There are some very cool people (i.e. [email protected]) working on content classification and tagging so that the burden of filtering out this kind of content isn't borne by server admins directly.

[email protected] personally, since I create AP enabled software I am on the side of votes being public data. We already have enough issues with votes being out of sync with each other. Mixing in private voting is just asking for trouble.
Emoji reactions are neat, although niche to those softwares that utilise it. They allow for greater expression which is nice. They're useless for deriving value (for ranking purposes) unless you assign value to them.

Does anyone remember way before Google had image recognition technology, the time they built a game that paired up random people on the internet, showed them each an image, and waited for them to both guess the same keyword?
It was gamified human powered taxonomy for meaningless internet points and it was hilarious (at the time.)

[email protected] A little bit, yes! There was a recent thread in the community I posted to where a discussion about the rather lacklustre search of various software took place.

Search sucks! Yeah, it does, and here's why.
You might've heard that search sucks on software X... maybe software Y... definitely on software Z. The default one kind of sucks on NodeBB too, admittedly.
But why? It's because search is really frickin' hard to get right, and expensive to get good at.
Remember that Google started as a search company, and they became king because they got really good at it, and it was their only product (at the time, anyway!)
The easiest type of search is "full text" search. It matches words exactly based on what you type in. For example if you search lemmy
it would match posts that include the word lemmy
but depending on how the content was indexed, might not match lemmy.world
, lemmy.ca
, lemmyverse
, etc.
From there you start adding complexity like supporting AND
and OR
. You support partial matches (lem
returns posts containing lemmy
and lemmings
).
Add more logic to remove stop words and articles like a
, the
, etc.
Put in some sorting logic to rank stuff higher (what's

Very interesting article! I have immense respect for [email protected], he was one of the first people I found on the fediverse, and it's no wonder why, he's revered quite highly by others as being a generous and kind admin.
I do want to point out one thing, and that is that Mastodon has some design decisions that make it rather resource and storage intensive.
There are oodles of lighter software out there, some with even more features than Mastodon, and some with less. For example, snac.bsd.cafe (https://snac.bsd.cafe/) runs on Snac, which is fast as hell.
I am going to guess that a not insignificant portion of Jerry's bill is caching assets. Mastodon likes to save everything it encounters, videos, images, avatars, everything... forever (though I imagine this is customisable). Most likely the assets are viewed a handful of times in one day and never seen again... but you'll pay to store it forever!

Thanks! It's something that I personally feel is more performant and future proof for other important things like private discussions (which Mastodon also doesn't support natively yet β mention spamming doesn't count.)

Sure, check out my post about it here:
https://community.nodebb.org/topic/18844/backfilling-conversations-two-major-approaches
There are steps being taken in the right direction.

Lemmy and lots of other software use a fediverse extension called 1b12 to keep everything in sync.
In a nutshell it means Lemmy communities can follow other communities, and they keep each other in sync. The same applies for other types of communities, like PieFed communities, Mbin magazines, NodeBB categories, etc.
Mastodon doesn't have a concept of community or categories, so they don't support this kind of synchronization.

Backfilling Conversations: Two Major Approaches
In February 2025, I presented a topic at FOSDEM in Brussels entitled The Fediverse is Quiet β Let's Fix That! In it, I outlined several "hard problems" endemic to the fediverse, focusing on one particular complaint that is often voiced by newcomers and oldtimers alike; that the fediverse is quiet because you don't ever see the full conversation due to some design considerations made at the protocol level.
Since then there have been a number of approaches toward solving this problem, and it is worth spending the time to review the two main approaches and their pros and cons.
N.B. I have a conflict of interest in this subject as I am a proponent of one of the approaches (FEP 7888/f228) outlined below. This article should be considered an opinion piece.
Crawling of the reply tree
First discussed 15 April 2024 and merged into Mastodon core on 12 Mar 2025, [[email protected]](https://community.nodebb.org/user/jonny%4

ForumWG canceled this month (June)
Due to a conflict with FediForum (running 5th to 7th June), the ForumWG will not be meeting. Additionally I am away for most of June so cannot reschedule the meeting for later this month.
I will be at FediForum to re-introduce the ForumWG and highlight what we've accomplished this past year, as well as to hopefully draw in some new interested parties.

Fun with Federation: Lemmy edition
It all started with a report about federation breaking between Lemmy and NodeBB. I was subconsciously aware that something was going on, but had chalked it up to network issues.
Observed behaviour showed that some remote categories would be receiving content in spurts, with long gaps in between.
I spent the next 3-4 days looking into it, but came up empty. Whatever was happening wasn't throwing any obvious errors, and along the way, I found what I thought was related (it was), but I wasn't sure why: against some Lemmy servers, the "follow"/"unfollow" mechanic would simply stop working, and this would often coincide with gaps in content. In some egregious cases, the flow of content stopped completely!
Unable to make headway, I had to reach out to the folks at Lemmy to figure out what the issue was. NodeBB occasionally sends non-200 level response

The backlog was bigger than I expected...

Speed run through the fediverse baby!

Unicode in handles
I'm assuming Unicode in handles is not allowed? At least by Mastodon.
This user is not able to have their content federated because the username is all Hebrew (I think?) characters!

Automatic category/community assignment on received object
I'm wondering how content on threadiverse is automatically assigned its community when received by the software (e.g. PieFed, Lemmy, Mbin).
The answer I am expecting is "if the community is addressed (to
, cc
, audience
), then it is slotted into that community".
However that causes issues for compatibility with microblogs... for example, [email protected] recently authored a post that mentioned [[email protected]](https://community.nodebb.org/category/[email protected])
and it got slotted into that community on NodeBB, which isn't correct since that group is private.
Better practice would be to only trust the addressed community if it is Announce
'd by the community directly, but would fall short if my instance does not receive the Announce
(say, if nobody follows the community), in which case we'd fall back to "uncategorized", which is where all microblog posts currently go. Then i

Pleroma Webfinger compatibility
Does anybody know what exactly Pleroma needs for a valid Webfinger check? I'm attempting to figure out why @[email protected]
won't resolve in NodeBB, and it's because the webfinger call returns 400 Bad Request
.
NodeBB is calling https://pleroma.debian.social/.well-known/webfinger?resource=acct%3Ajmtd%40pleroma.debian.social
with User-Agent
and Content-Type
headers (curiously, it's not sending Accept
, but it also fails if that header is set, so that's irrelevant.)
Navigating to that webfinger url in the browser returns XML, which is :grimacing: but I'm not even getting that when NodeBB makes the call.

What would cross-posting between instances look like in ActivityPub?
Following up on this question I asked back in late March, I wanted to continue thinking about how one would handle cross-posting between categories/communities, given that there isn't current consensus on it, and especially given that NodeBBβas of v4.3.0βcan now see and browse remote categories.
From that original topic, we can distil the following:
- Both PieFed and Mbin do not natively handle cross-posts, a new entity is made with the crucial bits (link, text, possibly title) copied over and changed if needed, sometimes a "cross-posted from..." helper text is prepended.
- There are legitimate concerns that a cross-post might not succeed depending on privilege settings on the receiving end, so a pre-flight check (or explicit rejection) of some kind might be required.
- Cross-posting can be done by the or

Updates to the world page


tl;dr β you can now find remote categories and see your tracked/watched categories in /world
.
A new alpha version of NodeBB was tagged today: v4.3.0-alpha.3. The biggest change is to the /world
route, which up until now showed a list of topics from outside of the local NodeBB instance.
New to this alpha release:
- A quick search widget was added, allowing you to directly search for remote categories. There is no need to navigate to to the search page to discover new categories.
- Your list of tracked and watched categories will show at the top of the page.
- "Tracking" and "Watching" categoriesβboth local and remoteβis how content discovery happens in NodeBB. Tracked categories will have new content show up in the "unread" page, while watched categories take that a step further and notify you when new content is posted.
- Tracking and watching a category will tell NodeBB to subscribe to that remote community for updates
At this time we're continuing to l

Agenda Prep for April 2025 WG Meeting
Agenda preparation for the April ForumWG meeting can be found at this public link (anyone can make comments for review.)
Monthly meetings are held on the first Thursday of each month, at 13h00 to 14h00 Eastern Time (currently 17h00 to 18h00 UTC). You can find them listed in the SocialCG Calendar. The next meeting will be held on 3 April 2025.
We will be discussing:
- Review of brainstorm/whiteboarding session from March
- Context Ownership
- Brainstorm use cases/user stories
- Moving objects (between contexts) and moving contexts (between audiences)
- Relies on context ownership βFEPβ
- Brainstorm use cases/user stories
- Support for multiple objects (forking)?
- Same origin only? Support moving objects/contexts between instances? Different FEP?

Moving topics
Within the context of threaded discussions, contexts (aka "topics", "posts", "threads", etc.) are associated with an audience (aka "forum", "category", "community", etc.).
What happens currently when a context is moved from one audience to another? How does ActivityPub enabled software communicate this?
I recently moved this topic from one category to another, and in doing so, realized that I have absolutely no idea what happens to the group association as seen by other software.
@[email protected] also said in the other thread: > Also moving what NodeBB calls a topic (a post in Lemmy/PieFed) from what NodeBB calls a category (community in Lemmy/PieFed) into a different category (without spawning a new topic or leaving the old copy behind) is much needed but not implemented in Lemmy/PieFed/Mbin.
One solution would be to fe

How do PieFed/Lemmy/Mbin handle cross-posting?
tl;dr β how do PieFed/Lemmy/Mbin handle cross-posting?
Currently, when a NodeBB admin moves a topic from the uncategorized pseudo-category into a local category, we federate out an as:Announce
, people typically think of that as a "boost" or "share".
That worked fine when the entirety of the category list was your local categories plus the "uncategorized" pseudo-category. However, now that NodeBB is moving towards supporting remote categories (via group actors), this UX makes less sense. We wouldn't want to "move" a topic out of the category it is supposed to be in, just for visibility to other local users. Additionally, topic moving was limited to administrators, and from the get-go we knew it would eventually cause issues because people other than admins would want to share topics to other local users.
This is where the "cross-post" functionality comes in, which is entirely new to NodeBB. I don't think this is new to other AP-enabled threaded discussion software. The idea w

Are Flipboard collections(?) AP groups?
Hey @[email protected], are Flipboard collections (or are they magazines? I forget the term!) federating out as as:Group
? I'm wondering whether it would be possible for NodeBB to load them in as categories, and be able to browse them natively...
I'm just not able to easily find them in the Flipboard UI right now, but I'm relatively new at using the app :)

Live testing of remote categories


Happy Tuesday!
Today we've updated the NodeBB community forum onto the remote-categories
testing branch, which means that users on the open social web that identify themselves as "Groups" will be rendered in NodeBB as categories. Prior to this, they looked like users.
Here are some examples of remote categories:
- Comic Strips (on lemmy.ml)
- Star Trek Social Club (on startrek.website)
- Social Web Foundation (a WordPress blog)
ActivityPub "groups" and forum categories have quite a few things in common β they don't usually post topic themselves, they "contain" topics, and they are usually administered by a separate group of users (moderators!) In many ways, these groups lend themselves to categories much more easily than they do as users.
Notes:
- We will likely be releasi