ActivityPub

0 readers
3 users here now

Focused discussion related to ActivityPub integration in NodeBB

founded 5 months ago
1
 
 

Note that I said "quoted posts", not "quote posts", don't @ me!

After the last WG meeting @thisismissem@hachyderm.io @trwnh@mastodon.social and I chatted a bit about how NodeBB handles quoted posts, but also in relation to quote posts. I thought that it was an interesting chat that merited further discussion; also because some of it was over my head.

When asked how NodeBB handles blockquotes specifically, I replied that blockquotes themselves are rather simple. We set a copy of the text wrapped in <blockquote>.

The rationale is simple: forums typically represent content in a linear fashion, and quoted posts are a handy way to reinforce subcontext within a topic. A typical topic/thread could have many separate discussions all happening together (aka thread drift), so quotes help others know what you're responding to. We don't have special handling or references to our blockquotes because there is a history in forums of edited blockquotes.

Perhaps you want to have a block quote and add some emphasis?

It's also better netiquette (god, that term is old) to trim down the quote to only the relevant parts.

Another upside is that a copy-paste of a post preserves that post to history. That can be useful if the quoted user tries to edit their post later, etc.

vis-a-vis the concept of "quote posts", which I take to mean an embedded post within a post, allowing for replies, likes, etc. How that is represented via ActivityPub is probably detailed in some FEP, but NodeBB doesn't implement that yet. It's a more complicated mechanism that requires a lot more thinking through, and to be honest, we haven't had the need for that in the 10+ years we've been building NodeBB.

2
 
 

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!