throat icon indicating copy to clipboard operation
throat copied to clipboard

Federation roadmap

Open Polsaker opened this issue 4 years ago • 1 comments

We've been discussin for years about implementing federation and it's about time to start consolidating the discussion into a ticket so we can eventually implement it.

So far we want:

  • Federation to be opt-in: instances should be able to decide who they want to federate with (maybe it should be more like networking rather than actual federation)
  • Each site handles their own userbase and registration/authentication (no centralized user database)
  • The ability to view other sites' frontpages
    • Allow instances to add other sites' subs as defaults?
  • The ability to comment and vote on other sites' posts
    • The server hosting the post should be the one deciding who can vote/comment and keep count of the votes

The questions:

  • How would banning work? Since each instance manages their own users, if a user is banned on their home server they won't be able to post at all, but what happens if the user is banned in another instance in the network? Should bans propagate (like on IRC) or should we have a consensus mechanism?
  • We will probably need some form of state-keeping/caching so we don't flood remote servers with requests. At least a way to keep an up-to-date cache of the most requested remote resources

The (prospective) work to be done:

  • [ ] Add a way to authenticate remote instances. Probably using client-side certificates should be good enough
  • [ ] Implement a way to handle remote users/subs (for most of all possible actions). Posts/subs will need to support remote users adding posts/comments
    • Maybe adding a isRemote and server flags to the user table and adding the user (if it doesn't exist) when the remote user performs an action?
  • [ ] Implement server-to-server APIs for:
    • [ ] Posting
    • [ ] Voting
    • [ ] Sending PMs/notifications
    • [ ] Deleting/flairing/moderation? (if we decide to allow remote users to moderate local subs)

Polsaker avatar Jan 18 '21 00:01 Polsaker

How would banning work? Since each instance manages their own users, if a user is banned on their home server they won't be able to post at all, but what happens if the user is banned in another instance in the network? Should bans propagate (like on IRC) or should we have a consensus mechanism?

My vote would be for this:

  1. If banned on home server, account is banned across the federation.

  2. If banned on remote server, account is banned on that server. Account has read-only access to the server of the ban, or perhaps give servers the option of whether to revoke complete access. The latter option is useful for sites that wish to remain somewhat private, where anonymous usage has restricted access.

E-werd avatar Jan 18 '21 01:01 E-werd