We just released version 4.1.0 of NodeBB. Here are the latest features you can now take advantage of!
As an aside, for the first time in a long while, both @baris and I are working on the same codebase again. Up until version 4 was released, I’d been working on the activitypub
branch and periodically merging in the latest changes from develop
. It’s nice to be home! :house_with_garden:
Improved federation of Group actors :left_speech_bubble:
We’ve improved the activity synchronization for followed group actors. Local updates/likes/etc. are now federated outward by the category in addition to those from remote users. Thanks to @[email protected] and @freamon who worked with me on debugging this one.
Mentions and Emoji now federating out in source.content :wave:
Emoji and mentions have been sent out to followers since v4, but that wasn’t reflected in the raw markdown content that we also send along. That has been remediated now, and this change improves nodebb-to-nodebb federation.
Video
object type now parseable :tv:
NodeBB is now able to ingest Peertube Video
objects, and render then in a topic just like other pieces of content. Thanks @[email protected] for prodding me to get this sorted out!
Does nodebb support following/joining federated communities? And does it support switching to a threaded view?
I made a post about this, where I tried to post into a Lemmy community and it didn’t arrive https://github.com/NodeBB/NodeBB/issues/13218 The example is contained in this thread https://community.nodebb.org/topic/18647/the-state-of-conversational-contexts-february-2025/24
Filtering goes :snail: when you have a topic with 50k posts, and adding a new zset means adding 2 actually because there is sort by timestamp and sort by votes for topics.
Yeah there is a config property
config.showNestedReplies
https://github.com/NodeBB/NodeBB/blob/master/public/src/client/topic/replies.js#L40, it is not exposed anywhere but a plugin can set this totrue
infilter:config.get
and that would cause more than one level of replies to show up. However the posts all show up at the top level in chronological order, since core adds everything at the top level(tid::posts
) and then adds it topid::replies
if it is a reply to a specific post.@baris could we theoretically load only top-level replies by:
- filtering
tid::posts
(expensive), or - maintaining a separate zset (lighter, but yet another zset to maintain)?
- filtering
@[email protected] Following groups on other sites works well. The current default theme doesn’t do visual threading, but reply relationships are maintained and linked. QuickReply kind of quietly discourages direct replies to comments, though, so I imagine many users - especially those new to the bulletin board experience - may end up replying to OPs, especially without a threaded UI.
I’m sure there’s nothing stopping someone from making a threaded theme, though.
@[email protected] there is some active discussion around how to better represent federated communities. The current iteration of NodeBB will bring them in as regular user accounts that can be followed, and this is tested and working with Lemmy and PieFed, primarily.
@Kichae, two things:
-
You’re right, and I’ve brought that up internally. It’s difficult to justify the change in UX, but there may be a way to support both UX flows with the addition of a checkbox that adjusts
toPid
/inReplyTo
. The downside of that is the whole point of the quick-reply box is to actively limit the number of visible controls :smirk: -
A threaded view is difficult because it is not scalable, at least with the way our current backend is built out. We load topics page by page, which means every page is loading in
O(x*n)
time¹, wherex
is the number of posts. If we wanted to load a threaded view, we’d have to query every single post and build the threaded relationship on-the-fly, since we don’t maintain that in the backend, and that’s…O(a lot more)
²
There is a way we can approximate the threaded UI, but @baris and I haven’t played around with it for a couple years…
¹ I am not well-versed in computer science so I may be wildly wrong about this ² very scientific, yes.
If threading isn’t built-in, it could indeed be problematic. But Lemmy solved it and postgres (if you’re using it) does have solutions for tree structures. Personally, ltree is a favourite, however it does lock you into postgres. Recursive queries are supported by mariadb and other databases, but I don’t know about their performance.
In any case, if it’s ever implemented, nodebb would be a nice alternative to Lemmy (at least to test).
@julian Personally, I find the reply list – and especially the new auto-quote back-references – a more than sufficient solution, but then I don’t think threaded discussions are a value-add to the bulletin board experience.
It’s just not part of the expected UX, and kind of breaks the BB UX, which has always been built on the expectation of reverse-chronological posting. Not that I don’t understand the utility, or someone having the preference. Threading is now ubiquitous on other social modals. It’s become part of the design language of Web 2.0.
Some platforms that use threading now only load the first couple of levels of replies. I wonder if that’s something that’s currently possible via theme work, or if a plugin would be required, or even if work on core would be necessary. Or if some sort of popup modal that loads threads might be viable? Solutions that wouldn’t require the threads to be pre-loaded.
@Kichae the workaround that @baris and I played around with (very) briefly involved the “x replies” expando button.
I think there were some rather simple adjustments made to load only one level at a time, and that was essentially the “threaded” view.
I don’t remember the details any more, perhaps he does.
-
Thank you for explaining. I think I’ll wait for a threaded theme or an instance using it. It would be cool to use a Lemmy alternative to explore its features.
Same thing, no video on restart.
Restart from admin panel or stop and start from cmd on server?
@bh4-tech either
@julian Is Video support limited to just Peertube videos? Asking this because, a video post on threads renders properly on mastodon and kokonnect(misskey fork) but only the text is displayed and not the video on my nodeb instance running 4.1.0. The post is https://www.threads.net/@b4htech/post/DGmUEn7y76q?xmt=AQGz1bBLfaQf_DsxBxScCQa7LxwcwQD3CSh5bf7j8nU0fA
Below attached are the screenshots of the above post on- 1)
mastodon
2)
kokonnect
3)
My nodebb instance https://ekk.app
@bh4-tech might be a caching issue. Any chance you can restart your NodeBB and see if the link shows up?
Right now the video player won’t embed, but the minimum should be a link.
@julian Consider adding
.mention
class to mentions in HTML content. Some clients transform such links into internal links.@[email protected] ironically we do add that class in NodeBB, but we explicitly strip out all custom class names because there’s no guarantee that recipients would know how to handle it.
Since a
.mention
has no standardized meaning, I opted to remove it for federated content.Also mentions can be detected in content as they’re explicitly defined in the payload.