social.coop is one of the many independent Mastodon servers you can use to participate in the fediverse.
A Fediverse instance for people interested in cooperative and collective projects. If you are interested in joining our community, please apply at https://join.social.coop/registration-form.html.

Administered by:

Server stats:

487
active users

#forumwg

0 posts0 participants0 posts today

March 2025 ForumWG Minutes

Apologies in advance if I misrepresented anybody or missed any crucial bits of information.

  • Julian provided a brief summary of the state of conversational contexts
    • two-pronged approach: top down (feps), bottom up (implementors)
    • IceShrimp.NET (waiting and watching)
      • Already exposes context collections, integration testing pending
    • Mitra
      • Implemented (top-level only) context collections of objects, tested and working
  • Julian said 7888 is object-based contexts, 171b is activity-based contexts and notes that activity-based context can be more comprehensive (incl. likes, reactions, updates)
  • a (@trwnh@mastodon.social) notes that 7888 is more generic and doesn't specify object-vs-activity; notes there is also a missing link between an object and its Create activity.
  • angus (@angusmcleod@mastodon.social) notes Discourse is essentially following 7888 but wants to know how to represent likes if implementors are predominately object-based
  • a: use the likes collection, evan (@evan@cosocial.ca) +1'd
  • Julian noted that the bottom-up approach (implementors) is mainly focused on backfill, and identifying other implementors.
  • Julian also notes that 171b implementors have made some inroads to support backfill from 7888 implementors, both FEPs are cross-compatible and we should strive to have it remain so

Freeform brainstorming session

  • Goal: identify and prioritise short-to-medium term goals for the ForumWG
  • Medium: Jitsi whiteboard

SVG version

Unfortunately there was no note-taking during the whiteboarding session, but readers are encouraged to ask questions about items identified in the image above (or attached).

  • End goal is to be able to point to a set of FEPs if someone new to AP wanted to implement threaded discussions
  • Evan suggested that this would be a good report, but also recommended that a W3C explainer be created instead
  • Context ownership was identified as a foundational element that is worth exploring/fep creation, as it is what multiple future discussion items would be based upon.

Agenda preparation for the February 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 18h00 to 19h00 UTC). You can find them listed in the SocialCG Calendar. The next meeting will be held on 6 March 2025.

We will be discussing:

  • Housekeeping
    • Daylight savings time Monday, ForumWG meetings track Eastern Time
    • EST ⇒ EDT (lose one hour)
  • Update — State of Conversational Contexts (Julian)
  • Brainstorm/whiteboarding: Use cases for resolvable contexts
    To decide focus of feps/implementors for the upcoming few months

As always — time permitting — if you'd like to speak or inquire about a certain topic, comment in the agenda or reply here, the floor is open!

Google Docs2025-03 AgendaMarch 2025 Agenda Forum and Threaded Discussions Task Force Format Information gathering prior to the meeting will be held asynchronously via the fediverse, with topics posted on one of the following two locations: https://community.nodebb.org/category/31/threadiverse-working-group https://so...

A conversational context is what the ForumWG uses to describe what you might see as a reply tree or comment thread. One of the short-to-medium term goals of the ForumWG is to get conversational backfill working reliably.

