1
0

tl;dr — cross-posting is coming to NodeBB in v4.9.0. It will be internal-only for now, as we work through social issues with federated cross-posting. Existing category sync and auto-categorization logic in NodeBB now utilises cross-posts instead of moving or ignoring categorized topics, respectively.

Some history

For the past couple months, I've been mulling over the idea of cross-posting, and how this would work in a federated forum context. Specifically, I had begun to think more critically about how NodeBB presented itself in the threadiverse (threaded fediverse), and whether what we were doing currently was the right approach.

Somewhere in the v4.1.x releases, NodeBB began supporting a new feature called "category synchronization". It allowed categories to follow other categories, and would move topics from those other categories into a local category. If done in reverse, the both categories could be considered "synchronized", meaning that users on both instances could see, like, and comment on the same topics.

As of v4.3.x, NodeBB gained the ability to actually "see" remote categories. You'd be able to browse to a local representation of something like @fediverse@piefed.social or @comicstrips@lemmy.world and see the posts in those categories as though you were on that site itself. It was a huge jump in how NodeBB treated threadiverse content.

After that point, it became a little weird that category sychronization would move topics from one category to another, because the topic really didn't lose its existing categorization, we simply stole it! When I introduced auto-categorization rules in v4.5.0, I was cognizant of this discrepancy, and avoided complication by ignoring already-categorized topics.

What is cross-posting?

In a nutshell, cross-posting is the ability for a single topic/reply-tree to exist in multiple places simultaneously. Comment trees are shared and accessible from both of those places, and this avoids unnecessary duplication of content across multiple communities.

We see manual cross-posting happening often on the fediverse already, and collapsing these identical items into a single entity would be a boost to discussion as it eliminates the artificial fracturing of comments across multiple disparate posts.

Importantly, v4.9.0 will introduce cross-posting locally only. It means that topics from outside the forum can be cross-posted to an local category, but local topics cannot be cross-posted to remote categories. This is the eventual plan, but we are not there yet! See below ("Why don't cross-posts federate?") for more details.

Cross-posting essentials

Topics will have a new button in the sidebar (or top bar, in the Persona theme) that allows you to cross-post topics to another category. In this dialog, you will be able to choose one or more categories to cross-post the topic to.

8384e3eb-baef-4245-baba-5266dc25008d-image.png

Admittedly, there's not a whole lot of utility in cross-posting local topics to another local category, but it really shines when you crosspost remote topics to a local category.

When a cross-post appears in a local category, a link back to the original category is shown.

f7f870cb-c922-4435-9fe8-337e4b14c87f-image.png

Anyone can cross-post a topic to a local category, but only mods and administrators can remove others' cross-posts.

What of category synchronization and auto-categorization?

The existing features will be updated as follows:

  • Category synchronization logic will no longer move topics from one category to another, they will now be cross-posted and visible in both categories.
  • Auto-categorization rules now apply to categorized content. When a new topic is discovered matching an existing rule, it will be cross-posted to the target category.

Why don't cross-posts federate?

I want to roll out a first-pass at cross-posting as there are immediate benefits for forums and their local categories. Being able to pull in content from other remote categories while respecting their categorization will allow for more increased cross-community engagement and expose remote communities to people who would have otherwise not discovered them.

At the same time, we want to move slowly because there are wide-ranging effects that federated cross-posting could bring about. Namely, if anybody is able to cross-post anything anywhere, then it would enable brigading because different communities with (sometimes very) different values would suddenly co-exist in the same space, leading to some very negative interactions.

Additional questions exist, such as:

  • Who gets to moderate the discussion?
  • How are reports handled in cross-posted topics?
  • Does a cross-post need to be approved?
  • How do we express these using ActivityStreams vocabulary?

I certainly don't have all the answers as to how to best approach it, but it is something we at the @forum-wg would love to tackle at some point.

What's next?

Other threadiverse software (Lemmy, Piefed, mbin) don't handle cross-posting, and there are no immediate plans to support it. Piefed does have something similar (called "Topics", akin to Reddit multi-reddits) which can contain posts from multiple communities. Both Lemmy and Piefed attempt to automatically collapse comment trees when identical links are discovered. Moving forward we may want to coalesce toward a single desired behaviour, but whether cross-posting is it, is to be determined.

Additionally, NodeBB doesn't have the concept of "boosting" (also known as resharing, reblogging, etc.) It does do something similar when topics are moved between categories, and so it would make sense that a cross-post would be the forum equivalent of a reshare.

Cross-posting is currently being tested on activitypub.space, and should be generally available as of NodeBB v4.9.0.

2
0

I'm happy to announce that I have tagged the latest commit in the activitypub branch as v4.0.0-alpha. That designation means (mostly symbolically) that we have moved past the "proof-of-concept" stage of ActivityPub research and development, and into the alpha phase.

This release has been a long time in coming. Work on the ActivityPub integration back in late 2023, although work accelerated around February of this year. The initial idea was to create a proof-of-concept build of NodeBB that could communicate with other fediverse apps, and federate local content outwards for other applications to consume.

As it turns out, it is difficult to temper your expectations when using a protocol with implementations that expect richer compatibility than one can provide! It seemed like a disservice to only offer a minimal subset of expected features, and so we started a deeper integration into ActivityPub with the aims of providing full user-to-user following, notifications, and two-way communication.

In the interim, FediForum happened, causing us to once again re-evaluate our short-to-medium term plans. Devs from NodeBB and Discourse, along with many other interested parties, formed the SWICG Forum and Threaded Discussions Task Force, which aims to promote the use and broader acceptance of threaded discussions as a modality of communication, as opposed to the expected "microblogging" format.

What this release contains

The alpha build contains a fully-capable ActivityPub server instance, including:

  • Two-way follow relationships between local and remote users
  • Two-way communication with fediverse content
  • A dedicated page (/world) to view remote content that is not organized into local categories
  • Categories followable from the fediverse (via FEP 1b12)
  • Integration with local flagging tools (reports sent to originating server)
  • Server-wide domain blocks (allow/deny list capability)

What this release does not contain

  • Support for emoji (images are federated out, which are sometimes stripped)
  • Support for non-public notes, as NodeBB does not currently have the facility to maintain or display them. Research on this problem is ongoing.

Roadmap

Now that the alpha has been tagged and released, I will be making our working roadmap public → you can take a look at it here

I will be starting a new backlog/roadmap for beta items, and existing backlogged items will be carried over.

Final Thoughts

We wouldn't have even thought to implement ActivityPub if it were not for the funding granted to us by the NLNet foundation. They allowed us the runway to pursue the necessary R&D work, and we're pleased that everything has been pointing positively so far!

This entire time, it has been particularly satisfying to continually see the integration working on this instance (the NodeBB support forum). Expanding the reach of NodeBB beyond the confines of the "local" mindset and into the "global fediverse" mindset has been daunting, but is well worth the price of admission.

I'm happy to also say that now that we've proceeded to the alpha stage, it signifies a commitment toward a beta phase, then an RC, and then towards the release of NodeBB v4. ActivityPub has legs, and we're invested in making it work!

ActivityPub

0 readers
1 users here now

Focused discussion related to ActivityPub integration in NodeBB

founded 2 years ago