January Update on ActivityPub Development
-
Hello everybody!
As January draws to a close, I often wonder where the time went. It seems like just yesterday that we celebrate the arrival of 2024
My last update announced the green-light from the NLNet Foundation pertaining to the research and development of ActivityPub integration into NodeBB. Not much happened on that front leading up to the new year, as we were not certain whether any R&D carried out prior to the signing of any agreement would count.
However, you might've noticed that since the holidays, there has not been much output from my end, even though @baris has been committing features and fixes to NodeBB as usual. I'm happy to report that as of the new year, work on that front has begun on the ActivityPub integration, and we are hoping to have an alpha release by the end of the first quarter, but ideally sooner.
While I don't have anything major to share right now, I can share some preliminary information:
- The work is carried out in the
activitypub
branch, which is tied to this particular pull request: https://github.com/NodeBB/NodeBB/pull/11580 - The branch is not anywhere near a state that would be called production-ready, so I would kindly ask that you not attempt to use it yet.
- We are aiming for a full two-way communication between ActivityPub instances. This end goal means that we would not consider the integration finished until you were able to participate in the Fediverse/Social Web directly from NodeBB itself.
- Users here would be able to follow users on other ActivityPub-enabled services, and vice versa
- Topics posted in a NodeBB forum would be visible on other services and users outside of that forum would be able to comment directly without needing to sign up for an account
- Users, Categories, Topics, and Tags can be followed by NodeBB users, and we'd like to extend this to remote users as well. At minimum we'd expose the ability to follow users and categories, and being able to follow topics would be ideal.
- Currently:
- A lot of the foundational work for support is complete (http request signing/verification, special endpoints for identification, etc.)
- Two-way follow relationships are supported
- Incoming content is parsed into topics and shown in the
/world
timeline - Creating a new topic broadcasts it to any remote followers
How would this look to an existing forum?
Right now, a forum contains a set of categories, containing topics, containing posts. This rigid hierarchy allows for organization of topics and posts pertaining to the overall subject of the forum community.
This method of organization is part of what makes forums powerful, and allows for information to not only be stored, but curated. The information contained in a forum is meant to be preserved, not lost, and we don't want to move away from this paradigm either.
Integrating the wider social web into a relatively smaller community is a difficult process that has many potential effects, both positive or negative. While we're still at the start of exploring what this means, here's what I can see at this point in time:
- In addition to the collection of categories (e.g.
/categories
, naturally), there will be a new page specifically for content from outside the forum. - That page will be called
/world
, and content retrieved from the social web would be shown here as a collection of topics. - ActivityPub allows for content to be addressed to specific people (e.g. followers, individuals, etc.), and so accordingly, there would likely be a
/world/me
route that would show a list of topics specifically pertaining to you. - We'd likely add a new pseudo-category called "Uncategorized", that all remote topics would fall under. If a topic pertains to an existing category, a user would want to "share" that topic with another category, at which point it would show up in that category's topic list just like any other topic created locally.
What if I don't want to participate in the social web?
An issue I revisit often is the matter of user consent for publication in the wider fediverse. What does federating content mean in an era of GDPR, and how will NodeBB handle it?
All very good questions.
During active development, the global ActivityPub toggle would remain switched off. Once we are confident that our implementation is stable, we would switch the default on for all new installations of NodeBB.
It would mean that existing forum installs, even after upgrading to "v4" would not federate their content out unless this switch is toggled.
Whether we extend this choice down to the user level is a question that I do not yet have an answer to.
The concept of the fediverse/social web is not new. In fact, the ActivityPub protocol itself started around the same time as NodeBB did!
We're hoping to be on the forefront of the next revolution of social communication. Join us on this adventure!
- The work is carried out in the
-
Amazing news. Regarding extending the choice to user level - I won't pretend to know how these decisions are made. However, I feel like this would be an admin decision to open up their server or not, informed by the majority of users.
I would expect users in a publicly indexed forum (such as this one) should not mind whether someone reads their content while on this domain, or in another domain.
(Just my two cents)
Edit: Maybe one question to ask - how would reputation gating work with activity pub?
-
@The-SkyFoxx said in January Update on ActivityPub Development:
I would expect users in a publicly indexed forum (such as this one) should not mind whether someone reads their content while on this domain, or in another domain.
That is my thinking as well. Selfishly, allowing individual users to opt out of federation would also potentially introduce gaps in a reply chain, which is not ideal
Reputation is a local mechanic that has no social web equivalent, so it would not be federated. Upvotes from remote users would affect local reputation score, and I think remote users would gain/lose reputation relative to the local board, if that makes sense.
So a highly regarded user on another ActivityPub enabled site joining a discussion on a NodeBB forum would start at 0 rep.
-
@julian said in January Update on ActivityPub Development:
So a highly regarded user on another ActivityPub enabled site joining a discussion on a NodeBB forum would start at 0 rep.
That makes sense. Otherwise some ActivityPubs could be gamified to be 'reputation farms', to allow users to enter others with high starting reputation.
-
Great news, but could we have a simple Share to Mastodon button before all that?
-
@Jakub-Urbanowicz said in January Update on ActivityPub Development:
simple Share to Mastodon button
This should be possible through a plugin. NodeBB exposes the sharing step to developers
-
@julian said in January Update on ActivityPub Development:
That page will be called /world, and content retrieved from the social web would be shown here as a collection of topics.
Would there be some sort of filter for
/world
? For example, a NodeBB forum dedicated to Math would be interested in displaying similar discussions in/world
, but not from ActivityPub social nets about other subjects - e.g. Cooking.Maybe #hashtags or some other filter available in admin?
-
@The-SkyFoxx Think of
/world
being your personal feeds, but with conversations automatically collated into topics. You'll see content based on who you decide to follow, but it might not necessarily be related to the overall topic of the forum.The easiest way to think about it would be:
- Mastodon home feed >
/world
- Mastodon public feed >
/world/all
/world/all
would contain all of the content that is known to that NodeBB forum based on everybody's follows.If a topic in
/world
relates to the overall forum subject (e.g. Math), then you could move that topic in to one of the local categories so it can be seen by other users on the forum. Most likely I would make this look like a boost/announce on the fediverse.Details on that last paragraph are in flux and may change
- Mastodon home feed >
-
@julian great work julian! thanks a lot...
I have a question, after these developments, will I be able to go to another forum in the same protocol and comment or ask question as "crazycells@community.nodebb.org" ?
-
@crazycells said in January Update on ActivityPub Development:
go to another forum in the same protocol and comment or ask questio
Yep. See here:
January Update on ActivityPub Development:
topics posted in a NodeBB forum would be visible on other services and users outside of that forum would be able to comment directly without needing to sign up for an account
-
@The-SkyFoxx thanks, I assumed so, but wanted to double check.
because there is difference between going
.../world
and replying a post or going another nodebb website and replying without registering... -
-
@julian said in January Update on ActivityPub Development:
If a topic in /world relates to the overall forum subject (e.g. Math), then you could move that topic in to one of the local categories so it can be seen by other users on the forum. Most likely I would make this look like a boost/announce on the fediverse.
I guess a plugin with the filter hook would allow admins to filter
/world
by hashtags, if they feel the need to. -
@The-SkyFoxx said in January Update on ActivityPub Development:
I guess a plugin with the filter hook would allow admins to filter /world by hashtags, if they feel the need to.
Practically it may be a little more involved, but I think we'd end up with something along those lines.
There aren't any plugin hooks exposed in the AP logic at present but they can always be added as needed.
-