Резервное копирование активности с несколькими экземплярами + единый читатель Discourse для нескольких сайтов

Привет, команда!

Я администрирую собственный саморазмещённый экземпляр Discourse и также активно участвую в нескольких других сообществах Discourse. Я хотел бы запросить (или, по крайней мере, обсудить) две связанные возможности, которые в настоящее время сложно реализовать чисто, официально и масштабируемо.

1) «Резервное копирование активности» между экземплярами Discourse (зеркалирование между сайтами на мой собственный форум)

Цель

Всякий раз, когда я создаю новую тему (и, опционально, ответы) на другом сайте Discourse, я хочу, чтобы мой собственный экземпляр Discourse автоматически сохранял копию (или чётко атрибутированное зеркало), чтобы я мог:

  • вести личный архив своего участия в различных сообществах,
  • искать и ссылаться на свои прошлые обсуждения в одном месте,
  • избежать потери истории, если посты или аккаунты исчезнут на других сайтах.

Текущая проблема

На практике это сложно сделать надёжно без прав администратора на других форумах и без создания дублирующегося или спамного контента. Даже когда существуют обходные пути, они обычно ненадёжны или не стандартизированы между сайтами.

Что я предлагаю

Планируется ли официальный, поддерживаемый подход к «резервному копированию активности между экземплярами», например:

  • стандартизированный способ экспорта/синхронизации созданного пользователем контента на другой экземпляр Discourse,
  • опциональное зеркалирование тем/ответов с сильной атрибуцией и каноническими ссылками,
  • модель разрешений, уважающая правила исходного сайта (например, синхронизировать только то, что я создал, и то, что общедоступно).

2) Единый опыт подписки и чтения на нескольких сайтах (один интерфейс для нескольких форумов Discourse)

Цель

Я хотел бы получить единый интерфейс, где я могу подписываться на несколько сайтов Discourse и видеть единый поток:

  • Последние / Новые / Непрочитанные темы,
  • Отслеживаемые категории/теги на разных сайтах,
  • Уведомления, упоминания, закладки,
  • В идеале — с аутентификацией для каждого сайта и возможностью открывать темы, отвечать и ставить лайки в контексте.

Текущая проблема

Сегодня использование нескольких сообществ Discourse означает постоянную смену множества вкладок и аккаунтов. Решения, созданные сообществом, иногда могут агрегировать контент, но они, как правило, ненадёжны, плохо масштабируются за пределы нескольких сайтов и не являются тем, на что можно положиться в долгосрочной перспективе.

Что я предлагаю

Рассматривает ли Discourse создание официального «читателя для нескольких экземпляров» (веб-интерфейс или приложение) или, по крайней мере, поддерживаемого фреймворка/шаблона API, который позволяет реализовать это надёжно?

Почему это важно

  • Это повышает продуктивность пользователей, активных во многих сообществах Discourse.
  • Это позволяет управлять личными знаниями и осуществлять долгосрочное архивирование собственного вклада.
  • Официальный подход может снизить фрагментацию и избежать хрупких обходных путей.

Если существуют обсуждения или пункты дорожной карты, связанные с «резервным копированием активности между экземплярами» или «единым читателем для нескольких сайтов», буду рад получить ссылки. Я также готов помочь прояснить требования, предложить MVP или протестировать решения.

Спасибо!

1 лайк

Совет: лучше размещать несколько идей или запросов в разных темах. Так люди смогут эффективнее голосовать, а тема будет четко сфокусирована.

3 лайка

Если вы не администратор соответствующего инстанса, то нет, таких планов нет.

Ваш лучший вариант — регулярно экспортировать резервную копию вашей учётной записи через /my/preferences/account и создать способ миграции этих данных в ваш собственный инстанс.

На уровне администратора плагин ActivityPub может частично решить эту задачу, но это скорее функция сайта, чем инструмент, доступный отдельным пользователям.

Наше мобильное приложение Discourse Hub (Share your feedback about the 🆕 iOS Discourse Hub app) частично решает эту задачу (позволяет просматривать список сайтов, на которые вы подписаны, получать уведомления, видеть популярные темы)… но в конечном счёте многим сообществам важно видеть участников непосредственно на своём сайте, поэтому для взаимодействия вам всё равно придётся посещать сайт, на который вы подписаны. Мы ранее рассматривали возможность расширения этого функционала за пределы приложения, но конкретных планов на этот счёт нет.

4 лайка

Хе-хе, извини, иногда у меня слишком много идей

1 лайк

Мой английский не очень хорош, поэтому я использовал плагин для перевода и форматирования, из-за чего текст получился немного длинным. Возможно, в следующий раз я должен буду использовать более лаконичную и уместную форму.

1 лайк

Спасибо за уточнение — это имеет смысл.

Что касается резервного копирования активности между инстансами: я понял, что без доступа администратора не планируется автоматическое зеркальное копирование. Предложение об экспорте через /my/preferences/account полезно. Знаете ли вы, существует ли задокументированный или стабильный формат/интерфейс API, предназначенный для программной обработки этого пользовательского экспорта (или рекомендуемый путь миграции), чтобы пользователь мог импортировать свой собственный контент в другой инстанс Discourse?

Касательно ActivityPub: согласен, что сегодня это скорее функция на уровне сайта. Если когда-нибудь возникнет интерес, «ориентированный на пользователя» режим (синхронизация только моих публичных опубликованных постов с каноническими ссылками и указанием авторства) был бы именно тем, что я ищу.

Что касается унифицированного опыта работы с несколькими сайтами: я изучу Discourse Hub — обзор уведомлений и «горячих тем» уже звучит полезно. Если есть место для отслеживания идей, я с радостью оформлю запрос на новую функцию, касающуюся более богатой агрегированной ленты только для чтения (по всем сайтам, в которые я вошел), сохраняя взаимодействие на исходном сайте, как вы описали.

Еще раз спасибо!

1 лайк

Спасибо за подробный ответ — это очень помогло.

Учитывая ограничения (отсутствие прав администратора на исходных экземплярах), я сужу задачу до очень небольшого «личного архива активности» (MVP), который явно ориентирован на пользователя и не нарушает работу сообществ:

  • Архивировать только контент, созданный мной

  • Архивировать только то, что публично доступно

  • Каждая заархивированная запись должна содержать каноническую ссылку на оригинал, название исходного сайта, временную метку и указание авторства

  • Взаимодействие остается на исходном сайте; мой экземпляр служит лишь поисковым личным архивом

Примерный пайплайн MVP будет таким: периодический экспорт данных учетной записи, извлечение созданных мной постов/тем, удаление дубликатов и публикация «записей резервной копии» в мой собственный Discourse через API с единым заголовком атрибуции.

Несколько вопросов, чтобы убедиться, что я не изобретаю велосипед неправильно:

  1. Считается ли формат экспорта пользователя достаточно стабильным для создания инструментов, или есть рекомендуемый/официальный подход к парсингу экспорта сторонними разработчиками со временем?

  2. Существует ли уже какой-то плагин сообщества или проект, направленный на создание рабочего процесса «личного архива» (даже если только для чтения или только тем)?

  3. Также мне интересно: есть ли у других пользователей или операторов сообществ здесь похожая потребность (личный архив / журнал активности между экземплярами)? Если да, буду рад узнать о ваших случаях использования — это поможет обосновать более формальный подход или документированный шаблон.

Еще раз спасибо — готов поделиться своими заметками по MVP или репозиторием, как только они будут в рабочем виде, если это будет полезно другим.

2 лайка

Связывание нового запроса на функцию резервного копирования активности

1 лайк

Спасибо за цитирование.