zachpmanson / mastodon-unroller

A reader for long Mastodon threads
https://unroller.zachmanson.com
1 stars 0 forks source link

Children sometimes not appearing #5

Open zachpmanson opened 4 months ago

zachpmanson commented 4 months ago

This may be a problem with fedi/mastodon itself.

Problem A

These three posts are a reply chain, but you cannot see the 2 and 3 posts in the replies to 1. You can see 1,2,3 from 2 and 3.

  1. https://octodon.social/@craigmaloney/111926434774366874
  2. https://mstdn.social/@rysiek/111926478069997103
  3. https://orbital.horse/@emma/111926547684004289

External servers such as toot.cafe appear to be able to see all three: https://toot.cafe/@craigmaloney@octodon.social/111926435093871758

This is reflected in unroller. Going to /tree/{1} does not show 2,3. Going to /tree/{2} shows 2,3 (parents not shown). Going to /tree/{3} shows 3 (parents not shown). Viewing /tree/toot.cafe/{1} shown 1,2,3.

Problem B

Viewing /tree/{3} shows this post by @rysiek@mstdn.social. This post is missing when viewing /tree/toot.cafe/{1} and /tree/toot.cafe/{3}.

This shows toot.cafe doesn't have a full copy of the conversation either, though this is expected. I thought the original post's instance would have a full copy of all the children, no matter how deeply nested though it appears they don't (as shown by problem B). It also appears that original post's instance can miss a direct reply, as shown in problem A.

zachpmanson commented 4 months ago

Solutions: Problem B can be mitigated by recursively getting replies from child posts. This will fill the entire tree as known by the root instance, then the children instances it links to, then the children those instances link to and so on. This works to fill 100% on the assumption that posts' instances know all their direct replies (though this appears not to be the case, see problem A)

zachpmanson commented 4 months ago

Problem A may not be mitigable if the URL to a root post is passed into unroller, since there's no way to find replies that root post's instance doesn't know about in that case.

When a child post is passed in such as 3, we can recurse up and down the tree to get the entire tree as post 1, post 2, and post 3 are aware of it and their known children.

zachpmanson commented 4 months ago

Unless octodon.social and mstdn.social are defederated/users blocked each other I do not know why 1 and 2 are severed.

zachpmanson commented 4 months ago

Interesting how toot.cafe knows more about the replies than octodon.social though

zachpmanson commented 2 months ago

Related issue in phanpy

A thing trying to solve this issue: https://combine.social