Skip to content

ActivityPub

Focused discussion related to ActivityPub integration in NodeBB

107 Topics 1.6k Posts

Subcategories


  • Discussion and announcements related to the SWICG Forums and Threaded Discussions Task Force.

    This profile is a discussion forum category and shares content from users who post in its discussions.

    37 Topics
    868 Posts
    jupiter_rowland@hub.netzgemeinde.euJ
    @julian Well, there are object types that Mastodon couldn't even handle if it wanted to. For example, it doesn't have anything to handle an Event-type object with. I don't think Gargron would build an event calendar into Mastodon just for Event-type objects, not unless enough people pester him to do just that.#FediMeta #FediverseMeta #CWFediMeta #CWFediverseMeta #Mastodon
  • Changing the domain of an existing instance

    10
    2 Votes
    10 Posts
    270 Views
    silverpill@mitra.socialS
    @julian For FEP-ef61 you will likely need to refactor much more than ID generation. This can be done (@mikedev and I did it), and might even be worth the effort, because this FEP not only solves the problem you've described, but also takes ActivityPub to the whole new level.
  • An 18x speedup in loading your curated topics list

    1
    6 Votes
    1 Posts
    135 Views
    julianJ
    For awhile I've been wondering what the slow-down was when I loaded /world, the curated timeline for a NodeBB user. Seemingly every time I figured out what it was, it would slow down again after some time. Today it was taking 3+ seconds to load just the data, whereas our other pages (category listing, topics, etc.) all finish in under 250ms, including html generation, user data, etc... Certainly something was amiss! As it turns out, asking your database to do an intersection of two data sets, one containing 23774 items, and the other containing 23606 items, is a little much. I guess this is what they mean when they talk about #webscale hah! (#fediscale?) Specifically, I was intersecting the set containing all fediverse topics, with the set containing everything in the user's inbox, in their entirety. While this gave me a very precise answer, there was a huge cost to that precision. After talking with @baris about this, we decided that sacrificing some level of precision would almost certainly go unnoticed. Instead of having the database intersect those two data sets, we would pull the most recent 500 entries from both and intersect them manually. So, /world is now limited to 500 topics. Don't worry, you won't notice. That simple fix brought the execution time down from ~1500ms to ~40ms, which is more in line with our expectations!
  • 4 Votes
    3 Posts
    512 Views
    julianJ
    @[email protected] thanks for the kind words, appreciate it! I feel like we're almost in an exploratory phase of ActivityPub development, where we're still figuring out some best practices for some things. It'll only get better!
  • Unable to find my threads profile

    7
    0 Votes
    7 Posts
    300 Views
    bh4 techB
    @julian Problem was not with underscore but with dot in threads username. Changing it to underscore solved the problem.
  • 26 Votes
    3 Posts
    844 Views
    beaware@social.beaware.liveB
    @julian @Fitik Still faster than a multi-billion dollar conglomerate. Congrats!
  • Software version in nodeinfo

    2
    5 Votes
    2 Posts
    205 Views
    J
    @julian said in Software version in nodeinfo: The other line of thinking is that relying on security by obscurity is fallacious, but since it's only one facet of a broader security posture (the rest of it being keeping up with updates, writing as secure code as you can, reporting/bounty systems, audits, etc.), I honestly don't see a problem with transmitting as little information as I can. The only thing in all of this that is relevant to the software operator (i.e. not nodebb developers but those using it as self-hosting) is tracking updates and applying them quickly, so I'm against exposing the version number in a way that would allow bots to easily identify which nodebb installations around the world are still vulnerable
  • Hello from Lemmy, part 3

    2
    0 Votes
    2 Posts
    222 Views
    julianJ
    Let's see if replies work.
  • Unique activity IDs

    4
    2 Votes
    4 Posts
    359 Views
    silverpill@mitra.socialS
    @julian Yes, IDs should be unique:>All Objects in [ActivityStreams] should have unique global identifiers. ActivityPub extends this requirement; all objects distributed by the ActivityPub protocol MUST have unique global identifiers, unless they are intentionally transient-- https://www.w3.org/TR/activitypub/#obj-id
  • Handling "410 Gone" when retrieving an actor

    5
    1 Votes
    5 Posts
    259 Views
    julianJ
    @[email protected] said in Handling "410 Gone" when retrieving an actor: You could do what Reddit does and just leave the posts up but pointing to a tombstone user. If you've ever seen a post attributed to [deleted] then you know what I'm talking about. Yes, this makes sense. It's coming into clearer focus why account and content deletions are so noisy in ActivityPub, since each deletion of a user's content needs to be federated before the account can be deleted. In absence of anything more explicit (like your aforementioned DeleteAllCreatedObjects), that's all we have to explicitly signal full account and content deletion. I think we'll go ahead with that. NodeBB already does display something like [deleted] (we show "A Former User"), and we also save the old user id as a reference in case it needs to be cleaned up. That'll work, thank you for your input a!
  • Pruning of remote content

    6
    3 Votes
    6 Posts
    228 Views
    beaware@social.beaware.liveB
    @julian that's a good point. I feel it'd mostly be better for integration with Lemmy/Kbin type systems that mimic forums.
  • 7 Votes
    4 Posts
    746 Views
    trwnh@mastodon.socialT
    @julian to clarify: this is mostly about "canonical" identifiers vs. aliases. there is generally one canonical identifier for the conversation collection, and this is what should be used as the value of `context`. this could get a bit complicated but there are potential ways to coordinate replication between equivalent conversation collections, probably involving mutual following/follower relationship, plus some indicator of aliases like `alsoKnownAs` or some other extension property.
  • An FEP for Follow/Accept mechanics?

    6
    4 Votes
    6 Posts
    432 Views
    julianJ
    Of course you have a wiki page for this already! Why am I not surprised. Yes, that follow-accept has state synchronization responsibilities means that some additional specification would be nice, though as long as everybody tends to conform to the same behaviour I suppose thats less urgent. I still don't like that the current UX is "follow is in a pending state", but short of additional specification re: error handling, there's not much to do here. At any rate it seems I am now correctly following @[email protected] so I suppose maybe my server was slow at processing the accept.
  • Clarification re: Inbox Forwarding

    5
    0 Votes
    5 Posts
    255 Views
    julianJ
    [image: nathan-fillion-speechless.gif]
  • Reconciling ActivityPub Deletes with NodeBB deletion

    8
    4 Votes
    8 Posts
    437 Views
    julianJ
    @[email protected] right. I think functionally I'll never encounter a Delete, check the origin, and find that the note hasn't actually been deleted, but stranger things have happened!
  • Remote post and user fetching via search tooling

    2
    6 Votes
    2 Posts
    194 Views
    julianJ
    Technical stuff ahead ... This is merely exposing the frontend UI to the already established backend logic. We have two methods internally that are used for this: Notes.assert, which when given a object url or id, parses it and attempts to resolve the parent chain all the way to the top-level post. It then creates a topic to house all of those posts. Actors.assert, which when given an object url, id, or handle, creates a local representation of the user. How come "query"/etc. didn't show up? For both user and post searching, if the passed-in url does not resolve or does not resolve to a processable object, then we do not proceed. It's important to realize that while in an ideal world, we'd all be passing immutable identifiers everywhere, the real world is just a bit messier. Search queries could be a post or user URL, or a webfinger handle, so additional logic was required to handle those use cases. Most ActivityPub-enabled software I've encountered handle these vanity URLs when queried via ActivityPub — it returns the appropriate representation for processing. Some do not, and so in those cases, those items will not show up in the search results.
  • 0 Votes
    7 Posts
    176 Views
    julianJ
    @[email protected] @[email protected], @oplik0 and I took a closer look today and found the one place where IDs were not sent with Announce activities. Let me know if you find any other oddities
  • Slightly better titles from fediverse topics

    11
    7 Votes
    11 Posts
    489 Views
    rimu@mastodon.nzoss.nzR
    @julian Ooo good point about adding the ? back on.If you're interested in a non-regex solution, here's what I have - https://codeberg.org/rimu/pyfedi/src/branch/main/app/utils.py#L247
  • 3 Votes
    22 Posts
    1k Views
    oplik0O
    @[email protected] it was actually because of @ in actor IDs - the codepath for choosing a webfinger lookup over just accepting the URL as the ID only checked for its presence, and the code for webfinger lookups was only meant to run for the acct: protocol. So yeah, not WP fault at all, just a combination of a bug and missing feature Now both should be fixed.
  • Filter button in categories view for Activitypub post

    Moved
    3
    1 Votes
    3 Posts
    216 Views
    julianJ
    @omega Right now in pages where there is a list of topics (e.g. /recent, /popular, etc.) there's a filter for "Uncategorized", which would essentially exclude everything else. It's not as clear cut as excluding or only showing local topics, but that sort of achieves what you want. If you only want to see categorized topics, then you needn't select anything at all. By default, uncategorized topics are not shown. What I think you're advocating for is a button to filter out ActivityPub topics even if they're categorized. That's where I think I might draw the line, because if a topic is categorized, then it is by that action it is considered (at least by the topic mover) to be related to the overall forum topic.
  • 0 Votes
    34 Posts
    839 Views
    evan@cosocial.caE
    @trwnh @julian @angus @nutomic groups can have subgroups