Can someone point me to a good technical 101 for Mastodon? Or OStatus? Trying to understand: When I make a post, how does another instance find out about it to show to my followers there or the federated timeline?
@NthTensor Yaaaaaas. That shown is probably what I need. Thanks!
@benhamill That wont cover all of it. I am still working through the related reading. https://github.com/tootsuite/documentation/blob/master/Specs-and-RFCs-used.md
—
If I am right, and I am likely not, salmon handles the actual updating of the other servers.
http://www.salmon-protocol.org/
@benhamill This is probably less-detailed than what you need, but:
https://hackernoon.com/what-i-wish-i-knew-before-joining-mastodon-7a17e7f12a2b
So I think it's the PubSubHubbub portion that does what I'm looking for.
Current understanding: I make a post & my instance pushes that post to each instance where someone follows me.
Which means if some single-user instance's user follows me, but no one on my instance (including me) follows them, then my instance is "aware" of theirs, but not in a way that their posts would show up on our federated timeline.
Anybody poke holes in that?
@benhamill That is correct. Posts show up in the federated timeline if they pass through your instance for one of a number of reasons, the simplest is that someone on your instance follows them. Also replies to posts from your instance.
@benhamill That sounds like the correct interoperation, yes.
—
No one on the server has asked for toots from your single user server, so the larger instances doesn't ask for them.
—
Replies to things might federate. And of course, the occasional toot might find it's way to the first server via retooting.
@NthTensor Middle thing reworded and still correct: No one on my instance has asked for posts from the single-user instance, so my instance never subscribed to them on the single-user server and thus the single-user instance doesn't push them to my instance?
Third thing: Yeah. Good clarification.
I'm chasing this because someone mentioned the idea of a new privacy setting where your instance would more closely federate with a short list of other instances (forming a slightly larger community). Basically a list of other instances your posts would go to that wasn't Just Everyone in the Federation:tm:. I'm trying to understand how that might work on a technical level and it doesn't sound super hard or breakey.
@benhamill It depends on who runs the servers and how close you want them to be...
—
You could fork the main code, and create a p2p pipeline between the instances so that all toots from one are assured to end up on the other two...
—
That only works if the admins of the servers are willing to all use the same codebase.
@benhamill Anther solution is follow bots; but at that point, why not just implement them directly in code. After all, you want a closed system.
—
Follow bots are necessary because they allow for extension over the entire network. You do not require that.
@NthTensor Nah. 100% solve it in Ruby. If I implemented this, I'd be looking at a PR against mainline Mastodon. I don't want a closed system, I want an inner circle and an outer circle, both.
I think I grok this well enough that I might at least open an Issue to discuss it with maintainers.
@benhamill Tell us how this turns out. I am interested.
@benhamill Instances such as https://awoo.space use a whitelisting vs. blacklisting approach to federation. It would also be possible to allow federation with all instances but limit the federated timeline to a subset. An instance can't do much about where toots go once they leave the instance though. Privacy is difficult in a federated system.
@binary @NthTensor In this case, though, if you posted with the new setting, it would just never notify those instances not in the allow-list. And you'd still have the "Public" setting that would go wherever.
Boosts and such could potentially break your post out, but that's true of Unlisted and Private today, right?
@benhamill @NthTensor I think that's right.
@benhamill when someone follows you on another instance, that instance connects to your instance.
—
When you post, your instance sends out a message to all the instances connected to it that you posted.
@benhamill The best advice I can give is to comb trough related issues on github, or just read the protocol specification. https://ostatus.github.io/spec/OStatus%201.0%20Draft%202.html
—
Someone on irc might be able to help... irc.freenode.net#mastodon