@julian@community.nodebb.org
@julian@community.nodebb.org avatar

julian

@julian@community.nodebb.org

Hi! I'm Julian, one of the co-founders of NodeBB, the forum software you are using right now. I started this company with two colleagues, Baris and Andrew, in 2013, and have been doing the startup thing since (although I think at some point along the way we stopped being a startup and just became a boring ol' small business). In my free time I rock climb, cycle, and lift weights. I live just outside Toronto, Canada, with my wife and three children.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

julian, to random
@julian@community.nodebb.org avatar

I may regret creating this topic but here goes.

If you experience a bug or other unexpected behavior while using NodeBB and its related ActivityPub integration, please post it here so it can be tracked and resolved.

No formal process as of yet, and we're still at pre-alpha so expect many things to be broken or unavailable 😅

julian, to random
@julian@community.nodebb.org avatar

There have been some scattered discussions I've seen over the past year that mention that @pfefferle's WordPress ActivityPub plugin federates their blog posts out as an as:Note, and that the only reason this is done is because Mastodon only treats as:Note (and as:Question) as a first-class object and relegates anything else to a fallback handler that takes a short snippet of the content, and shows a link back to the original source, thus losing any in-app benefits (boosts, replies, etc.)

Whether this is actually true or not, I do not know. So that's why I'd like to ask Mattias — or anybody else with some context — here.


For reference:

  • as:Article: Represents any kind of multi-paragraph written work.
  • as:Note: Represents a short written work typically less than a single paragraph in length.
  • as:Page: Represents a Web Page.

I have also noticed that Lemmy, perhaps out of principle, sends out an as:Page for new generated content, and only the replies federate out as as:Note. It has unfortunately led to some assertions that Lemmy's federation is "broken", even though it is arguably not the case.

@nutomic, care to weigh in?


I don't even blame Mattias for opting to send everything out as as:Note.

End of the day right now it doesn't matter how Mattias or Nutomic represent their higher-level collection of data, because Mastodon is the largest implementor and neither they — nor anyone else I know of, for that matter — treat anything that's not as:Note or as:Question specially.

But that ought to change. The question is how, but this WG is not at the point where we start throwing around decrees and making up standards.

What's important to me right now is what the landscape looks like right now, and why that is the case.

N.B. The discussion here will eventually make its way to online real-time discussion at one of the future WG meetings.

julian, to random
@julian@community.nodebb.org avatar

Does anyone know what the most broadly implemented standard is for signalling that a web page has an alternative ActivityPub endpoint?

