ActivityPub

0 readers
2 users here now

Focused discussion related to ActivityPub integration in NodeBB


This is a forum category containing topical discussion. You can start new discussions by mentioning this category.

founded 2 months ago
1
 
 

The upcoming possibility of browsing to remote federated categories/communities has me thinking about interesting use cases for it.

Note that Lemmy, PieFed, mBin, and other "community-centric" software already do support this, so it's nothing new, I'm actually playing catch-up.

One interesting use case centers around NodeBB's /unread route, which tracks new topics since your last visit. Since ever, and even now in v4, this is only for local categories, but if you're able to "subscribe" to a remote category, then we could enable use of this page for that content too.

Think about waking up and seeing a self-curated feed of new content from your subscribed communities! There are some interesting parallels to RSS here, too.

What other forum-centric use cases do you think would be enhanced by the ability to browse remote categories?

2
 
 

Hi @andrew_s@piefed.social/@freamon and @nutomic@lemmy.ml โ€”I'm working (not-so-secretly) on refactoring NodeBB so that it is able to "browse" remote audiences/group actors, and that would include things like PieFed and Lemmy communities.

N.B. Given varied nomenclature (group/category/community/subforum), the ForumWG calls this structure an "audience".

Where I am at now is working through the logic for slotting an object into a category.

The most obvious choice here would be to look at as:audience. It's even specified in 1b12, and the majority of threaded implementations follow 1b12.

I am making this post because nutomic explicitly removed the audience from being served in Lemmy (as of January this year), so I don't think relying on that property would be wise.

I asked in that issue whether Lemmy finds community via to/cc (it does). Does PieFed do the same?

Would this also open up the possibility of a topic/context being part of multiple audiences/communities? Interesting...

3
1
submitted 1 week ago* (last edited 1 week ago) by eeeee@community.nodebb.org to c/activitypub@community.nodebb.org
 
 

I followed mander@medicine.xyz from my account on this instance, and another nodebb instance. This one shows Following, the other shows pending! Follows dont need acceptance do they, why the difference? 1000042774.jpg 1000042776.jpg

Also, why a settings icon only on my nodebb instance?!

4
 
 

@hamishcampbell@mastodon.social recently made a statement that got me thinking about our place in the open social web, and the direction it's going.

He says to @deadsuperhero@social.wedistribute.org and @evan@cosocial.ca re: SXSW

> #FediverseHouse this feels like an irrelevant echo chamber, I really miss the grassroots #DIY that built this space in the first place. This #maistreaming is too much noise vs signal... currently the grassroots #DIY space is a hollow shell

(two posts combined)

That immediately got me on edge as someone new to ActivityPub in 2024. Does this mean I'm "mainstream", and somehow "bad"?

Mainstream adoption is good and a step in the right direction. I personally think ActivityPub isn't ready for general mainstream consumption, but we as a group are rapidly closing the gap and I'd much rather continue building momentum instead of waiting for the opportune moment.

Here's the hot take that I was going to originally write, but thought came off as too combative:

> It sounds like you feel like ActivityPub development only counts when you're toiling away in obscurity.

As someone who's hacking away on a platform that hasn't been "mainstream" for over a decade (forum/BBS software), I bristle at the notion that what I do doesn't count as grassroots or DIY. You don't have to be the perpetual underdog to do good in the world.

I might be wrong, but it sounds like Hamish feels like big players are coming in and taking the ball away... that big players' clout and presence takes away from the attention that smaller DIY projects receive.

Maybe... but if the fediverse is 100x larger with a big player, and they take 99% of the eyeballs, have they really taken anything away from you?

5
 
 

So I was wondering if there was a way for me to have a Category follow a federated account.

I can't seem to find the way to do it if that's possible.

But optimally the category would post a topic related to the new posts the followed account would post. Or something like that.

6
 
 

Wanted to start a convo with @johnonolan@mastodon.xyz from Ghost and @angus@socialhub.activitypub.rocks from Discourse about AP resource discovery.

A common use case from fediverse users is to be linked out to a site, and attempt to "bring it in" to their local instance/app of choice. This is done by taking the browser URL and pasting it into their site/app's search bar, or equivalent.

