


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 ā„ļøšŖšŗ

@AltCode right, I think the issue here is that the posts themselves do not contain a backreference to the magazine they were posted to.
So for example, their latest post has addressed the following:
undefined
... "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [ "https://flipboard.com/users/theverge/followers" ], ...
... note that the magazine itself is not included, and so when NodeBB receives the object, it does not know to slot the topic into the appropriate category.
cc @[email protected] again about this one :smile:

@AltCode This should be fixed in the upcoming v4.3.0.
https://github.com/NodeBB/NodeBB/issues/13352
It won't proactively remove the duplicates, but they'll be pruned out within ~7 days.

@AltCode that user and the category are (I think) separate actors. I'm not sure what the user does, shares its own posts, possibly... but like you said, nobody follows that user so I suppose that's why there's not much shown as shared either.

It's pretty wild how wide-ranging these tariffs affect small scale manufacturers with in and out of the United States.
I've been hearing scattered reports across different industries all saying the same thing:
- They have 60 days or less of inventory remaining.
- They cannot order more because nobody Stateside will pay for those items at prices increased to offset the tariffs.
For companies with razor thin margins, even 1% changes the calculus. A 145% tariff is already well over the point of no return.

@AltCode I think it's just Flipboard, right?
It might be because of the issue mentioned upthread where items shared by those groups don't have a back reference to the itself so it isn't slotted in it.
They might all just be uncategorized instead. Can you find those items when you search their url or id in the NodeBB search bar?

@[email protected] that's the main thing for me too. That news orgs, political agencies, and corporations use Xitter to communicate is the real travesty.

@[email protected] very slowly for quite a while.

@[email protected] oh sure, bit of a pot calling kettle black situation though.

:grimacing:

@[email protected] have you tried navigating directly to the url without the preceding @
? It isn't required (for NodeBB).
In cases where the category is currently a user, you'll have to put the whole handle into the search box and execute the search, the category will then be migrated from the user.

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

@[email protected] it is! The in-development stuff I'm working on makes it much easier to post directly to a Lemmy community.
This is probably the first, yes. It was also a bit of a live test at the same time.

Let's clarify something here. Mastodon follower only posts don't have the "public pseudo user" addressed, do they?
That's the important piece that this whole thing hinges upon
If it is present, Mastodon is a fault. If not, Pixelfed messed up.
Am I mistaken?
For example, a followers-only post is addressed to the followers collection of the author, at minimum. When NodeBB sees this, it doesn't even consider it public, because the public pseudo user isn't addressed. We also have no concept of "followers only", but we handle them just fine.

@[email protected] as I learned, the latterākai oatsāis Canadian.

A note that the ForumWG meeting is scheduled to begin shortly: https://meet.jit.si/ap-forum-wg

@[email protected] it's been a long road, gettin' from there to here

@AltCode all three flipboard remote categories seem to be working now :joy:

The remaining questions here are:
- whether
preferredUsername
is meant to be unique to the instance (in which case having multipleid
s point to an identicalpreferredUsername
would be a violation), and - what exactly AP software should do when it encounters this situation... store a list of "known alias" IDs? There are potential security issues to doing so.

@AltCode I forked this out to a new topic. I think it's time to loop @[email protected] into the conversation (at the very least so this could be potentially escalated).
Mattias, it seems that when the WPML and ActivityPub plugins are enabled together, notes federated out by the blog user in another language have different id
s but the same preferredUsername
.
e.g. [email protected]: https://vivaldi.com/?author=46
and https://vivaldi.com/ja/?author=46
NodeBB interprets this as two different users. Curiously, Mastodon does not, the second ID explicitly does not resolve.
So there can be two solutions here:
- The underlying issue can be fixed by WordPress, the solution of which is out of scope (for me at least)
- NodeBB can adopt whatever mechanism Mastodon is using... which is most likely that Mastodon does a two-way when asserting an ID, and ensures that the webfinger resource points to the ID.

@AltCode okay! Thanks for reporting, it sounds like there are two issues going on:
- Categories losing their handle-to-id association
- Frustratingly, this read very similarly to #13283, and both remote users and categories share similar logic. I have so far not been able to reproduce it at all on local development.
- Separate users (different IDs) sharing the same
preferredUsername
.- This is an interesting one, and I am not entirely sure where the fault lies. I wonder how other software handles it?

