Today's the day! :tada: After nearly a full year in development, NodeBB v4.0.0 has landed, bringing federation between NodeBB instances (and a connection to the wider fediverse of social media) to forum software. ## Fedi-what? [Fediverse! Here's a TechCrunch primer about it](), but at the end of the day, *it doesn't really matter*. All you need to know is that NodeBB plugs in to a wider social network so that **you** don't have to cultivate an audience, _they're already there_. ## The genesis It was back in mid-2023 when I had the initial idea of interconnecting NodeBB forums. Back then, I had far smaller ambitions... I wanted a singular NodeBB to be able to communicate with other forums running NodeBB. To do that, we'd need to build out a centralized service to act as a bridge between instances, and corresponding slim clients on individual installs to consume the relayed data. At the time, concept like decentralization were not even part of my thought process. It was during this period when I was doing my research that I stumbled on Mastodon, and later, ActivityPub, the protocol that powers it all. Since then, it's been one wild ride getting NodeBB to speak the same language. ## Funding Soon after dipping my toes into all that Mastodon had to offer, I discovered the NLNet Foundation, and their corresponding fund โ€” **NGI Zero Core**. With the promise of funding, NodeBB could fully commit to implementing the protocol in short order, instead of piece by piece over time. We sent in an application and were delighted to be approved for the August 2023 call. Their funding was instrumental in providing the financial stability to experiment with ActivityPub and to participate in developer circles, such as the SWICG, FediForum, and much more. The fund continues to operate, [perhaps you could benefit](), or [donate to the cause](). It has certainly made a difference to NodeBB. ## Federate, or not, it's your choice NodeBB v4 comes shipped with the capability to interact with other NodeBB forums and any other ActivityPub-speaking software, right out of the box. We opted to make this a core feature instead of a plugin, since there were many changes made to core to support even the concept of accepting content from outside itself. To that end, any users upgrading from v3.x will automatically have federation disabled, in order to reduce surprise. Any new forums **will federate automatically**. You can turn federation on and off (and adjust some other fun toggles) directly from `ACP > Settings > Federation (ActivityPub)`. Even after turning federation on, how you _use_ it shapes how well connected you will be. There is no centralized authority artificially boosting your content, so the name of the game is establishing two-way follow relationships to other sites. ## The ActivityPub Equalizer We're not alone in this journey to interoperate with other decentralized services. We're not even the only forum software to attempt to do so. * Discourse has a working plugin. * Ghost is building out in the open. I specifically highlight these two because they both started in the early 2010s, same as NodeBB. It's always been a bit of an informal competition between us, and we always checked in on what the others were doing (growth-wise, pricing-wise, etc.) Truth be told, I don't think the ghost team ever really noticed NodeBB, but I digress... The funny thing about ActivityPub is that at the end of the day, the overarching goal of seamless communication breaks down any barriers between competing organizations. NodeBB and Discourse have been vying for the exact same market share (forums, community-building, self-started or enterprise) for over 10 years, and it was only after ActivityPub came around that the dev teams even started talking to one another. Funny how that works. ## So how does it all work? [Our documentation portal]() has been updated with the latest information about the ActivityPub functionality in v4. If you have any questions about how it works or how to configure some aspect of it, please don't hesitate to reach out in the [corresponding v4 support thread](). If you run NodeBB, the quickest way to see this in action is to upgrade to v4, and then paste [this post's URL]() into your search bar. It should show up automatically, and you should be able to read and reply to it, directly from your own forum. Neat!
Here is a new topic for testing @npub1zvhp...wqrp @npub1sydl...57g8 @npub13qlk...hl2h Perhaps it's because the old topic was already existing? Fingers crossed it makes it over the bridge. A like from bsky made it over here.
ActivityPub introduced to NodeBB the concept of sharing/announcing/boosting, and we enthusiastically supported this as a method of content discovery. While we were processing these activities (and publishing our own), we weren't actively tracking them internally. That has changed in the latest commits (soon to be RC5); shared content from both local and remote users are tracked internally and can be viewed in the user profile. For example, [here is c/comicstrips from lemmy.world](https://community.nodebb.org/user/comicstrips@lemmy.world/shares). As it is a Lemmy **community**, it only shares content, and does not produce any of its own. Here is a quick recap of how sharing is handled in NodeBB: * When remote users boost/repost content, NodeBB interprets this as a share. * When local NodeBB admins move topics out of "uncategorized" and into a category, it is interpreted as a share and this activity is federated out to the admin's followers. At this time unprivileged users cannot share content.
[Agenda preparation for the November 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 1700 to 1800 UTC. You can find them listed in the [SocialCG Calendar](). The next meeting will be held on 7 November 2024. We will be continuing onwards with: * discussions regarding context resolution. Multiple FEPs touch on the subject and there is an opportunity for potential convergence towards a single (or pair) of FEPs that share enough commonalities to allow for interoperability. * updates by WG members re: non-`as:Note` support in Mastodon and the Social CG report draft * whether a resolvable context collection containing plain objects should also contain activities (like an outbox) As always โ€” time permitting โ€” if you'd like to speak or inquire about a certain topic, comment in the agenda or reply here, the floor is open!
**tl;dr** โ€” you can now send me DMs. I blatently and unforgivingly abused the NodeBB chat system to make this work. ---- Ever since I started this project at the start of 2024, I knew that posts with limited visibility were going to be a sore spot. ActivityPub has the concept of "addressing", with the following valid entries: * An actor (`as:Person` or similar) uri * A followers collection (?!?!?!) * The public collection However, posts and topics in NodeBB have their privileges and access scoped to _the category_, which meant that while it is able to restrict visibility/posting/etc. to specific users, the system was not flexible enough to handle _individual posts_ with different user visibilities. Given that limitation, up until this week, if your object did not contain the public collection `, it was automatically and unceremoniously dropped because there was no way NodeBB could display it to the targeted user without leaking it to other users. I had [gone through a couple iterations to try to figure out a way to make this work](), but none stuck (see the follow-up technical post for more details), and I had just about relegated it to the "think on this for awhile" pile until a recent post by @scott@authorship.studio got me thinking outside of the box: > and your forums, **direct messages**, and inbox can have different feature sets. Emphasis mine. Unlike topics and posts, NodeBB's chat system is not constrained by the privilege system, and each chat room has its own collection of members, which in many ways made it a *better* fit! I put together a proof-of-concept in a couple days, and we're test driving it now. So my apologies if in the past year you tried to DM me, and I didn't respond. I wasn't ignoring you, NodeBB just didn't know how to handle it, promise!
TIL that when you send Mastodon a mentioned-only note, all HTML tags are stripped. Just... _whyyyyyy...._
The minutes from yesterday's *Forum and Threaded Discussions Task Force* monthly meeting can be found [at this Google Docs link]() *Apologies in advance if I misrepresented anybody or missed any crucial bits of information.* ---- Of note: ## Mastodon and its treatment of non-note items * Darius Kazemi (@npub1fd2l...f2f9) reports that Hometown already supports improved conversion of non-note items (like `as:Article`) into statuses, and that this serves as a working proof-of-concept towards getting this merged upstream into Mastodon proper. * We discussed briefly the Mastodon PR approval process and how it sometimes drives away contributions * Darius emphasized the importance of showing real user support to facilitate the merging of pull requests. ## Context Collections and FEP Convergence * Julian proposed consolidating various FEPs (7888, 400e, 171b) to publish a unified recommendation. * Evan (@Evan Prodromou) objected to the use of the "context" property in FEP 7888, advocating for a new vocabulary instead. * The discussion included differing views on the utility of the context property and its historical usage. * Darius utilized his data observatory (TBD) data set to hopefully prove that `context` is not a properly currently seeing any usage. ## "Convenings" and Collaboration Initiatives: * Darius, representing the Applied Social Media Lab, proposed organizing physical meetings to enhance interoperability in the fediverse. * He will provide a blog post detailing the ActivityPub Data Observatory and related goals. ## [ActivityPub Trust & Safety Task Force]() * A new task force will focus on protocol-level issues within ActivityPub, including proper content warnings and labeling. * Meetings are tentatively scheduled for the second Tuesday of each month (starting November), with a [call for input on scheduling]().