@julian I am reading through the context fep and I am wondering if nodeBB only supports the context to be a collection or could it also be a post that starts a conversation?
from pfefferle@mastodon.social to swicg-threadiverse-wg@community.nodebb.org on 03 Feb 09:19
https://mastodon.social/users/pfefferle/statuses/113939210532511860
from pfefferle@mastodon.social to swicg-threadiverse-wg@community.nodebb.org on 03 Feb 09:19
https://mastodon.social/users/pfefferle/statuses/113939210532511860
@julian I am reading through the context fep and I am wondering if nodeBB only supports the context to be a collection or could it also be a post that starts a conversation?
threaded - newest
Hi @pfefferle@mastodon.social! The current recommendation is that
context
be ideally a URL.We have not voted on further recommendations but the consensus is that it should be resolvable to a Collection or OrderedCollection and the original post is contained within (first item of the collection).
Open to discussion as to whether this works for you or not. This is why the recommendation on that has not been solidified yet.
@julian @pfefferle there's a few options on what it would ideally be, but it *can* be any Object
1) group by `id`
2) possibly moderated by `attributedTo`
3) should have some collection associated with it somehow, just a flat list of everything included
the jury's out on how best to do #3 because the goal is to eventually be able to Follow a conversation. but https://github.com/w3c/activitypub/issues/486 makes it problematic to try to Follow a Collection directly...
@julian @pfefferle in terms of what kind of Object to use other than a Collection, i would say maybe don't use a Note because this is often not semantically correct. the current WIP idea is to define a `Conversation` entity that has something like a `posts` property. the thinking is that a conversation *has* a collection of posts, not that it *is* a collection of posts. this is the topic of a separate FEP though. nodeBB briefly went ahead and used Conversation before rolling it back as too early
@trwnh @julian thanks a lot for the guidance!
I think even if an object is possible, I start with the collection because of interoperability reasons.
@pfefferle@mastodon.social you're right about that. While we haven't standardized on what the collection should resolve to, existing implementations today already resolve to a Collection-style type.
Take a look at this example to see how it is done in NodeBB:
https://community.nodebb.org/topic/dc6e5c3d-4b66-4b3b-859f-2eafb72b1f58/does-context-have-to-be-a-collection
(As of writing this context only has 9 items so all items are shown as is, although one could break it up into pages as needed)
@julian I think I have a working draft available in the next few days, maybe you have some time this or next week, to check it with nodeBB!?!
will send you a link when I have it deployed to my site.
@pfefferle@mastodon.social I would be thrilled to.
I would be on a beach in Mexico (family vacation), but I will make it happen.
@julian oh no! take your time!!! there is no hurry 😊
enjoy your family vacation 🏖️
@pfefferle@mastodon.social about to take off to Dublin (connection to Toronto), so can answer more in 1.5h 👋
And there are situations where the context will NOT be a collection.
For example, for a project management system, the context may be a specific task, but multiple threads (conversations) are related to that task. There is no collection to serve, since each thread has their own collection, and may even be on different servers.
This is why I advocate for a thread field that indicates the thread, if it has one. There are other use cases for context.
@scott i imagine in the case that you're describing, a Task might have a `context` of a Project, but if you want to say that some Conversation is "related to" the Task, you would use something like `tag` instead? it doesn't make much sense to claim that an Article exists in context of a Task...
the other thing i have to ask is why even bother using AS2 for something that clearly isn't related to the AS2 content model of Note, Article, and Document? i'd consider using a different vocab entirely.
@scott you might reuse *some* terms from AS2 but there's no need to overdo it. use different terms from different vocabs as appropriate. if an AS2 term isn't a perfect fit for a concept, don't try to force it in.
@infinite love ⴳ The projects and tasks would have its own API or protocol for syncing and sharing. I am not referring to that.
I am talking about when a AS2 Note or AS2 Article is associated with a Task or Project.
Server A might want to notify Server B of that association over ActivityPub, because AS2 Notes and AS2 Articles will be delivered over ActivityPub, not the Project API/protocol.
The user interface could then link to the related project or task.
@scott use `tag` for that
@infinite love ⴳ That is doable. But the naming convention is a bit wonky.
You use context for collections. You use tags for context. You use summary for content warnings.
You don't want to use the term threads to describe threads because you want it to be a collection, which you call a context. So there is no way to specify the top level post without creating a collection.
It would be nice if the names reflected what the field is actually used for.
@scott
- context isnt just collections, it's basically a supertag that lets you group things that belong together, the other half of scoping (next to audience)
- tags are literally "related to" taxonomical references so this shouldn't be mismatched at all
- threads aren't necessarily trees with a top or root, they may be a chronologically sorted ordered set
- names have multiple interpretations and connotations, this is ideally why we use URIs not basic string terms. as2-vocab has definitions.
@infinite love ⴳ
Exactly. It is not for #hastags like the name implies.
@scott AS2 didn't define a Hashtag type and also literally yes it's not for that, it's for the concept of a "tag". like if you tag an Image with a Person you are implying the Image contains the Person, and you can reverse query for all objects with a `tag` of that Person. they're basically categories. this is in the definition
@infinite love ⴳ I understand how it is defined. I am just commenting, and laughing, at the fact that the terms ActivityPub uses does not match the common meaning of the words.
Unless I looked up "tag" in ActivityPub, I would have never assumed in a million years that it meant "related to" because everyone else uses the term "tag" to mean "hashtag."
@scott @trwnh @julian I am also in favor of
thread
but other implementers have settled oncontext
. Can easily support both if you want to usethread
in your project@pfefferle You may want to read the previous version of FEP-7888, which says that context should resolve to a collection:
https://codeberg.org/fediverse/fep/src/commit/6db51e4893e32c603a93a7570d3db4e412f0a8c2/fep/7888/fep-7888.md
This is what various projects have implemented so far.
The FEP was changed several days ago and now it is a very different document. The recommendation to use collection is no longer present, so I don't see any reason to refer to this FEP anymore.
@julian
thanks @silverpill
What do we use for hashtags, since tags is used for "related to." LOL
This is so funny. LOL. One monomer after another. Haha
I needed a laugh.
But seriously, where to hashtags go? LOL
It appears that NodeBB is not accepting edits of posts.
@scott hmm that's no good, have you filed issues for this yet?
@liaizon@social.wake.st @scott@loves.tech likely a bug with Hubzilla as it's working when tested against NodeBB (and I think Mastodon)
Can you send me the JSON payload for an Update activity?
@julian I am not sure how to do that. Is there an ActivityPub testing software I could use to see what is delivered over the wire?
Also, it used to work, but that after you made some changes to NodeBB and Hubzilla adopted Conversations Containers, it stopped working.
And I also overheard a Git issue conversation with (streams) and Mitra talking about how Conversation Container's use of context is not the same as defined in FEP-7888, which may cause incompatibility issues. If I remember right, they were saying the FEP-7888 expects a collection of notes, and (streams) and presumably Hubzilla send a collection of activities.
Cc: @silverpill @Mike Macgirvin 🖥️ @Mario Vavti
@scott@loves.tech
https://activitypub.academy is useful for that.
There's some issues on GitHub about edits and NodeBB, e.g. at https://github.com/NodeBB/NodeBB/issues/13085
I re-tested it, updating an old comment I made from PieFed, and whilst there's now an icon indicating an edit, the text of the edit isn't there (the comment was the first one by 'Andrew' in that thread). The outgoing activity looks pretty standard:
@scott @julian @mikedev @mario Yes, we are discussing a new property,
contextHistory
, which is supposed to replacecontext
on posts. That would make conversation container implementations compatible with projects that usecontext
in other ways.@silverpill @scott @julian @mikedev @mario https://codeberg.org/fediverse/fep/src/branch/main/fep/76ea/fep-76ea.md
@evan @scott @julian @mikedev @mario In our case
contextHistory
resolves to a collection of activities, sothread
would not be a good name. Personally, I am not against usingthread
for collections of posts, but other developers seem to prefercontext
.@silverpill @Evan Prodromou Someone said, I forgot who, that they would support
thread
if someone else implemented it first. They just did not want to implement something that no one else was implementing.So, I say implement it, and let the cards fall where they may. Sometimes you have to lead the way.
@scott @silverpill exactly. It's really easy to add `thread` if you already have `context` with the same collection.
@julian I tried to post it, but the post got rejected by NodeBB. Maybe it was too long?
You can see the post on my hub: #^https://loves.tech/display/d6998574-794a-4e85-98c1-63c5921e74b1
Is there a maximum post size? The JSON is pretty big.
https://community.nodebb.org/uid/2/inbox
delivery rejected: 413
<div class="flex-fill"> <h2 class="fw-semibold tracking-tight text-center">[[global:500.title]]</h2> <div class="m
2025-02-07 04:39:10