For example:

For context, last night I discovered that Ghost's latest blog post didn't make it into NodeBB, due to a bug on my end. I attempted to resolve it via URL but there was no AP resource at that URL. I ended up having to query the instance actor (which I happened to already know), and looking at the outbox.

To my knowledge there is no way to find a Discourse post or topic's AP resource ID without having a local Discourse account.

Would it be possible for you to send back an HTTP 301 Moved Permanently (or similar) if the Accepts header contains one of the AP-related types?

N.B. This probably has some overlap with @evan@cosocial.ca's HTTP Discovery Task Force, a 308 is recommended there.

7
 
 

Hey @dansup@mastodon.social, can I poke you about getting NodeBB on FediDB?

It automatically picked up a couple NodeBB sites, so I think the nodeinfo stuff is working, just not sure if it required some manual intervention on your end to get the software link working โ€” it currently 404s.

Cheers :flag-ca:

8
 
 

For awhile now we've hosted https://try.nodebb.org/ as our demo instance for people to see a plain NodeBB instance.

I have added a federated category on that instance now. You can of course still make test posts to this instance, but you can also feel free to fill @federated@try.nodebb.org with garbage instead :laughing:

Please note that the "try" instance of NodeBB is reset every 24 hours, which means all follow relationships, content, etc. will only last at most that long. If you follow the category or an account on that instance, those categories/users will "forget" you followed them.

9
 
 

