FEP Convergence (400e, 7888, 171b/Conversation Containers, 76ea)
-
Evan Prodromoureplied to infinite love ⴳ on last edited by
@trwnh @erincandescent @julian @mikedev @silverpill sounds great.
I'm going to stick with `thread` and `root`.
They're already namespaced, and these are clear terms for these concepts.
Thanks for the help with additional use cases on forking and grafting. I'm going to add some explicit user stories to the FEP and show how each one can be handled.
-
Evan Prodromoureplied to infinite love ⴳ on last edited by
@trwnh @erincandescent @julian @mikedev @silverpill yes, I absolutely agree that a chat room is topologically different from a forum thread, a Reddit post, or a social network.
-
Evan Prodromoureplied to Evan Prodromou on last edited by
@trwnh @erincandescent @julian @mikedev @silverpill I would represent a chat room as a `Group`.
-
infinite love ⴳreplied to Evan Prodromou on last edited by
@evan @erincandescent @julian @mikedev @silverpill One thing to note: If the AS2 context extension policy ever gets adopted and these terms likewise get adopted into the w3.org/ns/activitystreams context document via that process (or any other process), then this creates an issue for any other case where someone wants to use the plain-JSON keys `thread` and `root`.
-
infinite love ⴳreplied to Evan Prodromou on last edited by
@evan @erincandescent @julian @mikedev @silverpill
1) I disagree; chat rooms, forum threads, comments sections, etc. are all just different presentations of the same generic data structure (objects in collections). I could pull the AS2 data for this entire chain of replies and render it as a chat room, or as a messenger, or however I wanted to -- flat chronological list or otherwise.
2) I would use `Group` to represent an actual group of agents. For a group of posts, I would use Collection.
-
Jenniferplusplusreplied to infinite love ⴳ on last edited by
@trwnh @evan @erincandescent @julian @mikedev @silverpill
This conversation is hard to follow, since Evan blocked me for some reason. It makes this a notably bad venue to have these technical discussions with him.But for what it's worth, I agree with all of your analysis and conclusions on this topic.
-
Evan Prodromoureplied to infinite love ⴳ on last edited by
@trwnh @erincandescent @julian @mikedev @silverpill yes. The members of the chat room are the group. Posting to the group shares to everyone. There's a concept of joining and leaving the group.
-
infinite love ⴳreplied to Evan Prodromou on last edited by
@evan @erincandescent @julian @mikedev @silverpill Multiple collections (or any object type) can exist while sharing the same group of agents (or any other non-group set of agents) as an audience. It's not correct to say that a room "is" the group, unless you want everyone to manually join every single room one-at-a-time. The audience is the scope to which the posts (or collection of posts) are relevant, similar to how the context is the grouping. https://www.w3.org/TR/activitystreams-vocabulary/#audience-and-context
-
Scott M. Stolzreplied to infinite love ⴳ on last edited by@infinite love ⴳ Being able to filter incoming content is just as important as being able to receive it. Providing the categories and the thread would be useful for filtering.
For example, you might have a situation where a particular post may have the following information:
Owner = example.com/@forum
Author (of the post) = example.social/@user
Category = example.com/forum/category/activitypub
Thread = example.com/forum/post/12345
With this information, an inbox can be set up to show threads that are a specific category and ignore the rest. Or ignore certain authors without unfollowing the thread.
In this scenario, you would need to specify which is the thread and which is the category, because the conversation can be pulled from the thread, but not the category.
You can do the same thing with blog posts. Follow a blog, but only see blog posts with specific categories. -
infinite love ⴳreplied to infinite love ⴳ on last edited by
@evan @erincandescent @julian @mikedev @silverpill historical evidence that is also relevant here:
https://github.com/w3c/activitystreams/issues/300
https://github.com/w3c/activitystreams/issues/238#issuecomment-153408442
-
infinite love ⴳreplied to Scott M. Stolz on last edited by
@scott Yes, correct. I think that the link relation (or semantic property relation) is what lets you do that. Imagine if instead of context/audience/tag/etc we just had a single property `itemOf` and it was just a grab-bag of every single collection that contained the current object. That wouldn't be very useful! So we use the semantic properties and we can filter against the semantic properties. Simply being in a collection is usually insufficiently semantic -- we need to specify how/why.
-
infinite love ⴳreplied to infinite love ⴳ on last edited by
@scott Which is to say, an object can have:
- a `context` in which it exists and by which it should be grouped,
- an `audience` to which it is scoped and for which it can be considered relevant
- some `tag` to which it refersThe question is, what does a "category" represent semantically? If the "category" is an actor, then perhaps it is appropriate to say it is part of the `audience`. Otherwise, you might `tag` the "category" instead. Or you might define some other relation.
-
Evan Prodromoureplied to infinite love ⴳ on last edited by
@trwnh @erincandescent @julian @mikedev @silverpill
> [...] unless you want everyone to manually join every single room one-at-a-time.
This has always been my experience with chat rooms. People join (or enter) the room, make posts to the room that are visible to everyone "in" the room, and some time -- maybe years later -- leave the room.
Regardless: groups and threads are not the same thing.
-
Evan Prodromoureplied to infinite love ⴳ on last edited by
@trwnh @erincandescent @julian @mikedev @silverpill yes, `scope` became `audience` and was (incorrectly, I think) made into an addressing property in AP.
-
infinite love ⴳreplied to Evan Prodromou on last edited by
@evan @erincandescent @julian @mikedev @silverpill Joining a Discord guild (the Group, loosely) gives you access to multiple rooms/channels (a bunch of Collections) all at the same time. Each channel could be rendered as a chat room or as a forum thread or however you want to display a collection of objects.
Essentially, `audience` and `context` are converse properties. In many cases, the "group" is the `audience` and the "thread" is the `context`. This is emergent behavior in NodeBB/Discourse.
-
infinite love ⴳreplied to infinite love ⴳ on last edited by
@evan @erincandescent @julian @mikedev @silverpill I suppose it could be complicated a bit when you start to consider rooms/channels/threads/topics/etc that are limited to a subset of the group/audience, for example via a roles system. But that's something I don't want to think about yet; at least not until we have a foundation that works for representing posts and contexts and audiences
-
Scott M. Stolzreplied to Evan Prodromou on last edited by@Evan Prodromou To put it another way, there are several levels.
1. Things you can join and follow, such as chat rooms, discussion groups, and forums. It has a membership, and the administrator controls who is a member and who is not. When you join, you automatically follow it.
2. Categorization and curation, such as tags, categories, lists, etc. This can be filtered against by the recipient. Or, if offered, can be followed.
3: Specific conversations, which can include forum threads, Facebook-style threads, direct message conversations, etc. This keeps conversations in a container so they are easier to read. -
Scott M. Stolzreplied to infinite love ⴳ on last edited by@infinite love ⴳ You cannot assume the audience is the same as the category, context, forum, or sender. Some software, such as Hubzilla, has access control. You can set the audience for each individual thread.
Also, what happens when a post has multiple contexts? It is part of a category that you can follow. It was placed in a curated list of posts that you can follow. And it is also part of a thread that is in a forum you can follow. You have three contexts and three actors for the same post.
If you are displaying posts (notes, articles, whatever) as part of a conversation, then knowing which one of those is the thread would be useful. -
infinite love ⴳreplied to Scott M. Stolz on last edited by
@scott objects can exist in multiple contexts, same as how an object can be in reply to multiple objects.
The part where I disagree is that not everything needs to be a `context`. A "category" is just a taxonomy, like any tag; the posts exist separately from that taxonomy. A "curated list of posts" is just a Collection, and the posts exist separately from that curated collection.
To figure out what is a context, ask: "does this post make sense on its own?" if no, it exists in some context.
-
infinite love ⴳreplied to infinite love ⴳ on last edited by
@scott That is to say, the audience/category/context/forum/sender are all separate concepts. It's fine to set an audience for each thread separately. It's also fine to set an audience for each post separately. But if the post is meant to be viewed in the thread, then that thread is serving as a context. "Context" is loosely something that provides reason, purpose, understanding. It's got nothing to do with being in a collection or being followable (although a context MAY be those things.)