Skip to content

Agenda Prep for April 2025 WG Meeting

ActivityPub Test Kategorie
3 2 57
  • Agenda preparation for the April ForumWG meeting can be found at this public link (anyone can make comments for review.)

    Monthly meetings are held on the first Thursday of each month, at 13h00 to 14h00 Eastern Time (currently 17h00 to 18h00 UTC). You can find them listed in the SocialCG Calendar. The next meeting will be held on 3 April 2025.

    We will be discussing:

    • Review of brainstorm/whiteboarding session from March
    • Context Ownership
      • Brainstorm use cases/user stories
    • Moving objects (between contexts) and moving contexts (between audiences)
      • Relies on context ownership “FEP”
      • Brainstorm use cases/user stories
      • Support for multiple objects (forking)?
      • Same origin only? Support moving objects/contexts between instances? Different FEP?
  • Some notes for things I want to bring up regarding agenda items:

    SIOC: Semantically Interlinked Online Communities as prior art

    Predates ActivityPub, was submitted to the W3C, has evolved up until ~2018 in some form. Concepts that could be relevant for Forum TF work:

    sioc:Item is directly associated with a sioc:Container, whereas as:Object is included in an indirect list of items within as:Collection

    Containers vs Collections

    For more on the difference between a Container and a Collection, see RDF Schema sections 5.1 and 5.2

    A Container has open membership. There might always be more items in a container that are unknown:

    <#Bag>  <#red_ball>.<#Bag>  <#green_ball>.<#Bag>  <#blue_ball>.# We do not know if the bag contains any other balls, such as a yellow ball.

    A Collection can have closed membership. For example, Lists can be terminated with a nil element.

    <#List> rdf:first <#A>.<#List> rdfs:rest rdf:nil.# We know that the list does not contain any more elements beyond A.

    The way this is applied in SIOC is like so:

    <#Item> sioc:has_container <#Container>.<#Container> sioc:container_of <#Item>.

    The way this is applied in ActivityStreams is like so:

    <#Collection> as:items (<#Item>).# There is no way to signal that the Item is part of the Collection, and it is not expected that collection items will expose links back to every single collection they are a part of.

    sioc:UserAccount, sioc:Post, sioc:Thread, sioc:Forum, sioc:Site

    • A Post has_creator UserAccount.
    • A Post has_container which can be directly a Forum, or it can be something like a Thread (which can itself has_container of a Forum).
    • A Forum can has_parent of another Forum, if wishing to model subforums.
    • A Forum can has_space of a Space (like a desktop or file share), or in more concrete cases can has_host of a Site.
    Mapping to AS2-Vocab?

    If we roughly map this to AS2-Vocab we might get something like this:

    @id: @type: [as:Person, sioc:UserAccount]@id: @type: [as:Person, sioc:UserAccount]@id: @type: [as:Note, sioc:Post]as:attributedTo: sioc:has_creator: as:content: "Hello"sioc:content: "Hello"as:context: sioc:has_container: @id: @type: [as:Collection, sioc:Thread] # caveat where as:Collection has spec issuesas:attributedTo: as:audience:  # maybe?sioc:has_container: sioc:container_of: @id: @type: [as:Group, sioc:Forum]as:attributedTo:  # i guess?sioc:has_moderator: sioc:has_host: @id: @type: [as:Service, sioc:Site] # idk about this onesioc:host_of: 

    Subtypes of forums and posts

    From SIOC types module:

    • Forum: ArgumentativeDiscussion, ChatChannel, MailingList, MessageBoard, Weblog.
    • Post: BlogPost, BoardPost, Comment, InstantMessage, MailMessage, WikiArticle.

    Protocol considerations

    We probably want to separate eventually the idea of "i authored this" from "i have authority over this", especially if a forum "lives" somewhere on a host.

    Comparison to NNTP / NetNews protocol / Usenet network

    RFC 5536 defines an article format for sharing RFC 822/2822/5322 style Internet Messages with mandatory headers:

    • Date (as:published)
    • From (as:attributedTo)
    • Message-ID (@id)
    • Newsgroups (as:audience??)
    • Path (no analogue, represents the path taken as the article is shared across newsgroups? so an ordered list of where it was shared/reshared from?)
    • Subject (as:name or as:summary, but probably not required for AP Forum TF)

    RFC 5537 describes architecture for distributing such articles as Internet Messages:

    • A "posting agent" passes an article to an "injecting agent"
    • The "injecting agent" injects the article into a group
    • A "reading agent" can then fetch articles from a group

    RFC 3977 describes NNTP protocol:

     Example of a successful posting: [C] POST [S] 340 Input article; end with . [C] From: "Demo User"  [C] Newsgroups: misc.test [C] Subject: I am just a test article [C] Organization: An Example Net [C] [C] This is just a test article. [C] . [S] 240 Article received OK Example of an unsuccessful posting: [C] POST [S] 340 Input article; end with . [C] From: "Demo User"  [C] Newsgroups: misc.test [C] Subject: I am just a test article [C] Organization: An Example Net [C] [C] This is just a test article. [C] . [S] 441 Posting failed Example of an attempt to post when posting is not allowed: [Initial connection set-up completed.] [S] 201 NNTP Service Ready, posting prohibited [C] POST [S] 440 Posting not permitted

    We could probably do something with Announce and/or Offer or similar?

    In a simple model where there are only groups and posts, no threads (a la FEP-1b12)

    • Offer Note to Group
    • Group can then accept/reject the post and issue an Announce?

    Once we introduce threads, we will want to have more control not at the group level but at the thread level.

    There is a bit of a philosophical question of approach here -- given that the core mechanism here is fundamentally notification messages via LDN (POST to inbox), although it is arguable that Activity payloads gets used as a sort of JSON-RPC more than as a notification... should we therefore optimize for a notification-oriented flow or a more procedural flow instead?

    In a notification flow, we just want some resource to be aware that we have made a new post, and they can then distribute it or not. Say something simple like this:

    id: actor: type: Announceobject: to/cc/audience/bto/bcc: id: actor: type: Announceobject: audience: [, ]cc: 

    but instead of addressing or targeting you might instead address or target ? whichever application is listening to the thread's inbox then handles the cascade of distribution upward:

    id: context: id: context:  # ?audience:  # ?attributedTo: followers: id: audience: followers: id: members:  # extension property/collectionfollowers: 

    what is desired is roughly this:

    • Announce to the
    • the Announces to...
      • ?
      • ?
    • the might also Announce to and to

    the challenge is in avoiding duplicate traffic, so ideally this would be under the control of a single controller who issues a single Announce to the sum total of the accumulated audience:

    id: actor: type: Announceobject: to/cc/audience/bto/bcc: # ... some chain of events later...actor: type: Announceobject: to/cc/audience/bto/bcc: - # -  is already aware? -  -  -  -  -  - 

    this is essentially an event driven architecture. you'd need to choose between "exactly once" and "at least once" delivery.

    concerns:

    • what ends up in shares collection? for a single share action, do we end up with multiple Announce activities in there?
    • who gets addressed? inbox forwarding? this probably shouldn't be the responsibility of to have to be aware of every single downstream/upstream recipient, right?
  • A note that the ForumWG meeting is scheduled to begin shortly: https://meet.jit.si/ap-forum-wg

  • Unicode in handles

    ActivityPub unicode activitypub
    15
    0 Stimmen
    15 Beiträge
    4 Aufrufe
    julian@community.nodebb.orgJ
    לאצי the usernames work fine locally (that is, on the site itself). It's when interoperating with other sites not running NodeBB where there are issues, it seems
  • 0 Stimmen
    3 Beiträge
    40 Aufrufe
    julian@community.nodebb.orgJ
    silverpill@mitra.social I thought about checking against the outbox, but there's a potential race condition that could occur if I receive the Create(Note) at roughly the same time as the community, but the community hasn't processed the activity yet. In that scenario, the activity would not be in the outbox for checking. The same thing would happen if there was some out-of-band check for object membership in a collection (not that there is one right now).
  • 0 Stimmen
    17 Beiträge
    168 Aufrufe
    julian@community.nodebb.orgJ
    @esoteric_programmer@social.stealthy.club that's likely because GtS handles summary as a content warning for everything. The whole summary and content warning business is in flux right now, so hopefully a standard will be set soon.
  • 0 Stimmen
    3 Beiträge
    57 Aufrufe
    julian@community.nodebb.orgJ
    @mastodonmigration@mastodon.online while this is a known workaround, I don't think it's a tenable long-term solution. You can have "real decentralization" without the quirks, too.
  • Moving topics

    ActivityPub Test Kategorie forumwg activitypub
    6
    0 Stimmen
    6 Beiträge
    115 Aufrufe
    julian@community.nodebb.orgJ
    @trwnh@mastodon.social yes, it is in regards to audience no longer being sent out by Lemmy. While it's defined in 1b12 it seems to be ancillary now, so updating that property would mean Lemmy would need to add support for it back.. not the end of the world.
  • Live testing of remote categories

    ActivityPub Test Kategorie activitypub nodebbactivityp
    63
    2
    0 Stimmen
    63 Beiträge
    1k Aufrufe
    julian@community.nodebb.orgJ
    @pfefferle@mastodon.social just wanted to poke you about this issue again. The latest updates to NodeBB now do a webfinger backcheck to ensure that the actor has a valid webfinger entry for their purported handle. If it does not, then the user is not properly created. Mastodon also does this. This check is probably for security as well as for preventing handle collisions. The multilingual plugin in conjunction with the ActivityPub plugin creates users that share the same handle, and that causes issues with federated content. For example, this article by @jonvt@vivaldi.com will load up just fine in Mastodon, but this japanese article by @akira@vivaldi.com will not, because that second article's attributedTo is https://vivaldi.com/ja/?author=176, which fails that check (the author's ID is actually https://vivaldi.com?author=176 as per the handle backcheck) cc @AltCode
  • Blogtastisch: 2. Blogs und das Fediverse

    notizBlog activitypub blogs fediblog fediverse weblogs
    17
    1
    0 Stimmen
    17 Beiträge
    181 Aufrufe
    caromite@troet.cafeC
    @pfefferle Wow, danke für das super Video! Für mich ist das Fediverse noch ganz neu, hab jetzt mein Blog föderiert und mir einen Account bei Mastodon erstellt. Fühle mich noch etwas verloren, aber bin überzeugt auf dem richtigen Weg zu sein
  • Reconciling ActivityPub Deletes with NodeBB deletion

    ActivityPub Test Kategorie activitypub
    16
    0 Stimmen
    16 Beiträge
    189 Aufrufe
    julian@community.nodebb.orgJ
    Angus, while I haven't made the appropriate changes to NodeBB's implementation yet, I did draft an FEP including the changes we discussed. https://github.com/julianlam/feps/blob/main/fep/15c5/fep-15c5.md It is not PR'd upstream yet, but I will do so in the coming days unless there are some concerns.