@[email protected] that's because Discovery is just bad fan fiction.
It makes Enterprise worth watching.

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

Forum specific UX for remote categories
The upcoming possibility of browsing to remote federated categories/communities has me thinking about interesting use cases for it.
Note that Lemmy, PieFed, mBin, and other "community-centric" software already do support this, so it's nothing new, I'm actually playing catch-up.
One interesting use case centers around NodeBB's /unread
route, which tracks new topics since your last visit. Since ever, and even now in v4, this is only for local categories, but if you're able to "subscribe" to a remote category, then we could enable use of this page for that content too.
Think about waking up and seeing a self-curated feed of new content from your subscribed communities! There are some interesting parallels to RSS here, too.
What other forum-centric use cases do you think would be enhanced by the ability to browse remote categories?

Signifying an audience in an object (PieFed/Lemmy)
Hi @[email protected]/@freamon and @[email protected] āI'm working (not-so-secretly) on refactoring NodeBB so that it is able to "browse" remote audiences/group actors, and that would include things like PieFed and Lemmy communities.
N.B. Given varied nomenclature (group/category/community/subforum), the ForumWG calls this structure an "audience".
Where I am at now is working through the logic for slotting an object into a category.
The most obvious choice here would be to look at as:audience
. It's even specified in 1b12, and the majority of threaded implementations follow 1b12.
I am making this post because nutomic explicitly removed the audience
from being served in Lemmy (as of January this year), so I don't think relying on that property would be wise.
I asked

Mainstream adoption of ActivityPub vs. DIY indie hacking
@[email protected] recently made a statement that got me thinking about our place in the open social web, and the direction it's going.
He says to @[email protected] and @[email protected] re: SXSW
> #FediverseHouse this feels like an irrelevant echo chamber, I really miss the grassroots #DIY that built this space in the first place. This #maistreaming is too much noise vs signal... currently the grassroots #DIY space is a hollow shell
(two posts combined)
That immediately got me on edge as someone new to ActivityPub in 2024. Does this mean I'm "mainstream", and somehow "bad"?
Mainstream adoption is good and a step in the right direction. I personally think ActivityPub isn't ready for general mainstream consumption, but we as a group are ra

Minutes from 6 March 2025 WG Meeting
March 2025 ForumWG Minutes
Apologies in advance if I misrepresented anybody or missed any crucial bits of information.
- Julian provided a brief summary of the state of conversational contexts
- two-pronged approach: top down (feps), bottom up (implementors)
- IceShrimp.NET (waiting and watching)
- Already exposes context collections, integration testing pending
- Mitra
- Implemented (top-level only) context collections of objects, tested and working
- Julian said 7888 is object-based contexts, 171b is activity-based contexts and notes that activity-based context can be more comprehensive (incl. likes, reactions, updates)
- a (@[email protected]) notes that 7888 is more generic and doesn't specify object-vs-activity; notes there is also a missing link between an object and its
Create
act

Agenda Prep for March 2025 WG Meeting
Agenda preparation for the February 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 18h00 to 19h00 UTC). You can find them listed in the SocialCG Calendar. The next meeting will be held on 6 March 2025.
We will be discussing:
- Housekeeping
- Daylight savings time Monday, ForumWG meetings track Eastern Time
- EST ā EDT (lose one hour)
- Update ā State of Conversational Contexts (Julian)
- https://community.nodebb.org/topic/18647/the-state-of-conversational-contexts-february-2025
- IceShrimp.NET (waiting and watching)
- Already exposes context collections, integration testing pending
- Mitra
- Implemented top-level context collections of objects, int

Recommend object URL should 301 to AP resource
Wanted to start a convo with @[email protected] from Ghost and @[email protected] from Discourse about AP resource discovery.
A common use case from fediverse users is to be linked out to a site, and attempt to "bring it in" to their local instance/app of choice. This is done by taking the browser URL and pasting it into their site/app's search bar, or equivalent.
For example:
- Ghost: https://activitypub.ghost.org/warp-factor-5-mr-sulu/
- Discourse: any forum topic
For context, last night I discovered that Ghost's latest blog post didn't make it into NodeBB, due to a bug on my end. I attempted to resolve it via URL but there was no AP resource at that URL. I ended up having to query the instance actor (which I happened to already know), and looking at the outbox.
To my knowledge there is no way to find a Discourse post

