Fediverse Enhancement Proposals
Поддерживаемые нами FEP
FEP (Fediverse Enhancement Proposals) это общие договорённости о том, как приложения ActivityPub работают с определёнными вещами. Здесь каждый из поддерживаемых нами FEP, насколько полно мы его поддерживаем, и ссылка на полное предложение.
В будущем мы планируем выпустить Welley с открытым исходным кодом. Дата выпуска и лицензия пока не объявлены.
-
FEP-044f
Цитирующие публикации с учётом согласия
Авторы могут решать, можно ли цитировать их публикации на других серверах.
Welley поддерживает запросы на цитирование, проверки авторизации, принятие, отклонение и отзыв.
- Welley отправляет и принимает активности QuoteRequest и обрабатывает принятие или отклонение запроса.
- Штампы авторизации цитирования позволяют принимающим серверам проверить, что автор согласился.
- Отзыв отменяет разрешение на цитату, которое автор дал раньше.
Чтобы это работало так же, другим серверам нужен протокол согласия. Простая ссылка или более старое расширение для цитат не показывает, что автор согласился.
-
FEP-1311
Медиавложения
Welley отправляет и принимает медиавложения и умеет читать несколько версий одного файла.
Welley поддерживает обмен вложениями и чтение вариантов. Некоторые рекомендации и формы вывода поддерживаются в меньшей степени.
- Welley принимает один URL медиа или типизированный массив ссылок на медиа.
- Он может использовать варианты размеров и изображения предпросмотра из удалённых вложений.
- Для отправки массивов URL с несколькими вариантами нужен флаг конфигурации, и по умолчанию он выключен.
Welley не реализует предложение целиком. В частности, он не обрабатывает digestMultibase, а для совместимости по умолчанию отправляет один основной URL.
-
FEP-1b12
Федерация групп
Публичные каналы групп могут обмениваться публикациями и комментариями с сообществами ActivityPub в формате форумов.
Публичные каналы поддерживают стандартные акторы Group и схемы работы с анонсами.
- Публичный канал использует стандартный актор Group.
- Канал делится принятыми публикациями через активности Announce и сохраняет исходного автора.
- Welley принимает анонсы от групп и помещает содержимое в нужный канал.
Закрытые сообщества Welley используют дополнительные свойства Welley. Не все настройки групп, правила участия и действия модерации переносятся в другое программное обеспечение.
Форум в режиме просмотра по категориям, первой идёт закреплённая приветственная тема. Выше расположены фильтры по категориям и тегам и выбор сортировки. Читать предложениеФорумы и категорииПубличные каналы в Fediverse
-
FEP-3b86
Activity Intents
Ссылки для удалённого взаимодействия могут запоминать, что человек хочет сделать.
Welley поддерживает ссылки WebFinger для отдельных действий и перенаправления для авторизации.
- WebFinger предлагает отдельный шаблон для каждого поддерживаемого действия, например Follow, Like, Announce и Create.
- Поиск групп также включает Join.
- Конечная точка взаимодействия ведёт человека к нужному действию в Welley.
Удалённое приложение должно использовать эти ссылки намерений. Собственные ссылки намерений Vote в Welley являются расширениями. Они не входят в стандартные действия FEP.
-
FEP-5feb
Согласие на индексацию в поиске для акторов
Владельцы профилей могут указать, можно ли показывать их публичные публикации в поисковых индексах.
Welley публикует согласие каждого аккаунта, импортирует согласие с других серверов и соответствующим образом ограничивает локальный текстовый поиск.
- Welley публикует свойство indexable для актора на основе настроек приватности профиля.
- Аккаунты на других серверах должны явно разрешить индексацию, прежде чем их публикации появятся в обычном текстовом поиске.
- Просмотр хештега всё равно может находить публикации автора, который не разрешил индексацию.
Свойство просит другие серверы учитывать согласие. Оно не закрывает доступ к публичным публикациям и не управляет независимыми поисковыми системами.
Часть настроек поиска, рекомендаций и того, кто видит содержимое вашего профиля. Навигацию и данные аккаунта мы обрезали. -
FEP-7458
Использование коллекции ответов
Сервер может запросить ответы у исходной публикации, не дожидаясь их доставки.
Welley публикует коллекции ответов и загружает удалённые.
- Welley публикует для публикаций коллекцию ответов с разбивкой на страницы.
- Welley загружает удалённые коллекции ответов и переходит по их страницам.
- Когда кто-то находит удалённое обсуждение, Welley может в фоне подгрузить более ранний контекст.
Приватность, модерация, лимиты загрузки и доступность другого сервера по-прежнему действуют. Коллекция не гарантирует полную мгновенную копию каждого обсуждения.
-
FEP-7628
Перенос актора
Аккаунты могут переезжать между серверами, а их подписчики переключаются на новый аккаунт.
Welley поддерживает входящие и исходящие переносы акторов, псевдонимы, перенаправления и перенос подписчиков.
- Welley получает активности Move и проверяет псевдоним назначения, прежде чем перенести локальных подписчиков.
- Когда аккаунт переезжает, Welley публикует адрес назначения и отправляет активности Move подписчикам на других серверах.
- Welley отправляет Follow на новый аккаунт и удаляет старую подписку.
Welley задаёт movedTo, а старый аккаунт остаётся доступным. Это не останавливает всю доставку в удалённые inbox, которые переехали. Публикации нужно переносить отдельным экспортом или импортом.
Страница переноса с тремя шагами и пустой формой для псевдонима аккаунта. Использовано демонстрационное содержимое сообщества. Читать предложениеПеренесите аккаунт в WelleyПереезд и копия данных
-
FEP-7888
Разбираемся со свойством context
Welley использует context, чтобы связывать обсуждения событий и загружать некоторые удалённые коллекции обсуждений.
Welley поддерживает ссылки контекста событий и некоторые схемы работы с удалёнными коллекциями контекста.
- Публикации, прикреплённые к событию, могут указывать на URI события как на свой контекст.
- Welley может переходить по удалённой коллекции контекста, в том числе через промежуточный документ, который указывает на коллекцию.
Welley не публикует общую коллекцию контекста для каждой ветки обсуждения. Полная маршрутизация аудитории по контексту и владение беседой не поддерживаются.
-
FEP-844e
Обнаружение возможностей
Другое программное обеспечение может прочитать у актора приложения структурированный список того, что поддерживает Welley.
Актор приложения публикует свои возможности, и это проверено тестами.
- Актор приложения публикует массив implements с идентификаторами и названиями возможностей.
- В ответ входит сопоставление JSON-LD для этого свойства.
- Сейчас Welley объявляет пятнадцать идентификаторов FEP.
Welley пока не читает списки возможностей других серверов, чтобы согласовывать функции.
-
FEP-8a8e
Общий подход к использованию типа объекта Event
События используют общие поля ActivityPub для времени, места, описания и участия.
Welley поддерживает основной обмен Event и схемы участия, а также некоторые поля расширений событий.
- Event включает название, время начала, время окончания, часовой пояс, место и коллекцию участников.
- Create и Update рассылают изменения событий.
- Join и Leave передают изменения участия между серверами Welley.
Последняя версия предложения также требует указывать организаторов и содержит больше правил для места и вместимости. Welley реализует не всю последнюю версию.
Приглашённый отвечает «Да», «Нет» или «Может быть». Организатор видит, кто придёт. Читать предложениеСобытия через ActivityPubОтвет на приглашение
-
FEP-8fcf
Синхронизация коллекции подписчиков между серверами
Серверы могут замечать расхождения в списках подписчиков и исправлять их.
Welley поддерживает исходящие дайджесты, входящие проверки, конечную точку частичной коллекции и задачи исправления.
- Welley добавляет заголовок Collection-Synchronization, когда доставка запрашивает синхронизацию подписчиков.
- Принимающий сервер сравнивает дайджест. Если списки различаются, он запрашивает коллекцию подписчиков для этого сервера.
- Welley исправляет устаревшие подписки отдельно от запроса к inbox.
Администраторы могут отключить синхронизацию. Другой сервер должен реализовать тот же протокол.
-
FEP-9098
Пользовательские эмодзи
Пользовательские эмодзи могут передаваться вместе с публикациями, профилями и реакциями.
Welley поддерживает теги пользовательских эмодзи и их импорт для поддерживаемого федеративного содержимого.
- Исходящие теги связывают шорткод каждого эмодзи с его изображением.
- Welley читает теги Emoji с других серверов и сохраняет каждый шорткод под доменом, откуда он пришёл.
- Ограничения на медиа действуют и тогда, когда Welley скачивает удалённые эмодзи.
Блокировка медиа может не дать загрузить изображение эмодзи. Приложения на других серверах могут показать вместо него шорткод.
В редакторе своих эмодзи показаны требования к файлу, шорткод, категория и то, появляется ли эмодзи в панели выбора. -
FEP-9967
Опросы
Люди могут обмениваться опросами и голосами с совместимыми серверами.
Welley поддерживает отправку и приём опросов с одним и несколькими вариантами ответа, голосов и обновлений результатов.
- Опросы используют объекты Question с вариантами oneOf или anyOf.
- Welley обрабатывает голоса с других серверов и рассылает результаты опросов.
- Каждый федеративный опрос содержит время окончания, признак закрытия и число проголосовавших.
Другое приложение должно поддерживать этот формат опросов. Его интерфейс может показывать другие элементы управления или другие подробности результатов.
В ленте виден оформленный текст, спойлер внутри текста, который читатель раскрывает щелчком, и опрос, на который можно ответить прямо там. -
FEP-b2b8
Длинные тексты
Длинные публикации могут использовать объекты Article с заголовком, полным текстом и коротким превью.
Welley поддерживает содержимое статей, превью, метаданные источника и часть расширенной разметки текста.
- Welley отправляет и принимает объекты Article, а не считает каждую публикацию короткой заметкой Note.
- Исходящие статьи могут включать главное изображение, отрывок и исходный текст в Markdown.
- Welley сохраняет часть разметки статей, в том числе встроенные медиа и аннотации ruby.
Если у статьи указано несколько авторов, Welley берёт первого. Заголовки превращаются в жирный текст, поэтому часть структуры статьи теряется.
-
FEP-c0e0
Эмодзи-реакции
Эмодзи-реакции работают между серверами.
Welley поддерживает реакции с Unicode и пользовательскими эмодзи, включая их удаление и доставку.
- Welley отправляет и принимает активности EmojiReact для поддерживаемых публикаций.
- Undo удаляет удалённую реакцию.
- Реакции с пользовательскими эмодзи несут свой тег эмодзи и домен, откуда они пришли.
Другое программное обеспечение может поддерживать иной набор реакций. Welley не предоставляет необязательную коллекцию emojiReactions.
Участники реагируют на тему форума эмодзи. У каждого эмодзи своя плашка и свой счётчик. -
FEP-c16b
Форматирование функциями MFM
Часть разметки размытия Misskey может отображаться как встроенный спойлер.
Во входящих публикациях Welley поддерживает только форматирование размытия.
- Welley распознаёт фрагменты размытия в исходном Markdown Misskey.
- Welley превращает поддерживаемые классы и атрибуты размытия MFM в безопасный спойлер.
Welley не реализует весь набор функций MFM и не объявляет поддержку htmlMfm. Другие эффекты MFM могут потерять форматирование.
В ленте виден оформленный текст, спойлер внутри текста, который читатель раскрывает щелчком, и опрос, на который можно ответить прямо там. -
FEP-d556
Обнаружение актора уровня сервера через WebFinger
Запрос WebFinger к серверу может вернуть актор приложения.
Welley поддерживает форму обнаружения через ссылку self в стиле Mastodon из предложения. Для неё не указан отдельный идентификатор FEP.
- Запрос по домену или по настроенному URL сервера возвращает ссылку self на актор экземпляра.
- Обе формы приводят к одному и тому же актору.
Поиск точно сопоставляет настроенный текст origin и не нормализует завершающий слэш. Welley не публикует рекомендуемое отношение Service и не поддерживает фильтрацию по отношениям.
-
FEP-e232
Object Links
Публикации с цитатами содержат структурированные ссылки на цитируемые публикации.
Welley использует Object Links только для публикации и импорта ссылок на цитаты.
- Welley добавляет к исходящей цитате тег Link с типом медиа цитаты ActivityPub.
- Welley распознаёт ту же форму ссылки во входящих публикациях, в том числе ссылки без имени.
Это относится к ссылкам на цитаты. Все возможные типы медиа Object Links не охвачены.
-
FEP-efda
Объекты, на которые можно подписаться
Вы можете подписаться на публикацию и получать новую активность в её обсуждении.
Follow(post) и Undo работают в обе стороны и проверены тестами.
- Welley отправляет Follow, где объектом указан URI публикации.
- Входящие подписки на публикации и активности Undo обновляют подписки на публикации.
- Подписка на публикацию не зависит от подписки на её автора.
Последняя версия FEP использует коллекцию подписчиков, чтобы находить объекты, на которые можно подписаться. Публикации Welley не предоставляют эту коллекцию или общий алгоритм обнаружения. В Welley эта функция по-прежнему называется по-старому: «Отслеживаемые публикации».
-
FEP-f1d5
NodeInfo в программном обеспечении Fediverse
Другие серверы могут узнать о программном обеспечении Welley и деталях протокола через NodeInfo.
Welley поддерживает обнаружение NodeInfo и ответ версии 2.0.
- Публичная конечная точка обнаружения ведёт к документу NodeInfo 2.0.
- В документе указаны версия программного обеспечения, поддержка ActivityPub и базовый URL FASP.
Пока ответ использует фиксированные счётчики использования и статус регистрации. Не полагайтесь на него как на актуальную статистику сервера. Маршрута 2.1 нет.
-
FEP-fe34
Модель безопасности на основе origin
Проверки origin помогают не дать одному серверу выдавать за своё содержимое или полномочия, которые принадлежат другому.
В Welley есть несколько проверок безопасности на основе origin, и они проверены тестами.
- Welley сравнивает схему, хост и фактический порт URI.
- Inbox отклоняет некоторые активности, если origin объекта не совпадает с origin актора.
- Пути удалённой загрузки, цитат, коллекций и присутствия добавляют ещё проверки origin.
Это лишь часть модели безопасности. Object Integrity Proofs не поддерживаются.