What this means — conversational backfill means that when you encounter a post/status/note/etc. (e.g. you're mentioned or boosted/shared something), there is a reliable and comprehensive way to retrieve the entire conversation around it, so you are not interacting with the object on its own, but in its proper context with all its sibling replies.

We plan to achieve this with a combination of a top-down (FEP-driven) and bottom-up (implementor-first) approach. While this sounds incongruent, top-down approaches tend to overcomplicate and bottom-up approaches tend to violate the protocol (unintentionally of course :joy:.)

There are a number of independent top-down efforts to achieve this:

These FEPs are in the R&D phase.

State of the Top-Down approach

At this time, the ForumWG is only recommending the following:

  • Publishers SHOULD use context for grouping related objects in a thread (but this is not the only way to use context).

There is general agreement over:

  • A context SHOULD resolve to a resource.

There are concerns over:

  • What that resource is (as:OrderedCollection, a new type, something else?)
  • What is included in that context (plain objects or activities)

State of the Bottom-Up approach

The bottom-up approach is results-oriented, and while certain implementors may follow certain FEPs, the overarching goal is "cross-compatible conversational backfill".

Separately, these implementors are (or have signalled interest in) implementing conversational backfill:

  • FEP 7888
    • NodeBB (@julian) and Discourse (@angusmcleod@mastodon.social)
      • Attaches context to objects
      • context resolves to an OrderedCollection containing objects
      • Two-way conversation backfill is tested and working (7888 only).
    • WordPress (@pfefferle@mastodon.social) and Frequency (@jesseplusplus@mastodon.social)
      • Attaches context to objects
      • context resolves to an OrderedCollection containing objects
      • Outgoing conversational backfill is tested and working — others can backfill an entire conversation from these implementors.
    • Lemmy (@nutomic@lemmy.ml) and PieFed (@rimu@mastodon.nzoss.nz)
      • Have signalled interest (neither positive nor negative) in conversational backfill and are waiting and watching at this time.
  • FEP 171b
    • Mitra (@silverpill@mitra.social)
      • Attaches context to activities
      • context resolves to an OrderedCollection containing activities
      • Incoming conversational backfill is tested and working — Mitra can backfill an entire conversation from FEP 7888 and 171b implementors (:tada: nice!)
    • Hubzilla (@scott@authorship.studio) and Streams (@mikedev@fediversity.site)
      • Attaches context to activities
      • context resolves to an OrderedCollection containing activities
      • Outgoing conversational backfill is tested and working (against Mitra)

What's Next

This thread will likely contain updates and discussion from related parties about their implementations and what they wish to do next. In the cruelest irony of ironies, because conversational backfill is not ubiquitous yet, you will need to "View Original URL" in order to see all of the replies.

The ForumWG will meet again on 6 March 13h00 EST where all of this will be discussed, as well as planning out the future focus items for the ForumWG.

If you are an implementor, there is no reason you cannot join the fray. Boost this post, reply to it, join the conversation(al context)!!

If you're not an implementor, boost me anyway :stuck_out_tongue:

The full minutes from the Forum and Threaded Discussions Task Force monthly meeting (held on 13 February) can be found at this Google Docs link

Apologies in advance if I misrepresented anybody or missed any crucial bits of information.

February 2025 Minutes

  • The meeting was deferred a week due to Julian being out of the country, but this time conflicted with the Geosocial TF and perhaps it would be easier to just skip the month instead.
  • Julian attempted developer outreach in the weeks leading up to FOSDEM (and at FOSDEM), specifically relating to FEP 7888 and resolvable contexts.
    • Much of the feedback revolved around the perceived complexity of the FEP
    • A separate attempt to focus more on outcomes (e.g. conversational backfill via 7888) led to more positive feedback
  • This led to the desire to modify FEP 7888 away from being a (perceived) monolithic FEP into a general high-level introduction to utilising context to represent threaded discussions
    • 7888 would branch out into "child FEPs" that deal with more focused, technical aspects that implementors could pick and choose from.
  • In addition to simpifying FEP 7888, the two next candidates for child FEPs would be:
    1. Followable objects (FEP-efda) which would lead to the ability for software to "subscribe" to topics for updates
    2. Conversational Contexts & Backfill (FEP TBD) which is self-explanatory
  • A whiteboarding session to determine user stories and long-term FEP prioritiy planning was deferred to March 2025.
  • A "resolvable contexts" office hours is planned for 17th February 2025 at 10h00 Eastern Standard Time
Google Docs2025-02 | ForumWG February MeetingFebruary 2025 Minutes Forum and Threaded Discussions Task Force Housekeeping Apologies for the deferred meeting as I (Julian) was out of country last week This meeting time (regular time but pushed back one week) conflicts with the Geosocial TF, so perhaps consider skipping the entire month in...

Agenda preparation for the February ForumWG meeting can be found at this public link (anyone can make comments for review.)

Monthly meetings normally are held on the first Thursday of each month, at 1700 to 1800 UTC. You can find them listed in the SocialCG Calendar. The next meeting will be held on 13 February 2025 due to my being out of the country last week.

We will be discussing:

  • Long-form text and resolvable context updates from FOSDEM
  • Concerns regarding developer accessibility of FEP 7888
  • Live brainstorm/whiteboarding session re: long-term focus of threaded conversation FEPs

As always — time permitting — if you'd like to speak or inquire about a certain topic, comment in the agenda or reply here, the floor is open!

Google Docs2025-02 AgendaFebruary 2025 Agenda Forum and Threaded Discussions Task Force Format Information gathering prior to the meeting will be held asynchronously via the fediverse, with topics posted on one of the following two locations: https://community.nodebb.org/category/31/threadiverse-working-group https:/...

The full minutes from the Forum and Threaded Discussions Task Force monthly meeting (held on 5 December) can be found at this Google Docs link

The minutes are also inline below.

Apologies in advance if I misrepresented anybody or missed any crucial bits of information.

December 2024 Minutes

Forum and Threaded Discussions Task Force

---

Housekeeping

  • Julian noted that the event description in the SWICG calendar calls for a monthly meeting from 1700 to 1800 UTC, although the scheduled time is pegged to 1300 to 1400 Eastern Time (observing DST).
    • Dmitri (absent from meeting) to update event description

as:Article and Mastodon treatment of non-notes

  • Darius provided an update – been under the weather and busy with some other work-related items, but:
    • Mastodon team cautiously optimistic about upstream PR, some concerns were voiced over things like inline images
    • Hopefully by next month will have something more concrete to show to them; re: demo package
    • Evan (@evan@cosocial.ca) planning to get some people together in-person, to work together at FOSDEM in Brussels (Feb 2025); specifically to address long-form text issue
    • Discussions about this in the task force would be considered the crucial pre-work
    • Darius will update the group if something happens before January (re: code or PR package)
    • A test instance up and running, Darius plans to make it more accessible for others to check out

Silverpill’s FEP 171b is now an official draft, open for comments on SocialHub

  • No specifics, just a news item.

Context collections FEP Convergence

  • Rationale for recommendation outlined in meeting agenda.
  • Evan (@evan@cosocial.ca) and a (@trwnh@mastodon.social) met up just prior to the WG meeting to discuss and work out differences between their FEPs; main notes:
    • Using context to represent a reply tree is good
    • Restricting usage of context is not the goal of 7888 or the ForumWG
    • Co-exists well with 76ea’s thr:thread property to denote a reply tree, etc.
    • Recommending use of as:context is one good way forward
    • Evan recommends that the “should” in the proposal be changed to a “may”
  • PROPOSAL: Publishers SHOULD use `context` for grouping related objects in a thread (but this is not the only way to use context).
    • RESOLVED with 8 ayes, no nays, and no abstentions

Brainstorming focus items for 2025

  • Emelia (@thisismissem@hachyderm.io) – multiple contexts?
    • a (@trwnh@mastodon.social) : we need to also handle the fact that some contexts may not resolve
    • Emelia: as:context can be an array of values in JSON-LD
    • a: inReplyTo can have multiple values too; but in general, on the producing side we generate a single value – generally expect context/thread to remain the same (singular values)
    • Sebi: "we thought a lot about multiple contexts" - led us to the conclusion of using profiles/describes property; per spec can only have one value
  • Julian: Handling when implementors (e.g. lemmy/piefed) don't have the concept of topics
    • a: there are multiple different models of how items are grouped together; reply tree model works for large part of the fediverse; mastodon has concept of reply tree represented internally as a conversation (vs context); this could be expanded into a conversation having an owner, etc.; mastodon has the conceptual ground to build upon
    • Evan: reply trees work well on microblogs, blog comment trees, threaded posting systems, forums; other applications expect a more serial model... messenger/chat systems, where ordering of objects is not in a tree, no explicit relation between them; hashtags, locations, few other ways to use context
    • Emelia: clarify overlap between replies collection and context collection?
    • a: in general will include both ancestors and descendants; could add filters, look at tags, etc. to get subsets. If you are querying by context, you are looking for all objects related by said context
    • Evan: full tree
  • Julian: Mastodon reply-tree service proposed (https://github.com/NeuromatchAcademy/mastodon/pull/44)
    • Julian: worried about scalability and performance of a backend service iterating through an entire reply tree; advocates that retrieving as:context is more performant especially if we build in some tooling for synchronization and member checking
  • Emelia: historical reports of harassment due to `inReplyTo`; when looking at context including descendents, then how do we generate the tree?
    • Evan: fep 76ea goes into detail about how reply trees can be managed
    • a: answer is "who has the authority?"; who decides what goes into the collection? the `attributedTo` actor. For the replies collection, this exists IN PARALLEL TO `context`; in some ways a subset of the thread; could be a point of contention for systems that expect all objects to exist in general vs. conversation oriented
    • Julian: upends expectation that objects are independent
    • Darius: does this relate to announce leaking? recommendations that you not forward the entire object, just the ids
      • Emelia: related but different; announce leaking -- should only ever do objects by ref (by the id)
    • a: the paradigm shift is more social rather than technical -- that you cannot just rely on inReplyTo to prove that an object is approved
      • some duplication as context includes replies, but they are distinct collections. They are decided by different authorities. `replies` is decided by whoever wrote the post
  • Ted (@tallted@mastodon.social:disappointed: This sounds a lot like reinventing netnews, without taking the lessons that were learned from it; blurring the ideas of message store/relay/display; for all of this to work, the system has to pick up all replies, and let the client filter.
    • Julian/a: anything specific to share? lessons, etc. – definitely of interest in not repeating the same mistakes
Google Docs2024-12 | ForumWG December MeetingDecember 2024 Minutes Forum and Threaded Discussions Task Force Housekeeping Julian noted that the event description in the SWICG calendar calls for a monthly meeting from 1700 to 1800 UTC, although the scheduled time is pegged to 1300 to 1400 Eastern Time (observing DST). Dmitri (absent from ...

Agenda preparation for the December 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 1700 to 1800 UTC. You can find them listed in the SocialCG Calendar. The next meeting will be held on 5 December 2024.

We will be continuing onwards with:

  • FEP convergence (re: conversational contexts) and a proposal re: baseline usage of as:context as a grouping mechanism
  • updates by WG members re: non-as:Note support in Mastodon

As always — time permitting — if you'd like to speak or inquire about a certain topic, comment in the agenda or reply here, the floor is open!

Google Docs2024-12 AgendaDecember 2024 Agenda Forum and Threaded Discussions Task Force Format Information gathering prior to the meeting will be held asynchronously via the fediverse, with topics posted on one of the following two locations: https://community.nodebb.org/category/31/threadiverse-working-group https:/...

The full minutes from the Forum and Threaded Discussions Task Force monthly meeting (held on 7 November) can be found at this Google Docs link

Apologies in advance if I misrepresented anybody or missed any crucial bits of information.

Of note:

SWICG ForumWG GitHub repo used to keep track of high level discussion items

  • Repo url: https://github.com/swicg/forums
  • Issue tracker contains details regarding high-level items discussed at monthly meetings (and on the fediverse between meetings)
  • Very early draft report of Conversational Contexts in ActivityPub accessible at https://swicg.github.io/forums/ — just headers and an intro so far

Mastodon and its treatment of non-note items

  • Darius Kazemi (@darius@friend.camp) of Hometown put together a light fork of Mastodon that could be merged upstream. It utilises the "read more" functionality to display longer-form content and runs the content of non-note objects through the same parsing that regular notes get.
  • Emphasizes that it is not an open PR yet, while discussions are ongoing with Renaud and the Mastodon team. "This is 118 lines of code, touches 4 files. Not huge."
  • Some edge cases: How do we handle additional media beyond the cap of 4 currently in place by Mastodon?
  • Emelia (@thisismissem@hachyderm.io) also brings up concerns re: text-field length and a sensible maximum across implementations.
  • Evan (@evan@cosocial.ca) brings up the possibility of this PR making it into Mastodon 4.4, Claire (@claire@sitedethib.com) acknowleges the possibility
  • Darius will write up a summarization and demo video for presentation to the Mastodon team

FEP 7888 and 76ea

  • There are still outstanding conflicts between FEPs 7888 and 76ea
    • Beyond the main difference (7888 uses as:context, 76ea uses thr:threads under a new namespace), some philosphical differences persist.
    • e.g. whether the 76ea's definition of an explicit "reply tree" is adequate to describe the multitude of shapes that a conversation can take
  • a (@trwnh@mastodon.social) and Evan informally pledge to work together to come to a resolution

Voting re: FEP convergence

  • A motion was made by Julian to defer a subsequent motion regarding FEP convergence to a later to-be-determined date pending resolution of the 7888/76ea conflict
  • Majority abstained, with two ayes. Resolved.

Context collection items: activities or objects?

  • Julian: should a resolvable context collection contain activities (create, like, EmojiReact, etc.), or simple objects?
  • Evan makes the case that simpler is better (needing to diff. activities may present a complication for implementors)
  • a suggests a reframing as a two-way negotiation of what gets declared vs. approved
  • This topic was cut short due to timing
Google Docs2024-11 | ForumWG November MeetingJulian update: re: CG report draft and repo usage Darius update re: Mastodon treatment of non-notes Hometown has a ‘good enough’ version of showing full articles Many edge cases, done 5 years ago. Instead of working on this fork, started from scratch to re-implement Demo’d mobile view of his loca...

Agenda preparation for the November 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 1700 to 1800 UTC. You can find them listed in the SocialCG Calendar. The next meeting will be held on 7 November 2024.

We will be continuing onwards with:

  • discussions regarding context resolution. Multiple FEPs touch on the subject and there is an opportunity for potential convergence towards a single (or pair) of FEPs that share enough commonalities to allow for interoperability.
  • updates by WG members re: non-as:Note support in Mastodon and the Social CG report draft
  • whether a resolvable context collection containing plain objects should also contain activities (like an outbox)

As always — time permitting — if you'd like to speak or inquire about a certain topic, comment in the agenda or reply here, the floor is open!

Google Docs2024-11 AgendaNovember 2024 Agenda Forum and Threaded Discussions Task Force Format Information gathering prior to the meeting will be held asynchronously via the fediverse, with topics posted on one of the following two locations: https://community.nodebb.org/category/31/threadiverse-working-group https:/...

@julian said in Does context in AP have to be a collection, or can be be like a Flag activity? Say I wanted to Create(Note) about a Flag I'd received, I'd need:

If you queried the context, you'd get an OrderedCollection containing objects that you have access to view, but since in NodeBB only moderators can view flag reports, anybody querying it over ActivityPub would just get an empty collection.

The quote was in reference to whether disparate as:Flag activities could be grouped together under a common context (per 7888).

To be technically correct, it would contain the Flag activities... which reminds me of a discussion @trwnh@mastodon.social and @silverpill@mitra.social had about what a context collection could contain... objects vs. activities.

In this particular case, I suppose the context collection would contain activities, not objects, which would mean we'd need to relax any recommendation that they contain either objects or activities, since it could contain any mixture of both.

NodeBB CommunityjulianCo-Founder (NodeBB) | Husband 🤷‍♂️ and Dad 🙉 to three | Rock Climber 🧗‍♂️ | Foodie 🥙 | Conductor 🎵 | Saxophonist 🎷 ✅ Small teams craft better code. 🇨🇦 Made in Canada 🗨️ Federating NodeBB with funding from NLNet ♥️🇪🇺

Related to the ForumWG topic of resolvable context collections, there are four FEPs that are currently in consideration:

  1. FEP-7888: Demystifying the context property
  2. FEP-400e: Publicly-appendable ActivityPub collections
  3. Draft FEP-171b: Conversation Containers, an evolution of Conversation Containers
  4. FEP-76ea: Conversation Threads

@silverpill@mitra.social made a suggestion last month to hopefully reduce the number of moving parts:

  • Both FEP-400e and FEP-1b12 implementations: support FEP-7888 (context collection)
  • FEP-400e implementations: upgrade to Conversation Containers
  • FEP-1b12 implementations: add target property to Announce activity that points to context collection.

This takes FEP 400e out of the running (potentially). But the day after that last meeting, @evan@cosocial.ca put together FEP 76ea, and now we're back to three.

My concern is that all three FEPs (7888, 171b, and 76ea) all share these distinct qualities:

  • They establish a conversational context for a given object
  • They federate out an Add on collection addition. (76ea also sends Remove)
  • They contain some concept of a context owner (attributedTo)

They differ on the following qualities:

  • 7888/171b use context whereas 76ea uses a new property thr:thread
  • 171b specifies a new object type Context
  • Collection items:
    • 7888 sends objects in chronological order
    • 171b sends activities in chronological order
    • 76ea sends objects in reverse chronological order

In the lead up to the November WG meeting I'd like to address those differences. All three FEPs are in pre-draft or draft stages, and so I am hoping we can find some common ground and compromise.

Pinging interested parties (who were not already mentioned above) for comment:

@trwnh@socialhub.activitypub.rocks @erincandescent@akko.erincandescent.net @mikedev@fediversity.site @jenniferplusplus@hachyderm.io

This topic was the focus of discussion at the May, June, August, and October 2024 meetings. It relates to the concept of grouping together objects into a collection, and making that collection reso...
GitHubResolvable Context Collections · Issue #7 · swicg/forumsBy julianlam

The minutes from yesterday's Forum and Threaded Discussions Task Force monthly meeting can be found at this Google Docs link

Apologies in advance if I misrepresented anybody or missed any crucial bits of information.

Of note:

Mastodon and its treatment of non-note items

  • Darius Kazemi (@darius@friend.camp) reports that Hometown already supports improved conversion of non-note items (like as:Article) into statuses, and that this serves as a working proof-of-concept towards getting this merged upstream into Mastodon proper.
  • We discussed briefly the Mastodon PR approval process and how it sometimes drives away contributions
    • Darius emphasized the importance of showing real user support to facilitate the merging of pull requests.

Context Collections and FEP Convergence

  • Julian proposed consolidating various FEPs (7888, 400e, 171b) to publish a unified recommendation.
  • Evan (@evan@cosocial.ca) objected to the use of the "context" property in FEP 7888, advocating for a new vocabulary instead.
  • The discussion included differing views on the utility of the context property and its historical usage.
  • Darius utilized his data observatory (TBD) data set to hopefully prove that context is not a properly currently seeing any usage.

"Convenings" and Collaboration Initiatives:

  • Darius, representing the Applied Social Media Lab, proposed organizing physical meetings to enhance interoperability in the fediverse.
  • He will provide a blog post detailing the ActivityPub Data Observatory and related goals.

ActivityPub Trust & Safety Task Force

  • A new task force will focus on protocol-level issues within ActivityPub, including proper content warnings and labeling.
  • Meetings are tentatively scheduled for the second Tuesday of each month (starting November), with a call for input on scheduling.
Google Docs2024-10 | ForumWG October Meeting| ForumWG October Meeting Update re: as:Article and Mastodon treatment of non-notes Context: https://community.nodebb.org/topic/18286/relaxing-treatment-of-non-notes-by-mastodon Darius, implementor of Hometown as of 5 years ago. The core solutions set out in that topic are already supported b...

Agenda preparation for the October 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 1700 to 1800 UTC. You can find them listed in the SocialCG Calendar. The next meeting will be held on 3 October 2024.

We will be continuing onwards with discussions regarding context resolution. Multiple FEPs touch on the subject and there is an opportunity for potential convergence towards a single (or pair) of FEPs that share enough commonalities to allow for interoperability.

As always — time permitting — if you'd like to speak or inquire about a certain topic, comment in the agenda or reply here, the floor is open!

Google Docs2024-10 AgendaOctober 2024 Agenda Forum and Threaded Discussions Task Force Format Information gathering prior to the meeting will be held asynchronously via the fediverse, with topics posted on one of the following two locations: https://community.nodebb.org/category/31/threadiverse-working-group https://...

Agenda preparation for the June 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 1700 to 1800 UTC. You can find them listed in the SocialCG Calendar. The next meeting will be held on 1 August 2024.

We will be discussing...

  • ongoing research regarding resolvable conversational contexts (aka topics/threads), including backfill and synchronization. (Julian)
  • FEP 1b12 vs 400e, and cross-compatibility with both FEPs in a forum/threaded discussion context (Angus)
  • Implementation of Posts/Comments/Likes style feeds (Aaron Gray)

If you'd like to speak or inquire about a certain topic, comment in the agenda or reply here, the floor is open!

tl;dr — conversation backfill and synchronization via resolvable context; potential FEP.

This topic is an extension of an earlier discussion: How do you use context (if at all)?

We came out of May's ForumWG meeting with a sense that pursuing formalisation of the context property was a step in the right direction. I later built out a resolvable context collection as part of this effort.

Currently, if you are given a standalone activitypub object, you might not have any or all of the conversation surrounding it. That's part-and-parcel of the design of ActivityPub — that content is pushed to various federated instances, as opposed to one centralized authority —but is a source of some concern as end-users continually remark on how various instances have different reply sets, and worse yet, even the original site may not have the entire conversation.

I can hear @evan@cosocial.ca now:

"ActivityPub is a push and pull-based API!!" — Evan Prodromou

Agreed! Although, while you can pull public objects via ActivityPub, you can't pull said objects if you don't know they exist. Here are your options for building/resolving any single object's conversational context:

  • You may opt to do nothing (and the object is standalone; not ideal).
  • You may traverse up the inReplyTo chain and build out one direct thread of replies (better).
    • N.B. for security, it is best to limit the traversal to an arbitrary maximum
  • New — you may query the object's context property, and if resolving to a (Ordered)Collection, build out the entire conversational context — including all conversational sub-trees — in one fell swoop.

New this week is a proof-of-concept implementation of a "context synchronization" mechanic. Using similar mechanics to Mastodon's FEP-8fcf (Followers collection synchronization across servers), I propose servers can compute a digest for a context collection via its object ids, and serve them using the common ETag header. Recipients may opt to calculate their own digest and begin backfill on digest mismatch. Optionally, the If-None-Match header containing that digest can be sent, allowing the origin server to respond with an even simpler 304 Not Modified.

Technical details re: topic synchronization.

Backfill and sync are both still limited availability; only NodeBB supports them currently. However, I'm working with Angus (building out the Discourse AP integration) to expand support, and I'd like to eventually publish an FEP and SocialCG report to make this all pseudo-official.

We intend to discuss our research at this month's ForumWG (August 1st; 1300 EDT), join us and let's see where this goes!

Tonight I set aside some time to listen to @johnonolan@mastodon.xyz on @mike@flipboard.social's DotSocial podcast.

A lot a lot a lot of what John says mirrors the very same potential that many ActivityPub devs see as well. There are far too many points in that podcast that made me nod my head in agreement (and wish I was a third guest too!), but there was one that was incredibly timely:

Mike: ... you've been thinking about actually embedding the whole article in the ActivityPub post, which is a mind-blowing thing... it's not a link to something else... the whole article is in the post.
John: Yes, this is something that makes perfect sense but is somehow completely new, which is weird...
Mike: You can have formatted text... images? video?
John: ActivityPub is fairly agnostic, you could in theory shove almost anything into it. The question is what is the client on the other side prepared to receive? Do they have some way to display it?
John: If we get platforms in the ActivityPub network to start innovating with content types, it might cause those things to be adopted and it might drive the standard and what it is possible to display

Emphasis mine.

John, Mike, this is almost word-for-word exactly what the Forum and Threaded Discussions working group has been working towards! The main problem is we need buy-in from implementers to push this forward.

We can do this, we can send richer HTML across the protocol in such a way that all those things you two mentioned — in-line images, embedded videos, tables, etc. — can all show up as intended by the sender.

We've got commitment from (but not limited to) representatives from NodeBB, Discourse, and WordPress, and having Ghost and Flipboard sign on would help push this forward just that much more.

Let's do this, let me get you caught up with the state of the protocol re: the Article object type. Let's chat (but publicly, since I can't receive DMs here on NodeBB).