NodeBB on FediDB
Hey @[email protected], can I poke you about getting NodeBB on FediDB?
It automatically picked up a couple NodeBB sites, so I think the nodeinfo stuff is working, just not sure if it required some manual intervention on your end to get the software link working ā it currently 404s.
Cheers :flag-ca:

The state of conversational contexts (February 2025)
A conversational context is what the ForumWG uses to describe what you might see as a reply tree or comment thread. One of the short-to-medium term goals of the ForumWG is to get conversational backfill working reliably.
What this means ā conversational backfill means that when you encounter a post/status/note/etc. (e.g. you're mentioned or boosted/shared something), there is a reliable and comprehensive way to retrieve the entire conversation around it, so you are not interacting with the object on its own, but in its proper context with all its sibling replies.
We plan to achieve this with a combination of a top-down (FEP-driven) and bottom-up (implementor-first) approach. While this sounds incongruent, top-down approaches tend to overcomplicate and bottom-up approaches tend to violate the protocol (unintentionally of course :joy:.)
There are a number of independent top-down efforts to achieve this:
- [FEP-7888: Demystifying the context property](https://community.nodebb.

New federated testing instance for NodeBB
For awhile now we've hosted https://try.nodebb.org/ as our demo instance for people to see a plain NodeBB instance.
I have added a federated category on that instance now. You can of course still make test posts to this instance, but you can also feel free to fill @[email protected] with garbage instead :laughing:
Please note that the "try" instance of NodeBB is reset every 24 hours, which means all follow relationships, content, etc. will only last at most that long. If you follow the category or an account on that instance, those categories/users will "forget" you followed them.

FEP 7888 serving up an OrderedCollection
Just wrapped up a call with @[email protected] and @[email protected] to review their implementations of FEP 7888, specifically in relation to conversational backfill.
:heavy_check_mark: individual objects serve a context
property
:heavy_check_mark: that context
property is a URL that resolves
One of the concerns raised was related to the OrderedCollection of items served by the context
. Specifically, if the items presented in the collection were not in chronological order, NodeBB failed at importing some of the items as the inReplyTo
referenced an object that did not exist.
The solution to this was to ensure that the collection items were in chronological order from oldest to newest. Once fixed:
:heavy_check_mark: the context resolved to an OrderedCollection containing objects :heavy_check_mark: NodeBB was able to pull in

Minutes from 13 February 2025 WG Meeting
The full minutes from the Forum and Threaded Discussions Task Force monthly meeting (held on 13 February) can be found at this Google Docs link
Apologies in advance if I misrepresented anybody or missed any crucial bits of information.
February 2025 Minutes
- The meeting was deferred a week due to Julian being out of the country, but this time conflicted with the Geosocial TF and perhaps it would be easier to just skip the month instead.
- Julian attempted developer outreach in the weeks leading up to FOSDEM (and at FOSDEM), specifically relating to FEP 7888 and resolvable contexts.
- Much of the feedback revolved around the perceived complexity of the FEP
- A separate attempt to focus more on outcomes (e.g. conversational backfill via 7888) led to more positive feedback
- This led to the desire to modify FEP 7888 away from being a (perceived) monolithic FEP into a

1b12 vs Guppe groups
@panos brought up something interesting recently, which is that Lemmy communities don't boost everything (at least when viewed from Mastodon), but just the original post.
I wasn't sure whether this was intentional (because 1b12 definitely specifies that everything is boosted, replies and all). The only explanation I can think of is that 1b12 boosts activities, and Mastodon doesn't understand that, so it's actually an implementation quirk that causes Mastodon to not actually see the entire conversation.
NodeBB used to Announce(Note)
and Announce(Create(Note))
, and it meant that Mastodon was seeing everything. This was desirable from a synchronization standpoint, but it meant everything was going into Mastodon user feeds, which was @panos' concern.
I think Guppe (which is kind of like 1b12? Not sure) boosts everything, but again, am not 100% sure.