infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 17:09:21
@julian @silverpill We could define a dedicated type for Thread or Conversation or whatever you want to call "a Collection that contains only "post" objects", but it would still be a Collection as well. I think this was something I was considering for a FEP that I ended up never really writing because it felt unnecessary and also very premature. The general idea is to define some way to know what a Collection "contains" -- is it a Conversation or a MediaAlbum or whatever. The problem is taxonomy
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 17:12:39
@julian @silverpill Really we need to take a step back and first define what a "post" object is. I'm tentatively leaning toward "any object that has content", but I'm sure there are plenty of edge cases I haven't accounted for that will pop up when thinking more deeply about the issue.
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 17:15:14
@trwnh @julian @silverpill Content types? Note, Article, Image, Video, Audio, Document? That should cover most Web content collections.
If you want to add an extension (Listicle, say) you could multi-type with the most appropriate Activity Vocabulary content type (`type`: ['buzz:Listicle', 'as:Article']`).
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 17:16:00
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 17:23:29
@evan @julian @silverpill This goes back to a convo from yesterday about how to handle Activity types with content, which conceivably makes them "posts" in the sense of an "activity stream". ("John Created a Note" is a first-class item in much the same way "Sally Liked a Note" is also a first-class item in Facebook's activity feed, or "Alice Added 9 Images to a MediaAlbum" would be.)
If you put content on an Announce, then that Announce is ostensibly its own "post" in addition to being a share.
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 17:25:24
@evan @julian @silverpill But yes, in most cases, you will probably be using types such as Note or Article.
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 17:26:58
@trwnh @julian @silverpill especially in a forum thread, right? It's just not the place you put an `TentativeReject` activity or a `Relationship` object.
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 17:25:42
@trwnh @julian @silverpill OK. I mean, we just call that an `Object`.
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 17:30:23
@evan @julian @silverpill In terms of a potential WIP FEP, I would tentatively define a Conversation as a Collection where each item has at least `content`. I would likewise define a MediaAlbum as a Collection where each item is an Image or Video. There are probably other type definitions that could make sense.
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 17:35:42
@trwnh @julian @silverpill yeah, I just don't like the ducktyping on the 'content' property.
Erin 💽✨ (@erincandescent@akko.erincandescent.net)
Föderation EN Di 17.09.2024 17:36:33
julian (@julian@community.nodebb.org)
Föderation · Di 17.09.2024 17:40:06
@erincandescent@akko.erincandescent.net said:
So I lean towards the idea that you should just redirect to the first thread in the post, and place the context (which when becomes just a collection of in-thread posts; an implementation detail) at another URL where it mostly becomes invisible to users.
That's why I'm still on the fence about this whole thing. In principle, a thread object can and does exist in software, but in practice there is lots of prior art that says otherwise.
That said, email might be a threaded chain of messages, but most email clients I know have standardized around representing them as a discrete topic, if only in the UI.
@trwnh@mastodon.social @evan@cosocial.ca @silverpill@mitra.social
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 17:45:00
@julian @erincandescent @evan @silverpill Let me put it this way: the latter half of FEP-7888 can be summarized as "reifying context as an object, and specifically a Collection". If you *just* want the grouping, then it could be an arbitrary opaque IRI. But what you gain by reifying the context as an object is specifically the ability to give it metadata properties. Particularly things like `attributedTo` or `audience`. Maybe even `followers` or `outbox`. An opaque IRI cannot do this.
Erin 💽✨ (@erincandescent@akko.erincandescent.net)
Föderation EN Di 17.09.2024 17:48:16
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 17:50:44
@trwnh @julian @erincandescent @silverpill you can also get the whole thing! That's the big benefit of having a `Collection` -- you can retrieve it.
silverpill (@silverpill@mitra.social)
Föderation · Di 17.09.2024 18:01:46
@julian I reported this to you because one user asked me "why I can't discover this NodeBB thread from my instance?". I think this is going to happen quite often across the Fediverse.
Maybe in the future we will figure out how to deal with these collections, but right now this leads to a bad user experience
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 18:10:11
@silverpill @evan@cosocial.ca @erincandescent @julian @evan@community.nodebb.org I'd prefer impls update to support showing threads/collections, rather than NodeBB being held back. UX will get better as other impls update.
At the very least, browser.pub can do it! :P
Erin 💽✨ (@erincandescent@akko.erincandescent.net)
Föderation EN Di 17.09.2024 18:18:04
Erin 💽✨ (@erincandescent@akko.erincandescent.net)
Föderation EN Di 17.09.2024 18:32:39
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 18:35:48
@erincandescent @julian @evan@community.nodebb.org @trwnh @silverpill Standards are about making arbitrary decisions in the pursuit of uniformity.
Erin 💽✨ (@erincandescent@akko.erincandescent.net)
Föderation EN Di 17.09.2024 17:42:51
@trwnh @julian @silverpill (the other option is instead of redirection do <link>
tags, and then you can link to both if you wish; imagine including <link rel="as:context" href="...">
)
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 17:49:23
@erincandescent @julian @trwnh @silverpill a thread is a tree with a root. Every non-root node in the tree has an `inReplyTo` that points to one of the other nodes.
It's represented by a `Collection` in the `context` property of each object. (I don't like this, but it's common so we should just use it).
It's in reverse-chronological order.
If you started at the root node and walked the tree using the `replies` collection, you should visit exactly the same nodes as in the `context` collection.
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 17:56:40
@evan @erincandescent @julian @silverpill I don't think a thread *has* to be a tree -- it's a set. The "reply tree" is a separate structure. Threads can be forked out of other threads.
(I also dislike "reverse chron" and heavily favor "forward chron", but custom sorting of collections is not well-specced rn so that's a future step.)
silverpill (@silverpill@mitra.social)
Föderation · Di 17.09.2024 18:11:39
@trwnh @evan @erincandescent @julian +1 for forward chron, that way you can start displaying posts without fetching the whole thread
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 18:13:49
@silverpill @trwnh @erincandescent @julian Use the `last` property to start with the oldest page.
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 18:17:00
@silverpill @trwnh @erincandescent @julian Also, I think you're imagining some kind of pre-order traversal sorting. If you want that, it's a lot easier to just walk the `replies` tree.
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 18:23:16
@evan @silverpill @erincandescent @julian just seems backwards to me, for no real reason. if you wanted reverse chron viewing of a forward chron collection, then it makes sense to fetch `last` and page backwards.
at the very least, `startIndex` as a property of OrderedCollectionPage makes **way** more sense with a forward chron presentation.
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 18:27:13
@trwnh @silverpill @erincandescent @julian
It's bad for caching to do forward chron, which is why we don't do it anywhere else.
Also, it does not help you build a tree structure; older nodes are not necessarily at the top of the tree.
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 19:01:34
@evan @silverpill @erincandescent @julian why is it bad for caching? it seems like the opposite to me -- reverse-chron means that pages are constantly updating and are almost never consistent! each new item in the collection pushes everything else behind it, and the last item of the page overflows into becoming the first item of the next page. if you did forward-chron, you could freeze "page 1" as soon as it got full, and move onto "page 2".
also, a viewer can easily tell where they left off.
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 19:04:47
@trwnh @silverpill @erincandescent @julian oh, yes, that's true, if you do "volatile paging" (last 20 pages).
If you have reified pages (item goes in one page and stays there), once the pages are full, they don't change (except for `Remove` activities).
Don't do volatile paging.
If you use reified pages, an add to a reverse-chron collection will typically have changes to `first` and the Collection itself.
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 19:05:59
@trwnh @silverpill @erincandescent @julian
If you have bidirectional links (`first` and `last`) you can have stable collections with rev-chron or forward-chron. So, fair point.
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 19:11:22
@evan @silverpill @erincandescent @julian Yeah, my point is that it seems almost entirely conventional whether to have "reverse" mean first.next.next... or last.prev.prev... -- and I favor the latter approach because it makes more sense imo, no double-inversion ("reverse-reverse chron", anyone?)
Evan Prodromou (@evan@cosocial.ca)
Föderation EN Di 17.09.2024 19:16:14
@trwnh @silverpill @erincandescent @julian Except for most interfaces, your first page is the current stuff, and you go back in time to find earlier stuff.
infinite love ⴳ (@trwnh@mastodon.social)
Föderation EN Di 17.09.2024 19:36:36
@evan @silverpill @erincandescent @julian This is what I meant by "conventional". On a forum thread, you generally read forward. On social media like Twitter, there is a heavy bias toward going reverse. And some interfaces even let you choose ascending or descending order.