From 835a03ba6d25d0f1726c4eb61b6428144002bcca Mon Sep 17 00:00:00 2001 From: Andrei Guliaikin Date: Sun, 18 Apr 2021 21:59:19 +0200 Subject: [PATCH] Create overview.md --- src/ru/federation/overview.md | 123 ++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 src/ru/federation/overview.md diff --git a/src/ru/federation/overview.md b/src/ru/federation/overview.md new file mode 100644 index 0000000..6eb8029 --- /dev/null +++ b/src/ru/federation/overview.md @@ -0,0 +1,123 @@ +# Обзор Федерации + +Этот документ предназначен для всех, кто хочет знать, как работает федерация Lemmy, не вдаваясь в технические подробности. Он предназначен для предоставления общего принципа работы федерации ActivityPub в Lemmy. Если вы сами реализуете ActivityPub и хотите быть совместимым с Lemmy, прочтите наши [ActivityPub API outline](contributing_apub_api_outline.md). + +## Соглашения документации + +Чтобы не усложнять, иногда вы можете увидеть вещи в формате `Create/Note` или `Delete/Event` или `Undo/Follow`. То, что перед косой чертой - это Activity, а то, что после косой черты - это объект внутри Activity в свойстве `object`. Итак, это следует читать следующим образом: + +* `Create / Note`: действие` Create`, содержащее `Note` в поле` object`. +* `Delete / Event`: действие` Delete`, содержащее `Event` в поле` object` +* `Undo / Follow`: действие` Undo`, содержащее `Follow` в поле` object` + +В Lemmy мы используем определенные термины для обозначения элементов ActivityPub. По сути, это наши конкретные реализации хорошо известных концепций ActivityPub: + +- Сообщество: `Group` +- Пользователь: `Person` +- Пост: `Page` +- Комментарий: `Note` + +Этот документ состоит из трех основных разделов: + +* __Философия федерации__ излагает общую модель того, как это должно быть федеративным +* __Действия пользователя__ описывает, какие действия может предпринять Пользователь для взаимодействия +* __Активность сообщества__ описывает, что Сообщество делает в ответ на определенные действия Пользователя. + +## Философия федерации + +Основным действующим лицом в «Lemmy» является Сообщество. Каждое сообщество находится в единственном экземпляре и состоит из списка сообщений и списка подписчиков. Основное взаимодействие заключается в том, что Пользователь отправляет пост или комментарий, связанный с публикацией или комментарием в сообществе, который затем аннонсируется об этом всем подписчикам. + +В каждом Сообществе есть определенный Пользователь-создатель, который отвечает за установку правил, назначение модераторов и удаление контента, нарушающего правила. + +Помимо модерации на уровне сообщества, у каждого экземпляра есть набор пользователей-администраторов, которые имеют право выполнять удаление и блокировку на уровне всего сайта. + +Пользователи следят за интересующими их сообществами, чтобы получать сообщения и комментарии. Они также голосуют за сообщения и комментарии, а также создают новые. Комментарии организованы в виде древовидной структуры и обычно сортируются по количеству голосов. Также поддерживаются прямые сообщения между пользователями. + +Пользователи могут не подписываться друг на друга, или не следовать за каким либо сообществом. + +Наша реализация федерации уже завершена, но на данном этапе, мы не совсем сосредоточились на соблюдении спецификации ActivityPub. В связи с этим, Lemmy, пока, несовместима с реализациями, которые должны давать возможность отправлять и получать рабочую активность. Это то, что мы планируем исправить в ближайшем будущем. Проверить [#698](https://github.com/LemmyNet/lemmy/issues/698) обзор наших несоответствий. + +## Действия пользователя + +### Следовать за сообществом + +На каждой странице сообщества есть кнопка «Подписаться». Нажатие на нее запускает действие `Follow`, которое будет отправлено пользователем в почтовый ящик сообщества. Сообщество автоматически ответит на почтовый ящик пользователя действием `Accept/Follow`. Он также добавит пользователя в свой список подписчиков и предоставит пользователю информацию о сообщениях и комментариях в Сообществе. + +### Отписаться от Сообщества + +После подписки на сообщество кнопка «Подписаться» заменяется на «Отписаться». При нажатии на нее в почтовый ящик Сообщества отправляется действие `Accept/Follow`. Сообщество удаляет пользователя из списка подписчиков и больше не отправляет ему никаких действий. + +### Создать пост + +Когда пользователь создает новое сообщение в определённом сообществе, оно отправляется как `Create/Page` в входящие Сообщества. + +### Создать комментарий + +Когда новый комментарий создается для сообщения, идентификатор сообщения и родительский идентификатор комментария (если он существует) указывается в поле `in_reply_to`. Это позволяет привязать его к нужному посту и построить +дерево комментариев. Затем он отправляется во входящие сообщения сообщества как `Create/Note` + +Экземпляр-источник также сканирует комментарий на предмет упоминания любого пользователя и отправляет `Create/Note` этим Пользователям. + +### Редактировать Пост + +Изменение содержания существующей публикации. Может быть выполнено только создавшим его пользователем. + +### Редактировать комментарий + +Изменение содержания существующего комментария. Может быть выполнено только создавшим его пользователем. + +### Нравится и Не нравится + +Пользователям могут нравится или не нравится любые сообщения или комментарии. Они отправляются `Like/Page`, `Dislike/Note` и т.д. в ящик Сообщества. + +### Удаление + +Создатель сообщения, комментария или сообщества может его удалить. Об этом сообщается подписчикам сообщества. Затем элемент скрывается от всех пользователей. + +### Удаления + +Модераторы могут удалять сообщения и комментарии из своих сообществ. Администраторы могут удалять любые сообщения или комментарии со всего сайта. Сообщества также могут быть удалены администраторами. Затем элемент скрывается от всех пользователей. + +Об удалении сообщается всем подписчикам Сообщества, поэтому они вступают в силу и там. Исключение составляют случаи, когда администратор удаляет элемент из Сообщества, размещенного в другом экземпляре. В этом случае удаление вступает в силу только локально. + +### Отмена предыдущего действия + +Мы ничего не удаляем из нашей базы данных, просто скрываем это от пользователей. Удаленные или удаленные Сообщества/Сообщения/Комментарии имеют кнопку «восстановить». Эта кнопка `Undo` генерирует восстановление оригинала удалённой активности как объекта, такого как `Undo/Remove/Post` или `Undo/Delete/Community`. + +Нажатие кнопки "нравится" за публикацию/комментарий, за которую уже проголосовали (или кнопку "не нравится" для публикации/комментария, за которую уже проголосовали), также генерирует сообщение как `Undo`. В этом случае `Undo/Like/Post` или `Undo/Dislike/Comment`. + +### Создать личное сообщение + +В профилях пользователей есть кнопка «Отправить сообщение», которая открывает диалоговое окно, позволяющее отправить личное сообщение этому пользователю. Отправляется как `Create/Note` во Входящие пользователя. Личные сообщения могут быть адресованы только одному,конкретному Пользователю. + +### Редактирование личного сообщения + +`Update/Note` изменяет текст предыдущего отправленного сообщения. + +### Удалить личное сообщение + +`Delete/Note` удаляет личное сообщение. + +### Восстановить личное сообщение + +`Undo/Delete/Note` возвращает удалённое личное сообщение. + +## Активность Сообщества + +Сообщество - это, по сути, бот, который будет делать что-либо только в ответ на действия пользователей. Пользователь, который первым создал Сообщество, становится первым модератором и может добавлять дополнительных модераторов. Как правило, всякий раз, когда Сообщество обнаруживает активность во входящих, оно пересылается всем его подписчикам. + +### Подтверждение подписки + +Если Сообщество получает `Follow` активность, это автоматически активирует ответ `Accept/Follow`. И добавляет Пользователя в список подписавшихся. + +### Не следовать + +Однажды получив `Undo/Follow`, Сообщество удаляет Пользователя из списка подписчиков. + +### Уведомление + +Если Сообщество получает какие-либо действия, связанные с публикациями или комментариями (Создать, Обновить, Нравится, Не нравится, Удалить, Убрать, Отменить), оно Уведомляет об этом своих подписчикам. В связи с этим, Уведомление создаётся как действие , и принимается как объект активности. Таким образом, следующие экземпляры будут в курсе любых действий в сообществах, за которыми они следят. + +### Удалить Сообщество + +Если создатель или администратор удаляет Сообщество, это отправляет `Delete/Group` всем его подписчикам.