What I found online (and with @evan and @silverpill's input) was to deliver a Link header and set a <link> tag, but it doesn't seem to work (at least with Megalodon)...

julian, to random
@julian@community.nodebb.org avatar

Prior our last task force meeting, @rimu brought up the need for a common nomenclature for ease of communication between ActivityPub implementors. Rimu also took the initiative to conduct an informal survey to see what terminology was used across fediverse-capable software (and some non-federating software).

Going beyond "toots" vs "posts", it was noted (not surprisingly) that each software has their own name for things.

  • The most common object type passed around via the ActivityPub protocol (as:Note) could be called a comment, a post, or a reply
  • A grouping of as:Notes could be a post (!!), a topic, a thread, a conversation, or a discussion
  • A higher order grouping of those could be a community, a category, a forum, a (sub)tag, a group, or a magazine

The main takeaways were that while there was occasional convergence, it wasn't entirely surprising that there were more names for things than things to name. Secondly, it was fairly clear that putting forth a recommendation to align on nomenclature would be fairly futile.

What were we expecting... naming things is, after all, one of the hard problems in computing.

All joking aside, up with a common terminology — a lingua franca (thanks @AaronNGray!) — definitely has some advantages.

What terms do you think communicate these levels of organization most succinctly? Let us know!

julian, to random
@julian@community.nodebb.org avatar

NodeBB is at this year's FediForum, and one of the breakout sessions centred around the Theadiverse, the subset of ActivityPub-enabled applications built around a topic-centric model of content representation.

Some of the topic touched upon included:

  • Aligning on a standard representation for collections of Notes
  • FEP-1b12 — Group federation and implementation thereof by Lemmy, et al.
  • Offering a comparatively more feature-rich experience vis-a-vis restrictions re: microblogging
  • Going forward: collaborating on building compatible threadiverse implementations

The main action item involved the genesis of an informal working group for the threadiverse, in order to align our disparate implementations toward a common path.

We intend to meet monthly at first, with the first meeting likely sometime early-to-mid April.

The topic of the first WG call is: Representation of the higher level collection of Notes (posts, etc.) — Article vs. Page, etc?

Interested?

  • Publicly reply to this post (NodeBB does not support non-public posts at this time) if you'd like to join the list
  • If you prefer to remain private, please email julian@nodebb.org

As an aside, I'd love to try something new and attempt to keep as much of this as I can on the social web. Can you do me a favour and boost this to your followers?

julian, to random
@julian@community.nodebb.org avatar

Okay, here's a little completely unintentional side-effect that blew my mind.

tl;dr — never miss a popular post again.


NodeBB tracks a number of metrics when the internal methods are called to create topics (or post replies). Metrics such as post counts, vote counts, view counts. It uses those to provide alternative sorting of topic lists — by post, votes, and views.

Incoming content from the fediverse/social web is also run through this same logic, and so those metrics ended up tracked too.

One of our users pointed out that remote topics were drowning out local topics in the /popular route, which makes sense given the imbalance in traffic. Unintentional, but not problematic. I tweaked the logic to filter out those topics unless explicitly asked for.

... and I ended up with this page, which allows you to see popular fediverse topics that my instance knows about. You can even drill down by day, week, month, or all time.

A common fediverse concern is that things get missed. If you live several time zones away from somebody else, you may never see their content pop up naturally in your feed. Trending posts (in Mastodon) addresses this somewhat, though.

It seems without any additional effort, NodeBB has already taken a step towards resolving this issue.

julian, to random
@julian@community.nodebb.org avatar

@oplik0 and I are having a discussion regarding the conditions upon which origin checking should be done on S2S activity receipt.

The spec says this:

Servers should not trust client submitted content, and federated servers also should not trust content received from a server other than the content's origin without some form of verification.

Reasonable, if a little open-ended. I took this to mean that if an Activity(Object) is received, if Object is a copy of the resource itself, that origin checking is required. This is reflected currently in the NodeBB code where if typeof object !== 'string then origin check is carried out.

Problem is, that's a code smell. It's not readily apparent why an origin check is only carried out under that condition. Compounding this is that not all activities need an origin check: Create, Update, and Delete typically don't (careful in my wording here, lest I say something way off-base).

@oplik0 advocates for a more explicit approach, where perhaps an object uri is dereferenced regardless, and an origin check is carried out if the specific Activity-Object type pair calls for it (and if the uri doesn't match).

P.S. Yes, @hrefna I know object can also be an Array... or undefined... or null... don't @ me!)

julian, to random
@julian@community.nodebb.org avatar

The latest change to the ActivityPub integration for NodeBB introduces the concept of "group actors" to categories.

This change means that categories can be configured to be visible to other applications connected to the social web (including Mastodon, Misskey, and also other NodeBBs!)

49225588-744e-43f9-bfc4-950cb6f116fb-image.png

When followed, it means that any post made to the category will be automatically shared to anyone who follows that category.

NodeBB already supported this locally. You could set your watch state for a particular category to "tracking" or "watching", the latter allowing you to be notified of new posts.

Also of note is that remote replies to topics contained within a category will also be shared to the category's followers. This distinction means that you can effectively follow a specific category or sub-category in order to stay up-to-date on all discussions within that category.

As of today, users cannot create topics in a category from the social web (e.g. I cannot create a new topic in a NodeBB category), yet. That will come soon.


For the NodeBB community forum, the following categories are followable for now:

  1. General Discussion
  2. NodeBB Development
  3. NodeBB Development > ActivityPub

Lastly, all of this follows the FEP-1b12 Group Federation enhancement proposal.

julian, to random
@julian@community.nodebb.org avatar

An update from last night brings some additional logic to the title generation of topics from the fediverse.

Previously if a title was provided in the name property, that was used as the topic title.

While that hasn't changed (and is the strongest signal for a topic title), not all fediverse content contains titles. Specifically, Mastodon posts do not require or even have a space to put a title in.

For those cases, we fall back to generating one based on the content. We literally grabbed the first 128 characters or so, and added an ellipsis to the end.

While that worked okay as a stopgap, it meant that a lot of topics ended up with really long titles — not ideal.

The new logic tries to grab the first line of text (either the first <p> or line), and from there, the first sentence, using some naive regular expressions.

While still not a proper alternative to... you know... specifying a title, it's better than nothing I suppose!

I wonder if other fediverse softwares implement title generation logic like this...

julian, to random
@julian@community.nodebb.org avatar

Hello everybody!

It's dark and miserable outside, on account of it being rainy in my little corner of Canada, but in this little corner of the fediverse, there are some definitely exciting things happening!

Wait, what's the fediverse?

Last month I provided an update on the work I've been doing in 2024, which is a long-running project to bring ActivityPub integration into NodeBB. A more thorough overview of ActivityPub can be found in the first announcement announcing the green-light from the NLNet Foundation.

Today marks the day that our community forum connects to the fediverse. We've updated the code and switched over to the activitypub branch, and enabled federation on two categories, the NodeBB Development category (which is read-only for everybody but NodeBB staff), and the Testing Ground, which is meant for content of no consequence.

It also means that henceforth any bugs discovered are public and I'd be on the hook to fix them post-haste 😅

We're doing this gradual rollout not only because I'm quite excited to share what I've achieved so far, but also because I'm developing in public and it's important to gather feedback as early on as feasible.

It also means that — barring some crazy regression causing me to roll everything back — I'll be providing development updates on this account instead of my personal (@devnull).


So, what works, and what doesn't?

  • User-specific topic lists and the global topic list
    • If you navigate to /world, you'll be brought to your custom topic list of remote content, of which there won't be any unless you start following some users
  • Bi-directional user follows
    • You are able to follow a remote user from within NodeBB by navigating to their profile. Doing so at this time is rather difficult, see below.
    • Likewise, people outside of NodeBB can follow you from sites like Mastodon, Pixelfed, kbin, etc. simply by searching for your username.
    • Your "handle" is your username followed by @community.nodebb.org.
  • Bi-directional federation of content
    • Topic and replies posted to this category and the testing ground will be automatically propagated out to your followers (if any), and responses to that content from outside of NodeBB will show up here.
  • Propagation of likes to the local NodeBB
    • Likewise, if your post is liked by someone outside of NodeBB, it will be reflected in the topic
  • Announces (aka "Boosts")
    • If your post is "boosted" or shared by someone outside of NodeBB, there will be a notification within the topic.

No update would be complete without a list of what doesn't work, so here goes...

  • Finding remote content and users
    • Discoverability of remote content is currently quite limited. You are not able to search for content outside of the local NodeBB, but this will be worked on in due course.
    • You are currently able to navigate to remote profiles by manipulating the URL (e.g. NodeBB's fosstodon profile: https://community.nodebb.org/user/nodebb@fosstodon.org
  • Emoji
    • If you're reading this from outside of the NodeBB community forum, you won't see the emoji I put in the post... yet 😅
  • Mentions
    • @oplik0 is planning to work on integrating mentions, but that is currently at the to-do stage
  • Notifications
    • When a remote user interacts with you (e.g. upvotes, replies, and follows), you currently aren't notified
  • ... plus about a thousand other things.

There's a huge amount of work to do still, but we'll be seeing a more featureful integration in the coming weeks/months.

Also, there is a non-zero probability that when I hit post, this will cause the NodeBB community to crash.

So... here goes... 3... 2... 1...

julian, to random
@julian@community.nodebb.org avatar

Please see below for minutes from today's Forum and Threaded Discussions Task Force monthly meeting.

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


Participants

in order of appearance


  • Dmitri invited participants to the regular SWICG call tomorrow; best place to be informed of upcoming events: SocialCG calendar"please come by, it is free for everyone to join or listen in"
  • Angus provided an update to the working group's inclusion under the banner of the Social Web Incubator Community Group (SWICG), revised name would be the Forums and Threaded Discussions Task Force, or "ForumWG" for short.
  • Julian provided an update on this past month's usage of the fediverse to hold asynchronous discussion, a number of threads have been started on the respective forum categories (both of which federate out) for the working group pertaining to discussions re: agenda items, and have been fairly well received.
  • Angus and Julian will update the respective handles of their categories to reflect the new working group name

"Lay of the Land" survey reports

  • Angus: The general spirit of these surveys is 'these are the existing X approaches, the plurality may indicate the need to converge'
  • Nomenclature
    • Rimu: Document continues to be expanded upon
    • Evan re-iterates that it is unlikely any implementors will change their nomenclature to match
    • Angus asks whether participants find utility in the list
    • Evan indicates that whatever is decided upon is best used "on-the-wire", Julian agrees and notes that the agreed-upon terminology would be used in the "Definitions" portion of any report written by ForumWG; suggests the list may be best kept as a living reference
    • Rimu indicates that as the list grows, alternative ways to represent the data may be required
    • Round of applause for Rimu for taking the initiative to start (and now maintain) the list
  • Object Type (Article vs. Note vs. Page)
    • Impetus for topic: WordPress sending out as:Note when as:Article would be more suitable
      • @jupiter_rowland (in topic, paraphrased): Mastodon values microblogging UX and locked down their allowed html to satisfy this constraint, despite Hubzilla's pleas
      • @mikedev (in topic, paraphrased): Raised issue in 2017 to address issues with inline images being removed. Suggested a compromise: treat Article and Note differently (Note, text only with attachments; Article, full HTML) — Eugen 7 months later closed issue with change to further hamper treatment of Article, by showing only title and link back to source.
      • @pfefferle (in topic): "You can choose 'Note' if you want to have the best compatibility"
    • Evan: Whether a note or article is federated, it shouldn't hamper implementation; but as:Page should not be used
    • Mattias: Choice is given to user as to how WP maps the native Post object to ActivityPub. Historically sent out Article but received a lot of pushback from early adopters. Difficult to reconcile UX with technical limitations
    • Evan: "An as:Note is a Tweet (we just couldn't call it that), an as:Article is a blog post"
    • Emelia: "Should software publish different objects based on content length, even if using the same mechanism?"
    • a: Big picture view — it doesn't seem complicated, but it is, because the line between them is completely arbitrary.
    • Mattias: We try to autodetect (no headers, content length, etc.), would prefer different content types based on what users write, but the advantage is being able to read content natively on the user's platform of choice
    • Dmitri: "I think we've got several questions in parallel:
      1. What SHOULD these things (Note & Article) be used for.
      2. What to do about Mastodon who only seems to consume Notes."
    • Emelia: Don't Articles usually have titles?
      • Everyone else: crickets (made us think!)
    • a: https://wiki.trwnh.com/tech/spec/activitypub/confusion/note-vs-article/ (also indicates using title to discriminate Article vs. Post isn't 100%)
    • a: The reason we're talking about this is because of various differring implementations - for example, in one implementor's mental model, you have a thread with a title and that is separate from the posts contained within; posts that may also have titles of their own. How do we reconcile this?
    • Julian and Rimu note that @renchap replied in-topic: "... we would like to improve how non-Note objects are processed/displayed in Mastodon."
    • Julian mentions a compromise put forth by @mikedev where Notes are smaller pieces of content with limited markup and attachments, and Articles are (sometimes) larger pieces with formatting, inline images. Additional survey/spreadsheet to be created, but we could as a group (Mastodon included) converge on a path forward and a report to the SocialCG could be authored. To be continued next month.
  • Group Actor characteristics
    • 1b12 - announcing the activities of their actors, this is what Discourse and NodeBB do, other implementations have taken this approach
    • @nutomic (paraphrased): "intent of 1b12 is to describe the existing status quo"
    • 400e - Pubicly appendable collections; Picked up by a few other folks, also potentially Mastodon (with their new groups implementation)
    • How do we treat group actors in forum/threaded implementations?
      • a: 400e - Groups send Add activities, 1b12 - Groups send Announce activities, otherwise, a Group could even send regular Creates (editor's note: this is a dramatic simplication of the actual post here)
      • Evan: announce style makes the most sense, understanding that folks use both - suggestion: document both but let consumers know they'll see one or both
      • Rimu: Implementors can make opinionated decisions on how it should work, and adjust based on the reality of how the major players adopt
      • Angus will continue collating responses into a spreadsheet re: group implementations
  • Open item: feedback on desired UX (@trwnh)
    • Can a group be multiple different things? e.g. a context/thread has some recipients, a context could be an actor. How forums choose to (or could) represent these relationships via ActivityPub is what is currently being solicited
    • a: Boils down to "Collections, please use them", but best to start foundationally: Notes in Collections, first.
    • Due to lack of time discussion of this will take place asynchronously on the fediverse: https://community.nodebb.org/post/99491 (if this does not open in your client, paste it into the search box)
    • Julian provided one user story: "If you want to share a context to others, one should share the higher-ordered collection, and not what we do today, which is to share the url/object uri for OP."
      • A suitable implementation could see that and backfill the entire context locally, and redirect the user to the first object.
    • Angus noted that Discourse already has some support for Collections, will provide details async on forum topic (linked above)

Action Items

  • @angus and @julian will update the respective handles of their categories to reflect the new working group name
  • @julian to collate responses to Article vs. Name among implementors, supply recommendation at next meeting.
  • @angus to collate responses re: Group federation among implementors, continue discussion next meeting
  • @trwnh to solicit feedback asynchronously via the fediverse
julian, to random
@julian@community.nodebb.org avatar

At the last ForumWG meeting, we discussed at length about Article vs. Note, and whether there was a desire to expand usage of as:Article. You can review those minutes here.

One of the action items that came out was to collate the state of current implementations. Unfortunately, outside of implementations that federate non-textual content (e.g. Pixelfed Stories, Mobilizon Events, etc.), the majority of implementors just use as:Note, which is not surprising given Mastodon's treatment of non-Note objects.

You can see the results of the summary here.


What is less clear is whether there is pent-up demand for use of a different data type for more richly forrmatted content. @mikedev and @jupiter_rowland provided some very illuminating history behind previous attempts to use as:Article, but importantly it seems that Mastodon (via @renchap) may be open to supporting this in some form as well.

While Mastodon has every reason to display as:Note as it sees fit, I'd like to hopefully address the undue influence towards using it especially in instances where as:Article were more appropriate. Mike (upthread) suggested a compromise:

  • that as:Note be reserved for content with attachments (images or otherwise), perhaps with a limited subset of html
  • and as:Article be used for content with a richer set of html (e.g. tables), and including the ability to display inline images

I explicitly did not specify that Note was for shorter content and Article for longer, because there exist plenty of examples of the reverse.

Does anybody see potential complications from such an arrangement?

julian, to random
@julian@community.nodebb.org avatar

One of the interesting items that came out of this year's FediForum was a speed demo by @thisismissem for IFTAS FediCheck, an upcoming service that will allow Mastodon server administrators to subscribe to specific one or more CARIADs — Consensus Aggregated Retractable IFTAS Allowlist Denylist — and have them automatically maintained by FediCheck.

This sort of work is hugely important for Trust & Safety. At a local level, the work required to ensure T&S scales linearly with your community size. This goes out the window when you factor in the ability to network with separate instances each with their own culture, community, etc. — suddenly, a small intimate forum with a single admin could become inundated with inappropriate content from outside of the local instance.

Being in-development, IFTAS FediCheck is Mastodon-only, but there are huge benefits to the broader fediverse network of applications, NodeBB included.

We could lobby (likely unsuccessfully) for IFTAS to support NodeBB, but it would definitely be better overall if IFTAS supported an API that we could build plugins/libraries against.

For more information about IFTAS: @iftas

julian, to random
@julian@community.nodebb.org avatar

For a lot of things in ActivityPub, there are almost direct parallels in NodeBB. An as:Note object pairs well with a NodeBB post, an as:Person is a NodeBB user, etc.

One thing that didn't map 1:1 was the Delete activity, which at surface level, seems rather straightforward — just delete the object! However, once you dig in, there are some additional considerations:

  • in NodeBB, we have two separate states for content removal.
    • A delete, where the post is still present (but its content unavailable to non-privileged users), and a
    • A purge, where the post is scrubbed from the database entirely, and all references to it, removed
  • in ActivityPub, there is a single activity, as:Delete
  • Implementors may opt to replace the object representation with an as:Tombstone (how quaint!), but they may also just opt to use a 404

So there are some nuances that are left intentionally vague.

Kaniini on SocialHub makes the argument that a Delete should be treated like a cache invalidation, which has its own merits.


This is how NodeBB will interpret the protocol specification, and how we will align it with our own dual-state post deletion mechanic (delete & purge):

  1. When a local post is deleted, we will federate out an Update(Tombstone) referencing the id
  2. Afterwards, if the content is retrieved, an as:Tombstone will be served.
    • Deleted posts in NodeBB still maintain their place in the topic, so when the context is retrieved, the note will still be present in the collection.
  3. If we receive an Update(Tombstone), we will delete the local representation of the post
  4. When a local post is purged, we will federate out a Delete(Note)
  5. Afterwards, if the content is retrieved, we will serve a 404
    • The note will no longer exist in the context collection
  6. If we receive a Delete(Note) (or Article, or Question, etc.) we will not delete it immediately. Instead, as kaniini advises, we will attempt to retrieve the object from the origin:
    • If we see an as:Tombstone, we will delete the post (soft delete)
    • If we encounter a 404 or 410, we will purge the post (hard delete)

I'm writing this out less as a guideline for myself, but to solicit opinions and to give others a chance to point out if I've interpreted the spec incorrectly.

julian, to random
@julian@community.nodebb.org avatar

For those who were not able to attend the technical alignment meeting of the informal "Threadiverse Working Group", I have taken minutes during the meeting and are sharing them here.

@angusmcleod has made a recording of the meeting for those who wish to listen — the password to access this recording is z+1*4pUB.

Thank you to all those who attended, we will meet again next month! Follow myself or the WG category to be notified about additional developments.


Attendees

  • Angus McLeod
  • Julian Lam
  • Evan Prodromou
  • Aaron Grey
  • Rimu Atkinson
  • Erlend Sogge Heggen
  • Laurens Hof
  • Other participants are not listed as they are not mentioned in notes below, but there were ~20 participants.

Notes

  • Participant introductions
  • “Forasphere”/”Foraverse” vs “Threadiverse”
    • Both have a topic-like structure and so much of the technical structure is the same
    • More helpful to focus on the differences from microblogging as the de facto implementation of ActivityPub
    • No matter what name, it is mostly UI distinctions with some different handling based on nomenclature
  • Rimu brings up discussion regarding nomenclature; related document
    • “We don’t call things the same words”
    • Aaron posits that “Circles” could be a useful common term
    • Julian posits that end of the day no implementor here will likely consider changing their already-established terminology
    • Aaron proposes a goal for the group: determine a common set of terms to use in discussions going forward; a lingua franca
  • Evan proposes a goal to produce documentation that other forum (or reddit-like alternatives) can use to become compatible
    • Additional goal (added later): reaching out to other forum devs (who aren’t already in this WG or looking into AP). Additional outreach/engagement from other forum softwares.
  • Julian suggests that perhaps the FEP process would be a possible path forward
    • Mastodon’s microblogging concept leads to other implementations following suit
    • Coordinated effort to increase compatibility between threadiverse-type applications is attractive
  • Erlend wants to see better interop between threadiverse apps. Discourse to NodeBB, etc.
  • Angus states that we’ve reached half-way point and summarizes (see above)
  • Meeting focus shifts to debate re: FEP process or Task force under SocialCG
    • Julian proposes on behalf of Johannes Ernst (in absentia) that the WG be organized under the FediDevs umbrella
    • Evan proposes that the WG be an official task force under the SocialCG
      • W3C/ActivityPub has many task forces already, one for data portability, one for webfinger, one for testing, etc.
    • Differences between task force report and FEP:
      • Both similar documents
      • FEP has a more asynchronous process for clearing out objections, less cohesion than SocialCG
        • Discussions take place on SocialHub
      • Most FEPs individually authored
      • SocialCG reports collaboratively edited and put forth to W3C
    • Some questions re: FEP process
      • Evan answers: Anyone can propose, comments collected. After 6 months author can determine it finalized, but implementation varies. Many draft FEPs are dropped due to lack of interest or are hypothetical in nature.
    • Penar asks whether FEP or W3C report process is faster
      • Both are roughly equivalent, SocialCG reports are “a few months” to draft, and “a few months” to be accepted/finalized.
    • Aaron posits that SWICG (or SocialCG) is a better group since it eventually goes into a published W3C article
      • Aim towards convergence, consistent UI. Safe and usable user experience where the end-user has choice.
    • Laurens remarks on the increased level of cooperation that has not been often found in the fediverse, sees this as an opportunity to forge a path toward what we want instead of being bound by an FEP.
  • Angus motions that we join the SWICG as a task force
    • Motion carries with 12 ayes out of 16 present
    • Next meeting of SWICG 5 Apr 1pm Eastern; Angus and Julian to attend
  • 3pm Eastern; meeting scheduled end, Evan and Erlend (and some others) drop out
  • What do we call the group “foraverse” “forasphere” “threadiverse”
    • Benti posits that it is weird to call ourselves representatives of the threadiverse as that distinction is reserved for Lemmy and nutomic is not present
    • Julian suggests that the term is not exclusive to Lemmy/kbin and asks to simply expand the definition to include Piefed, Discourse, NodeBB, Flarum, et al.
  • Additional back and forth regarding how and where to carry on discussions outside of monthly calls
    • Shared Google Doc sufficient for now, can explore additional options later
    • Julian posits that a federated option is ideal, acknowledges bias when suggesting that NodeBB be used. However, as it would be federated, where the discussions take place is mostly incidental.
    • A federated solution would be easiest way to reach fediverse developers.
  • Angus motions that we call ourselves the Threadiverse Working Group (or Task Force)
    • Motion carries with 9 ayes out of 13 present

Action Items

  • Angus or Julian to set up shared Google Doc for meeting/agenda prep for next meeting
  • Attend SWICG meeting on 5 Apr 2024 13:00 EDT
julian, to random
@julian@community.nodebb.org avatar

My post from a couple weeks back indicated that NodeBB started following part of FEP-7888: Demystifying the context property.

Our implementation is an endorsement of @trwnh's proposal that the context property be given additional formalization.

During the last ForumWG call, they intentionally (or perhaps unintentionally) summarized their desire that implementors should "just use collections", and that that would be a good starting point for future iteration.

With the current state of context being "there is no coordinated usage of context", this topic aims to provide a snapshot of implementors' use of that property (or lack thereof), and to stimulate further discussion on potential use cases.

Note that this is not the first time the question has been raised. trwnh's discussion topic contained one such summary of current implementations.

As per that topic:

  • Mastodon — does not use context, but provides an ostatus:conversation property
  • Pleroma/Akkoma — uses context, but the url provided is unresolvable, likely used similarly to Mastodon
  • Streams (@mikedev) — uses context, resolves to an OrderedCollection containing all activities encontered (Creates, Updates, etc.)

My hope is that a provided context resolving to a Collection (or subtype thereof) would allow for proactive topic backfill, instead of relying on reply chain traversal, which while workable, has some rather specific downsides.

As mentioned per the above linked announcement that NodeBB was following FEP-7888:

  • We attach context to all Note objects (NodeBB posts), and it resolves to an OrderedCollection that contains the uris to the other objects in the context (the NodeBB topic).
julian, to random
@julian@community.nodebb.org avatar

To refresh your memory, you can read the minutes of last week's meeting.

Please see @angus's note below regarding agenda preparation for the May WG meeting

Follow up

  1. The Social Web Community Group approved our application to turn this into a Task Force.
  2. Async work will happen across any federated platform followed by either (or both) of these categories

Next Meeting
We're going to have our next meeting in the first week of May.

Time
Please vote in our meeting poll. Whatever time we decide for this one, we'll aim to keep as our regular monthly slot.

Agenda
Please see this google doc. Everyone has comment permission. Julian will incorporate comments into the agenda.

Looking forward to seeing you at the next meeting!

My apologies for the delay. Angus and I have been working these past few weeks to hammer out some federation issues between our respective forum categories (the ones mentioned above re: async work.)

julian, to random
@julian@community.nodebb.org avatar

Hello all,

It's been quite a cold and rainy March and April, but with a couple nice days in between and warmer days ahead, I'm looking forward to getting outside more.

In the meantime, there's been quite a bit of compatibility fixing and incremental updates to the ActivityPub branch, so there hasn't been anything major to report, but nevertheless, we're getting closer and closer to an alpha.

@oplik0 has been helping me this month with some of the trickier aspects, so thank you!


Here's a short summary of what's been tackled on our backlog, in no particular order:

Posts from the fediverse can now be linked to, if you wish to share them with others. The "Copy Permalink" button will copy a shareable link to your clipboard, and "View Original Post" will allow you to view the content from its original source instance.

e8ed6153-9dbc-497d-b1f0-41a4d0bd2299-image.png

You are now able to see posts from remote users

Minor improvements to mentions so they don't (hopefully) get turned into link previews by Mastodon.

Updates to our link-preview plugin so that uploaded images and external links are added to the attachment property for other instances to consume.

Ability to view Popular topics known to this instance, sort of like Mastodon's "trending" feed.


Next up would be bigger items like content pruning and better reply handling.

In coordination with @angusmcleod from Discourse, we are also working on our category-to-category mirroring implementation. This would be used by the SWICG Forum and Link Sharing Task Force, since we're hoping to have asynchronous discussion via the fediverse.

Finding time to test is hard given our respective time zones, but we're getting close!

julian, to random
@julian@community.nodebb.org avatar

On the eve of me working on federating out mentions from NodeBB, I've started thinking again about how they're used in the fediverse via Mastodon. I've gone on at length about this before, but it bears repeating again:

I think it's absolutely bonkers that replies dogpile mentions just so participants stay in the loop.

It has the unfortunate side-effect of looping people in to a conversation merely because they were mentioned. The even worse side-effect is that if you don't follow along with this convention, the people who are left out simply aren't notified and drop from the conversation. Awful UX!

Mastodon does it because other than a follow, like, or a boost, a mention is the only other way to land a Note into your notifications. So you'll see exchanges where multiple users all start (or end) their posts with a string of mentions as they're having an ad-hoc group conversation.

@foobarbaz @barbaz @quux did you hear about the latest news out of...

This doesn't happen in forums, mostly because if you interact with a topic, the baseline expectation is that you're subscribed to that topic in the future. Replies get sent to your notification box or other dedicated UI widget, and you can easily keep track of your long-running conversations.

In NodeBB, a response within a topic causes the user to automatically follow the topic. Future actions in that topic notify all followers. We collapse related notifications to limit noise, though that is an oft-cited concern against throwing things in a notification inbox.

It sounds like I'm hating on Mastodon, and it's easy for me to do because they're the big fish in the fedi sea, but I still feel this isn't something that needs to exist. Mastodon could potentially create their own dedicated list for "conversations you've interacted with".

I will admit, though, that it is a lot easier to present that data when reply chains are grouped into topics 🙂

julian, to random
@julian@community.nodebb.org avatar

Please see below for details regarding the first Forasphere/Threadiverse Working Group meeting.


Following up on the initial announcement post regarding the creation of a working group for threadiverse-type ActivityPub applications, I'm pleased to inform the community-at-large that we have scheduled our first meeting for Thursday, 4 April from 18:00 to 19:00 UTC.

Thank you @angusmcleod for organizing and providing an online meeting space:

The video-call details are below. The goal of the meeting is to clarify what this group is, what its goals are, and how it will be run. As such, the working agenda is:

  1. Intro & housekeeping (e.g. consent to record).
  2. Who/what we are, nomenclature and overall expectations.
  3. Relationship with standards organisations and processes, including Fediverse Developers Network (FediDevs), W3C Social Web Community Group, and FEP process.
  4. Organisational, including software (i.e. mailing list), meeting times, facilitation and minutes.

Topic: Forasphere/Threadiverse Technical Alignment Meeting
Time: Apr 4, 2024 06:00 PM Universal Time UTC

Join Zoom Meeting
https://us06web.zoom.us/j/83819428627?pwd=zEE5EQXwPeEjCbqQNyJnaMR21ZMcSe.1

If you have any suggestions on the agenda please respond to this post.

julian, to random
@julian@community.nodebb.org avatar

Had a chance to listen to @pfefferle on WeDistribute's Decentered podcast. Surprisingly informative, and eye opening just how locked down shared hosting providers are.

Things we take for granted like the ability to mount routes on /.well-known (they could be blocked!)... or that you can't always assume cron is available.

https://wedistribute.org/podcast/wordpress-matthias-pfefferle/

Having used a VPS for years, I would never go back to shared hosting, but you definitely cannot argue with the convenience, ease of use (CPanel, et al.), and most of all, value for money. However, those three come with significant trade-offs in terms of flexibility and power.

Kudos to you Mattias for having the patience to try to get those shared hosting providers to change. If I were in your shoes I'd just tell them to hop on over to a different provider!

julian, to random
@julian@community.nodebb.org avatar

Finally, you are now able to look up remote content and user profiles using the built-in NodeBB search tooling.

In the quick search bar and on the search page itself, you can paste in a URL to a post. If NodeBB can fetch it using the ActivityPub protocol, then it will be immediately parsed and returned as a search result:

057bb06d-4108-4d1e-b715-61d32691959e-image.png

If you change the search type to "In users", or use the search bar in the users page, then you can look up remote users using their URL or handle:

2230f50f-bed2-4470-aa97-3037a7d13d02-image.png

This change resolves the final hurdle stopping a brand new NodeBB from connecting to the fediverse. It wasn't possible to actually find anyone or anything in order to start those first follow relationships. Now it is possible.


Aside — I'm frankly surprised by how long it's taken for me to actually do this. It goes to show you just how much you'll put off doing something if it's not really critical.

image/png

julian, to random
@julian@community.nodebb.org avatar

You know what I just noticed about @mike's DotSocial podcast? The introductions are always succinct and to-the-point. There's no 30-second "John Smith spent 15 years at X doing Y with Z, and revolutionized foo by barbaz, and is also on the board of Fizzbuzz. He is a leading champion for..." blah-de-blah-blah.

Take @snarfed.org@snarfed.org's introduction:

The beauty of an open system is that anyone can build on top of it, and try to make it a better place, in the fediverse, software engineer Ryan Barrett is one such developer. Most recently, Ryan built a bridge to connect Bluesky, which uses the AT Protocol, to Mastodon and other platforms, using the ActivityPub protocol. He wanted to advance the fediverse's promise of interoperability. His work ignited a firestorm, revealing learnings, lessons, and insights discussed today.

I never realized how often meaningless polished intros happens on podcasts, radio shows, TV interviews, etc., because I've just learned to tune it all out.

... or maybe it's because if you're an ActivityPub dev, Ryan needs no introduction 😆

julian, to random
@julian@community.nodebb.org avatar

Wrote a post today and @mike's Flipboard.social sent this back LOL

2024-05-21T15:29:20.513Z [4567/3367934] - warn: [activitypub/send] Could not send Create to https://flipboard.social/inbox; error: I'm a teapot

Sorry Mike, I prefer coffee though. Trouble in ops-land today?

julian, to random
@julian@community.nodebb.org avatar

Does anyone know if there are guidelines for the Follow/Accept flow outside of that prescribed in the AP protocol?

The reason why I ask is because there seems to be a little logical hole that people fall into where a Follow activity is sent, but the relationship then rests in an indeterminate state:

  1. The Follow is pending acceptance
  2. The Follow was already seen and subsequently ignored
  3. Something was wrong with the activity (e.g. signature failure, missing id, etc.) and it was ignored

Receipt of an Accept is asynchronous, so the approach as seen in the wild is to assume a "pending" follow state. The problem is that if the flow doesn't follow that happy path (instant-accept or pending), then you don't know there is a problem.

Furthermore it seems that there are no existing recommendations regarding handling of a Follow to an Actor who believes you are already following them. Do you send back an Accept? Ignore the activity?

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • kavyap
  • DreamBathrooms
  • normalnudes
  • magazineikmin
  • InstantRegret
  • GTA5RPClips
  • thenastyranch
  • Youngstown
  • rosin
  • slotface
  • osvaldo12
  • ngwrru68w68
  • ethstaker
  • JUstTest
  • everett
  • Durango
  • Leos
  • cubers
  • mdbf
  • khanakhh
  • tester
  • modclub
  • cisconetworking
  • anitta
  • tacticalgear
  • provamag3
  • lostlight
  • All magazines