LemmyNet / lemmy

🐀 A link aggregator and forum for the fediverse
https://join-lemmy.org
GNU Affero General Public License v3.0
13.21k stars 876 forks source link

Mirror remote communities #599

Closed duck57 closed 4 years ago

duck57 commented 4 years ago

I'll try to explain by an example. I'll be the admin of percussion.tk, an instance primarily for drummers and other percussionists. rabbits.org will be a remote instance filled with house rabbit lovers.

Simple Mirroring

My users have asked me to mirror rabbits.org/c/assicalmusic because percussion.tk has a large presence on rabbits.org's classical music community and it's representative of our classical music discussion. Once mirroring is set up, percussion.tk/c/assicalmusic is identical to the community on rabbits.org, including moderators and their decisions.

In tl;dr form, a remote community is mirrored locally and added to the instance front page as if it's local.

Is this similar to what is discussed in #578?

Name Collisions

In spite of being intended for drummers, percussion.tk/c/horses is a highly active discussion forum for the care of horses with a focus on show jumping. rabbits.org/c/horses is mostly focused on horse pictures. Both instances wish to mirror each other's equestrian community but do not want to rename or otherwise move their current community. They can still mirror each other under new community names, such as rabbits.org/c/showjumping and percussion.tk/c/ponypics.

Multi-level requests

If moose.dewlap wishes to mirror rabbits.org/c/showjumping from the above example, they will be notified that it really is percussion.tk/c/horses and may proceed to mirror from the source as usual.

When things go wrong

I foresee two ways in which mirroring can go wrong:

  1. The source instance going down
  2. Incompatible rule change or enforcement from the source instance

Rogue admins and mods can cause either of the above, but these situations can arise with no malice involved by any party.

If being mirrored no longer suits the needs of your instance, you may make a one-way decision to break the mirror.

Once the mirror has been broken, an automatic un-deletable notification post will be made to your new local community copy with an optional field to explain why you chose to break the mirror. The local admin may then appoint new moderators or leave the local community in a frozen unmoderated state (no new posts may be made until mods are chosen). To handle rogue moderators, moderation deletions in the past 7 days may be reverted by the local admins or new local mod team. However, any older moderation deletions that were mirrored over are permanent.

Incompatible Rule Change Example 1

We're mirroring rabbit.org's /c/furries and they change the rules to allow NSFW content. percussion.tk/c/furry_nsfw already exists, so the mirror is broken. Additionally, the moderators of rabbit.org/c/furries have been deleting posts from percussion.tk users arguing against the rule change. After the mirror is broken, the newly-minted mods of percussion.tk/c/furries delete any remaining NSFW posts and restore the posts arguing against the rule change as their documentation for why they broke the mirror.

Rule Change Split Example 2

Rabbit.org decides that they will no longer allow memes on rabbit.org/c/assicalmusic because they have made rabbit.org/c/classicalmemes. The percussion.tk admin team decides to break the mirror after their local users tell them they are opposed to the rule restriction.

Remote Server Down

moose.dewlap decides to shut down. I've been mirroring moose.dewlap/c/happy-hardcore. After a specified duration without any contact with moose.dewlap (or after receiving an instance deletion message), percussion.tk automatically breaks the mirror.

Configuration

Moderator & Community

Admin & Server

This section is notably longer than the community settings because it would be instance admins who set up new mirrors and break incompatible ones.

Open Questions

Nutomic commented 4 years ago

I didnt read your whole text, but it sounds like you are essentially talking about activitypub federation. That is what we are working on right now. It will take time to reach the initial implementation though, and until then, we wont know how things like moderation etc will work. So be patient.

Nutomic commented 4 years ago

Closing this because its really too general and its not clear what we can do here. If you want to contribute towards our ActivityPub implementation, I suggest you read the spec and other documentation, and have a look at our code.

Edit: And check out all the issues tagged with "federation" to see what needs to be done.