# I am the Watcher. I am your guide through this vast new twtiverse.
# 
# Usage:
#     https://watcher.sour.is/api/plain/users              View list of users and latest twt date.
#     https://watcher.sour.is/api/plain/twt                View all twts.
#     https://watcher.sour.is/api/plain/mentions?uri=:uri  View all mentions for uri.
#     https://watcher.sour.is/api/plain/conv/:hash         View all twts for a conversation subject.
# 
# Options:
#     uri     Filter to show a specific users twts.
#     offset  Start index for quey.
#     limit   Count of items to return (going back in time).
# 
# twt range = 1 14
# self = https://watcher.sour.is/conv/jhncnpq
btw, I don’t want to “push” this spec. 😅 Let’s gather feedback. Let’s carefully think about whether we *really* want to do this.

After all, there *are* other ways of notifying users about followers. Like, just send an e-mail. Or ping someone on IRC. Or whatever. I think that it would *help* if there was a solid built-in mechanism in twtxt – but it’s not *strictly* required.

@benk has already mentioned that this might not be the most pressing issue.

To be completely honest: I’m lazy when it comes to implementing new features and I use HTTP anyway, so this is not my *personal* agenda. 😅 I’d be perfectly happy with dropping this idea, if it doesn’t gain enough momentum.
btw, I don’t want to “push” this spec. 😅 Let’s gather feedback. Let’s carefully think about whether we *really* want to do this.

After all, there *are* other ways of notifying users about followers. Like, just send an e-mail. Or ping someone on IRC. Or whatever. I think that it would *help* if there was a solid built-in mechanism in twtxt – but it’s not *strictly* required.

@benk has already mentioned that this might not be the most pressing issue.

To be completely honest: I’m lazy when it comes to implementing new features and I use HTTP anyway, so this is not my *personal* agenda. 😅 I’d be perfectly happy with dropping this idea, if it doesn’t gain enough momentum.
btw, I don’t want to “push” this spec. 😅 Let’s gather feedback. Let’s carefully think about whether we *really* want to do this.

After all, there *are* other ways of notifying users about followers. Like, just send an e-mail. Or ping someone on IRC. Or whatever. I think that it would *help* if there was a solid built-in mechanism in twtxt – but it’s not *strictly* required.

@benk has already mentioned that this might not be the most pressing issue.

To be completely honest: I’m lazy when it comes to implementing new features and I use HTTP anyway, so this is not my *personal* agenda. 😅 I’d be perfectly happy with dropping this idea, if it doesn’t gain enough momentum.
@movq I agree with the gather feedback. Email and IRC doesn't work all the time, specially if you don't know who they are on email or IRC. If communication across HTTP users and Gemini users is wanted, or even between Gemini users themselves, this is rather important. At least, I see it that way.
@david The problem is there aren't enough mechanisms in Gemini or Gopher to build any useful experiences IMHO 😢
@david The problem is there aren't enough mechanisms in Gemini or Gopher to build any useful experiences IMHO 😢
@apex So we solve this in Yarn.social pods by peering with neighbouring pods and injecting Twts by hash which we can retrieve by simple JSON endpoints. This means we can avoid the need to "soft-follow" or "follow" the world just to get a complete "thread". In case this works quite well. -- Technically any client can peer with a Yarn.social pod too actually -- Might be worthwhile documenting the protocol, it's quite simple really.
@apex So we solve this in Yarn.social pods by peering with neighbouring pods and injecting Twts by hash which we can retrieve by simple JSON endpoints. This means we can avoid the need to "soft-follow" or "follow" the world just to get a complete "thread". In case this works quite well. -- Technically any client can peer with a Yarn.social pod too actually -- Might be worthwhile documenting the protocol, it's quite simple really.
Or you could just spin up a yarnd pod 😅
Or you could just spin up a yarnd pod 😅
@apex Sorry, what's what called? The WebMention handlers or the Peering code that handles injection of Twts amongst peers to "fill in missing" gaps without requiring users to "follow the world"? 🤔
@apex Sorry, what's what called? The WebMention handlers or the Peering code that handles injection of Twts amongst peers to "fill in missing" gaps without requiring users to "follow the world"? 🤔
@apex It is mostly all in internal/cache.go if you're looking at the source tree already.

The "magic"™ all happens here:

=> [Cache.Converage()](https://git.mills.io/yarnsocial/yarn/src/branch/main/internal/cache.go#L1228-L1281)

It's called internally "Cache Convergence". Every time we fetch feeds, we converge the globally shared cache (_shared amongst users of a pod_) with other peers for things like "missing roots" and (TBD) "missing side of a conversation"=
@apex It is mostly all in internal/cache.go if you're looking at the source tree already.

The "magic"™ all happens here:

=> [Cache.Converage()](https://git.mills.io/yarnsocial/yarn/src/branch/main/internal/cache.go#L1228-L1281)

It's called internally "Cache Convergence". Every time we fetch feeds, we converge the globally shared cache (_shared amongst users of a pod_) with other peers for things like "missing roots" and (TBD) "missing side of a conversation"=