Большой проект миграции форума vBulletin

Здравствуйте,

Я занимаюсь поиском решения для будущего огромного форума на vBulletin 4 (более 12 млн сообщений, 100 тыс. пользователей).

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

Этот форум принадлежит компании. Несмотря на то, что он не приносит дохода, он остается важным местом для её сообщества.

1. Я не понимаю философию подхода «один контейнер выполняет всё». Для меня Docker — это прежде всего разделение на микросервисы и их взаимодействие через Docker-сеть. Я привык запускать проекты с несколькими контейнерами (до 10–12 контейнеров с Redis, PostgreSQL и т. д.), используя только инструменты Docker.
Я прочитал тему здесь: Can Discourse ship frequent Docker images that do not need to be bootstrapped?, но не уверен в обоснованности этого подхода. Когда я вижу все команды exec и файлы в конфигурационных файлах compose, мне кажется, что существует непонимание различий между назначением файла compose и Dockerfile.
Обновления кода должны запускать сборку новых образов Docker, которые затем загружаются и запускаются с помощью compose и переменных окружения.
Я видел, что кто-то начал реализовывать такой подход в проекте на GitHub, но, полагаю, это не поддерживается официально.
Может ли кто-то дать четкое объяснение «почему» используется текущая философия и есть ли планы поддерживать работу в таком виде, как это делают многие проекты в интернете в 2023 году?

  1. Компания, владеющая проектом, использует Google Workspace для электронной почты. Я уже настраивал SMTP-релей Google для других проектов и не планирую использовать что-то другое. Я прочитал разные мнения об этом на форуме. Есть ли четкий способ убедиться, что это будет работать, или существует риск, что это не сработает (что стало бы для нас критическим препятствием)?

  2. Я видел, что существуют скрипты для миграции с vBulletin (здесь: Migrate a vBulletin 4 forum to Discourse), но они содержат противоречивые инструкции, например, использование руководства с кастомизацией контейнера через файлы Gem. Как сильно это влияет на поддерживаемость и техническую поддержку? Поддерживается ли образ, если что-то пойдет не так?

  3. Интеграция с другими инструментами (в основном Discord). На данный момент форум vBulletin имеет собственную базу данных пользователей. Есть ли способ плавно перейти от пользователей локальной БД к пользователям Discord, например, сопоставив их учетные записи на определенном этапе?

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

Вероятно, я вернусь с еще одним набором вопросов, но это основные из них на данный момент.

Спасибо всем, кто ответит на это сообщение :slight_smile: — любые советы высоко ценятся.

Это для тех, кто не знает, что такое системное администрирование, и нуждается в поддержке при настройке. Для крупного форума вам понадобится как минимум установка из 2 контейнеров, либо использование RDS и ElastiCache вместо самостоятельной разработки.

Если вы хотите запустить проект с помощью Dockerfile, вам нужно будет использовать launcher для сборки контейнера и найти способ управления миграциями базы данных и предварительной компиляцией ресурсов.

Если вы умеете использовать Google для транзакционной почты — это отлично. Большинство людей этого не умеют, и мы не хотим их этому учить.

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

Вы имеете в виду «Discord» или «Discourse»? Или, возможно, вы хотите использовать Configure Discord Login for Discourse?

Что бы вы ни делали, люди не любят перемен. Я не думаю, что попытка сделать Discourse похожим на vBulletin — это хорошая идея. Если вы хотите, чтобы ваш форум вёл себя как vBulletin, просто продолжайте его использовать. Существует множество тем, выполняющих различные функции. По-настоящему руководства нет, кроме Search results for '#theme-component' - Discourse Meta. Там можно поискать и изучить материалы.

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

Добро пожаловать :wave:

Я отвечу только на этот вопрос, так как не компетентен в других областях. О плавном переходе я расскажу позже в своём посте.

Что касается кастомизации: вы можете редактировать CSS с помощью встроенного редактора, а также добавлять JavaScript и использовать специфичный для Discourse JS API. Визуально, если что-то не нравится, просто скройте это или измените.

Официальное руководство по темам находится здесь: Developing Discourse Themes & Theme Components.

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

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

Тема — это по сути «скин» с дополнительными функциями или без них.
Компонент темы обычно добавляет функции.
Плагин добавляет более глубокие функции на стороне сервера.

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

Темы и компоненты тем можно добавлять и удалять во время работы системы, тогда как установка и удаление плагина требуют пересборки приложения через командную строку (время простоя 10–15 минут).


Что касается плавного перехода для сообщества, который снизил бы путаницу или недовольство пользователей, то это иногда бывает непросто. Очевидно, что показатель 100% удовлетворённости почти невозможен.
Кроме того, некоторые сообщества определенно более консервативны или громче других и будут реагировать соответствующим образом.

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

  • Больше нет пагинации
    Её заменил интерактивный таймлайн. У обоих подходов есть свои плюсы и минусы. Я иногда слышал, что люди не могут привыкнуть к этому изменению.
    Мой собственный опыт трёх миграций небольших и средних форумов показывает, что никто в моих сообществах не столкнулся с негативным опытом из-за таймлайна.

  • Интерфейс сложен
    В интерфейсе больше элементов, чем в прошлом, так как со временем добавлялись новые функции. Меню уведомлений стало больше, появился боковой панель, а также функция чата (которая может быть не нужна, если у вас есть сервер Discord).
    Мы очень осознаём сложность интерфейса и определённо хотели бы сделать его части более лаконичными.
    В использовании Discourse определённо есть кривая обучения. Хотя это форум с теми же функциями, что и любое другое программное обеспечение для форумов (создание тем, ответы/личные сообщения, и всё…), он отличается от них в плане интерфейса и дополнительных возможностей. Я бы сказал, что у большинства людей нет особых проблем с этим, но сообщество этого форума может быть предвзятым, так как большинство людей здесь знают Discourse.
    Когда вы привыкаете к интерфейсу, вы больше не замечаете «шума» и фокусируетесь на функциях, которые реально используете, но я понимаю, что это не совсем ваша забота здесь, так как вы сосредоточены на миграции/переходе.

Существуют два встроенных инструмента, которые помогают людям понять интерфейс и функции.

  1. @discobot. Это интерактивный бот-пользователь, с которым мы можем взаимодействовать, и он учит нас использовать некоторые функции обсуждений.

  2. Советы для новых пользователей. При регистрации во всплывающих подсказках в интерфейсе будут объясняться различные части. Вы можете отключить их в любой момент из любой подсказки и снова включить в настройках пользователя.

С точки зрения администратора это выглядит так:

  • Слишком много настроек
    Да, в Discourse много опций. Тщательная настройка форума займёт часы и, вероятно, потребует корректировок до достижения удовлетворительного результата. Хорошая новость в том, что когда всё сделано, вы редко возвращаетесь к изменению настроек.
    Мы знаем, что многие настройки могут пугать и иногда затруднять поиск нужного. Есть пространство для улучшений.

Наконец, вы можете использовать пользовательскую песочницу на try.discourse.org.
Песочницы для администратора нет. Когда я хочу поэкспериментировать с вещами на уровне администратора, я обычно настраиваю сервер Hetzner с низкими характеристиками (оплата почасовая), на который устанавливаю Discourse на несколько часов или дней.