The logs from this are already cleared on my server, but when I sent a private message (standard Create/Note with a single recipient who also has a Mention in the tag property) from my custom software to my account here, I received a 500 error saying something like "cc is not iterable" (though I don't know the exact phrasing). When I included cc as an empty array, it started working. Not sure whether it was missing on Create or Note, maybe it was both.

10
 
 

@panos brought up something interesting recently, which is that Lemmy communities don't boost everything (at least when viewed from Mastodon), but just the original post.

I wasn't sure whether this was intentional (because 1b12 definitely specifies that everything is boosted, replies and all). The only explanation I can think of is that 1b12 boosts activities, and Mastodon doesn't understand that, so it's actually an implementation quirk that causes Mastodon to not actually see the entire conversation.

NodeBB used to Announce(Note) and Announce(Create(Note)), and it meant that Mastodon was seeing everything. This was desirable from a synchronization standpoint, but it meant everything was going into Mastodon user feeds, which was @panos' concern.

I think Guppe (which is kind of like 1b12? Not sure) boosts everything, but again, am not 100% sure.

11
 
 

I was looking at this post from my own forum (nBB 4.0.3) via various vectors, and trying to pull it in from here resulted in a couple of hiccups.

  1. Searching the posts community.nodebb.org URL did not pull the post and its comments. Naturally, searching the original URL works fine (though does not fetch the comments, naturally)
  2. Fetching my comment from that post does fetch the post and full comment chain, but your comment, @julian, is surprisingly empty (link)

6b4f9509-8c7a-4705-9a27-40476dccfebb-image.png

Just thought you'd like to know.

12
 
 

PieFed is very similar to Lemmy, but with a couple small differences that a couple people prefer. It seems to be retrieving the community okay, we'll see if this post goes through.

13
 
 

Previously discussed, it takes a while to follow a set of people who might post on the topic of your forum. Having done that, and got an interesting World feed, its a shame that isnt available to new users

Suggestion, World category has MyWorld, and World tabs Where World follows Admins followings, and MyWorld shows post from the users followings

Hence new users get access to a World feed which is already populated. It would make the most of this feature, that is completely empty for new users, who probably wont have any idea how to start getting posts in there

14
 
 

@activitypub Hey, thanks for the awesome ActivityPub support!

It has been working great so far on our forum at fbrc.nodebb.com, with two exceptions. I don't know if these are bugs or if they fall in NodeBB scope or not, figured I'd report them here:

  1. Alt text not transferring to Mastodon. This post has alt text in NodeBB (I think), it's not showing up when viewed via Mastodon web UI: https://community.nodebb.org/category/30/activitypub
15
 
 

Among the fediverse there are microblogs (your Mastodons, Misskeys(+forks), etc.

Then there are the long form peeps. We managed to all find each other at FOSDEM 2025.

Pictured is @matt@writing.exchange (Write freely), @pfefferle@mastodon.social (WordPress), and yours truly (NodeBB). We also had some good conversations with @johnonolan@mastodon.xyz (Ghost), but I wasn't quick enough with my camera ๐Ÿ˜ฉ

Let's move the state of long-form text on the open social web, forward!

1000007220.jpg

16
 
 

NodeBB will be making an appearance at this year's FOSDEM!

I'll like be present at the Social Web dev room during FOSDEM itself, and will be presenting a talk at the Social Web After Hours event alongside @darius@friend.camp, @pfefferle@mastodon.social, and @j12t@j12t.social at Hackerspace Brussels (HSBXL), on Sunday evening.

I'll be talking up the SWICG Forum and Threaded Discussions Task Force, and what we're working on to solve one of fedi's hard problems: combating the notion that "the fediverse is quiet". Come and listen!

Thank you to the great folks at @ngizero@mastodon.xyz, who have kindly funded my way there this year.

17
 
 

767e2ed4-8089-40ab-92a8-7fb2204b20bd-image.png

I thought that if I entered a Fediverse address here, like '@FrankM@nrw.social,' it would follow that user, and their posts would then appear in the corresponding category.

But that's not happening. There's also no meaningful error message. The actor you see in the image probably appears because I entered an incorrect address.

Does this feature need to be enabled on the Fediverse instance 'nrw.social'?

Who can help?

18
 
 

For some reason, I'm unable to view the profile page of certain remote accounts here at community.nodebb.org.

So far, I've only noticed it with some accounts from my Mastodon instance - particularly, my own account, @AltCode@social.vivaldi.net, and the @Vivaldi@social.vivaldi.net account, which should be viewable at https://community.nodebb.org/user/altcode@social.vivaldi.net and https://community.nodebb.org/user/vivaldi@social.vivaldi.net respectively. Instead, trying to go to either of those profile pages produces a 404 error; it's weird though, because these accounts used to work fine before.

Sorry if this is the wrong place to report this. I considered creating an issue on the GitHub repo, but at the moment I have no idea if it can affect accounts from other instances (let alone, other activitypub software), or only those from social.vivaldi.net.

19
 
 

I subscribed to activitypub@community.nodebb.org earlier, and got my first post. The activity looked like:

{
  "@context": "https://www.w3.org/ns/activitystreams",
  "actor": "https://community.nodebb.org/category/30",
  "cc": [
    "https://community.nodebb.org/category/30/followers"
  ],
  "id": "https://community.nodebb.org/post/https%3A%2F%2Fcommunity.nodebb.org%2Fpost%2F102768#activity/announce/1737427447686",
  "object": {
    "cc": [
      "https://community.nodebb.org/uid/24276/followers"
    ],
    "id": "https://community.nodebb.org/post/102768#activity/create/1737427442685",
    "object": {
      "@context": [
        "https://www.w3.org/ns/activitystreams",
        {
          "Emoji": "toot:Emoji",
          "toot": "http://joinmastodon.org/ns"
        }
      ],
      "attachment": [],
      "attributedTo": "https://community.nodebb.org/uid/24276",
      "audience": "https://community.nodebb.org/category/30",
      "cc": [
        "https://community.nodebb.org/uid/24276/followers"
      ],
      "content": "<p>Looking through my logs (snip).</p>\n",
      "context": "https://community.nodebb.org/topic/18546",
      "id": "https://community.nodebb.org/post/102768",
      "inReplyTo": null,
      "name": "User Agent Used for Federation?",
      "published": "2025-01-21T02:43:57.558Z",
      "replies": "https://community.nodebb.org/post/102768/replies",
      "source": {
        "content": "Looking through my logs (snip)",
        "mediaType": "text/markdown"
      },
      "summary": null,
      "tag": [],
      "to": [
        "https://www.w3.org/ns/activitystreams#Public"
      ],
      "type": "Note",
      "updated": null,
      "url": "https://community.nodebb.org/post/102768"
    },
    "to": [
      "https://www.w3.org/ns/activitystreams#Public"
    ],
    "type": "Create"
  },
  "to": [
    "https://www.w3.org/ns/activitystreams#Public"
  ],
  "type": "Announce"
}

As you can see, there's an 'actor' in the Announce (for the community), and 'attributedTo' in the Note (for the user), but no 'actor' in the Create part. I've not seen this behaviour on any other platforms - there's always an 'actor', with the same value as the 'attributedTo' field in the Note.

I tried to reply to my account on another platform on post , but it didn't federate out (I don't know if having to wait for moderator approval affects this). Given that Announce normally just wraps the original object, it suggests that there'll also be no 'actor' in 'Create' when it's just 'Create/Note' being sent out, but I haven't been able to check. This is a bit inconvenient (for me at least), because I'm used to using that field to get the details of the user who signed the request, and it'll be a pain to have to dig into the Note's 'attributedTo' field to find it.

20
 
 

Looking through my logs it seems that NodeBB doesn't have any defined User Agent for it's ActivityPub requests.

Mastodon has Mastodon/<version> (athing; +https://<websitehere>) Friendica has Friendica/<version> +https://<website>

And many more other federated software have similar things. But when looking through my web request logs I'm not seeing any specific User Agent for NodeBB forums. The only one in fact that I've found which might be NodeBB is node-fetch.

I'm asking simply because I have a tool that monitors specifically for ActivityPub requests from various clients. And I'd like to be able to track NodeBB ActivityPub requests as well, but I'm not seeing how at the moment.

21
 
 

Will this work?

22
1
NodeBB and Threads (community.nodebb.org)
submitted 2 months ago* (last edited 2 months ago) by julian@community.nodebb.org to c/activitypub@community.nodebb.org
 
 

There have been some reports (@bh4-tech I believe?) that NodeBB does not successfully federate with Threads. Looking into the issue, I discovered that it is only this domain community.nodebb.org that is unable to get/send activites with Threads.net.

After some help from @erincandescent@akko.erincandescent.net @jaz@mastodon.iftas.org and @grishka@friends.grishka.me, I have discovered that our domain has been blocked by Threads for not serving up a public feed.

This is the feed they're specifically looking for. If your application does not serve it, it will be automatically blocked at some point. There is an appeal form you can fill out so your server can be re-instated.

  • At this time, Threads seems to see the lack of the public feed as a non-starter for AP federation.
  • As an AP software implementor, in order for admins running NodeBB to not have their servers auto-blocked, I will have to implement this API
  • Threads relying on the existence of a Mastodon-specific API suggests that they're federating with Mastodon only (perhaps as part of a limited experiment), or that it is an oversight that needs to be fixed on their end with time.

Therefore if you wish for your NodeBB to federate with Threads, my guidance at this time is to whitelist your domain with Threads directly by filling out the form.

23
 
 

Last friday I quietly tagged a commit on the activitypub branch with v4.0.0-beta.1, which signals that the ActivityPub integration is now ready for beta testing.

For the most complete (yet readable) list of new functionality from the alpha, check out the "Road to Beta" project page.

tl;dr โ€” some new features and a lot of fixes

  • Editing a category now issues an Update(Actor)
  • replies is now populated and responds with an OrderedCollection of direct replies (see the post about that)
  • Proper sharedInbox support
  • Better indicators for content that comes from non-local (aka "remote") users
  • Conversational context synchronization mechanic (corresponding post for that)
  • Moving a topic out of the "uncategorized" category will now federate out an Announce

By and large most incompatibilties have been resolved, although if you do find some issues, please do let me know in the corresponding bug report thread.

I'm looking to wrap up the year with some of the more difficult projects I've put off

  • Object Integrity Proofs, which will also enable Inbox Forwarding
  • Better handling of "Open in App" signals from third-party instances
  • Post visibility support (or at least better handling so non-public messages aren'y unceremoniously dropped!)
  • Ongoing integration with FEPs 400e and 7888