From 438a47e07f658beaa506325b78e5ae3f362b3f23 Mon Sep 17 00:00:00 2001 From: 0x1C3B00DA <0x1c3b00da@noreply.codeberg.org> Date: Fri, 7 Jul 2023 07:25:22 +0000 Subject: [PATCH] FEP-3702: Sharing Content Across Federated Forums (#118) This FEP proposes a method of sharing content across federated forums to reduce the amount of duplicate content across forums. Previous discussions can be found on the [/kbin issue](https://codeberg.org/Kbin/kbin-core/issues/149) and the [lemmy issue](https://github.com/LemmyNet/lemmy/issues/3071). Co-authored-by: Zachary Dunn Reviewed-on: https://codeberg.org/fediverse/fep/pulls/118 Co-authored-by: 0x1C3B00DA <0x1c3b00da@noreply.codeberg.org> Co-committed-by: 0x1C3B00DA <0x1c3b00da@noreply.codeberg.org> --- fep/d36d/fep-d36d.md | 60 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 fep/d36d/fep-d36d.md diff --git a/fep/d36d/fep-d36d.md b/fep/d36d/fep-d36d.md new file mode 100644 index 0000000..2ae3a46 --- /dev/null +++ b/fep/d36d/fep-d36d.md @@ -0,0 +1,60 @@ +--- +slug: "d36d" +authors: Zack Dunn +status: DRAFT +dateReceived: 2023-07-01 +--- +# FEP-d36d: Sharing Content Across Federated Forums + +## Summary + +New instances on the threadiverse (servers that implement ActivityPub with FEP-1b12) are often seeded with forums for common +interests, leading to multiple servers having similar forums. Users may dislike having to follow what they perceive to be +"duplicate" forums or keep up with multiple discussions on the same topic across multiple servers. This document describes a +method for allowing `Group` actors to share content to reduce posting of a single link multiple times, which reduces what users +see as "duplicate" posts and fragmented conversations across multiple forums. + +## History + +FEP-1b12 introduces federated forums and is implemented by [Lemmy](https://github.com/LemmyNet/lemmy/), [/kbin](https://codeberg.org/Kbin/kbin-core/), and [Friendica](https://github.com/friendica/friendica). + +The site [reddit](https://old.reddit.com) has a feature for grouping its forums, called subreddits, into a new forum, called a +multireddit. A multireddit is a feed made up of the combination of each of its constituent subreddits and allows a user an easy +way to keep up with multiple related forums. Because subreddits can be in multiple multireddits, multireddits don't affect +moderation of links posted to individual subreddits and a link can be posted to more than one constituent subreddit within a +multireddit. + +## Group to Group Follows + +When a moderator of a federated forum determines that their forum overlaps in topic with another forum, they can direct the +`Group` actor to send a `Follow` activity to the other forum's `Group` actor. FEP-1b12 specifices that a group should +automatically respond with an `Accept/Follow`, but this document overrides that for `Follow` activities with an `actor` of type +`Group`. After receiving a `Follow` activity from another `Group`, the group MAY automatically respond with an `Accept/Follow` +or a moderator may instruct the group to reply with a `Reject/Follow`. After replying with a `Accept/Follow` activity, the +group that received the `Follow` activity MAY automatically add the first group to its `following` collection, creating a +symmetric relationship. + +This document makes no change to the handling of an `Undo/Follow` activity. If a group receives an `Undo/Follow` from a `Group` +actor, it MAY automatically remove the other group from its `following` collection. + +## Activity Handling + +When a group receives an activity in its `inbox`, it SHOULD perform automatic validation as described in FEP-1b12. If that +validation includes deduplication (via the `url` property of the activity's `object`, the `url` of any attachements, or any +other method), that deduplication validation MUST include objects received from followed groups. If an activity fails this +deduplication validation, the group MUST respond with a `Reject` activity where the `object` property is the `object` from +the inbox activity and the `target` object is the object that the new object duplicates. This ensures that content is posted +only once across related forums and a forum can provide navigation to an original post when a user tries to post a duplicate. + +If the incoming activity is deemed valid, the group MUST handle it according to FEP-1b12 handling of valid activities. + +## References +[FEP-1b12] Felix Ableitner, [FEP-1b12: Group federation](https://codeberg.org/fediverse/fep/src/branch/main/fep/1b12/fep-1b12.md) + +## Copyright + +CC0 1.0 Universal (CC0 1.0) Public Domain Dedication + +To the extent possible under law, the authors of this Fediverse Enhancement Proposal have waived all copyright and related or +neighboring rights to this work. +