Включение более популярных плагинов в ядро Discourse

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

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

Самохостинговые сообщества

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

Окружение разработки

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

  1. Если вы используете символические ссылки для плагинов, то при выполнении git pull возникнет ошибка. Чтобы решить проблему, удалите символическую ссылку, а затем снова выполните git pull.

  2. Если вы клонируете плагины напрямую, то git pull для ядра завершится успешно, но у вас появятся неожиданные «незафиксированные изменения», вызванные вложенными репозиториями Git. Лучший способ действий — удалить затронутую директорию, а затем восстановить её из ветки main. Например:

    rm -rf plugins/discourse-reactions
    git restore plugins/discourse-reactions
    

Затронутые плагины

68 лайков
How plugins moving to core is communicated
Core plugins added to my updated site today
What happens next?
Bootstrap failed with exit code 128
Discourse Patreon
Discourse Calendar (and Event)
Discourse Gamification
Discourse User Notes
Discourse AI
最新版更新出错
Discourse Affiliate
Discourse Post Voting
Discourse Topic Voting
Discourse Templates
Self-Hosting Discourse Just Got a Whole Lot Easier
Unboxing Discourse 3.5
Discourse Birthdays & Anniversaries Today (Banner)
Sudden Sidekiq trend change & anomaly
Discourse Assign
What happens next?
How plugins moving to core is communicated
How plugins moving to core is communicated
How plugins moving to core is communicated
Discourse hCaptcha
Discourse Chat Integrations
Discourse Data Explorer
Discourse Login with Amazon
Discourse Graphviz
Discourse Learning Management System Integration (LTI 1.3 Authentication)
Microsoft Authentication
Discourse OAuth2 Basic
Discourse OpenID Connect (OIDC)
Discourse Reactions
RSS Polling
Discourse Subscriptions Plugin
Discourse Zendesk
Discourse Apple Authentication
Discourse Chatbot :robot:
Discourse AI Topic Summary :robot:
Suggested improvements to plugin page now that more plugins are bundled
‘Preinstalled’ plugin label on hosted sites
Discourse Solved
Discourse Advertising Plugin (Ads)
Discourse GitHub
Discourse Policy
Discourse Docker Manager
3.5.0.beta8: Bundled plugins, a new theme, better color management, powerful filtering, and advanced image controls
Discourse Solved
Discourse Assign
Discourse Graphviz
Install plugins on a self-hosted site
How do I remove the Anniversaries option from the burger menu?
Add-on suggestions for humor focused community
Math and AI workarounds

Спасибо, что предоставили полную строку HINT в первом сообщении здесь, это помогло мне диагностировать неудачную пересборку сегодня утром :blush:

17 лайков

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

3 лайка

Да, возможно. В частности, плагины аутентификации (например, apple-auth) с большой вероятностью в конечном итоге будут интегрированы в ядро, как и другие встроенные методы аутентификации (например, Google, Facebook и т. д.).

3 лайка

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

Вопрос по поводу:

вам будет предложено удалить соответствующую строку из файла app.yml перед следующей пересборкой.

Будет ли также отображаться подсказка или предупреждающее сообщение до/в момент нажатия кнопки обновления на странице обновлений в панели администратора?

3 лайка

Если я правильно помню по своему опыту, сначала вы сможете обновить только Docker. После обновления Docker в интерфейсе обновления вам будет показано сообщение, объясняющее, что обновление необходимо выполнить через командную строку, и как это сделать.

Затем при обновлении в командной строке вы увидите подсказку (HINT) для каждого плагина, который нужно удалить из app.yml, как объясняется в первом сообщении выше.

4 лайка

Это хорошее обновление, но действительно ли это было необходимо? Выдавать ошибку сборки — это, на мой взгляд, немного сурово. Предупреждение в интерфейсе или автоматическое обновление (или просто полное игнорирование таких случаев) было бы куда приятнее, чем приставлять пистолет к виску и говорить: «Уберите это немедленно»!

6 лайков

На прошлой неделе это застало меня врасплох, когда я пытался обновить через командную строку, и обновление не удалось (плагин reactions).

Сегодня утром это снова застало меня врасплох, когда обновление через командную строку снова не удалось (плагин data explorer).

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

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

8 лайков

Есть ещё одна проблема.

Зависимости от gem-пакетов.

Дело не только в удалении избыточных клонов основных плагинов.

Также возникает проблема конфликтов версий gem-пакетов, поскольку это значительно увеличивает количество зависимостей.

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

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

В моём конкретном случае вы используете multipart-post-2.2.3, тогда как мои плагины уже работали на версии multipart-post-2.4.0.

Это привело к двум неудачным пересборкам и значительно большему простою, чем мне хотелось бы.

3 лайка

2 сообщения были перенесены в новую тему: Предлагаемые улучшения страницы плагинов, теперь, когда больше плагинов включены в ядро,

Скоро мы предпримем шаг по отказу от строк с gem в основных плагинах и переходу к единому файлу gem.

3 лайка

Мне интересно, вы получили этот список плагинов из установок Discourse в реальных условиях? Он совпадает почти на 50% с моей собственной основной установкой!

2 лайка

Интересно, не приведёт ли включение всех этих плагинов в ядро к раздуванию форумов? То есть, вероятно, найдутся администраторы, которые не хотят видеть некоторые плагины на своём форуме (например, Discourse AI), но у них не будет выбора — они будут вынуждены их установить. Конечно, их можно отключить, но меня волнует, не замедлят ли дополнительные файлы и прочее работу форумов?

2 лайка

На стороне клиента Discourse не предоставляет никаких JavaScript-ресурсов для отключённых плагинов, поэтому здесь никакого влияния не будет.

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

Плагины, которые мы здесь объединяем, — это те, что работают на каждом экземпляре Discourse на нашем хостинге discourse.org. Поэтому они все очень хорошо протестированы в масштабе.

16 лайков

Понял. Спасибо за разъяснение!

2 лайка

Есть ли причина, по которой вы делаете всё это сразу незадолго до выпуска? Для переводчиков, занимающихся этим в свободное время, 3000 дополнительных строк за две недели — это много. И даже в языках, где плагины уже были переведены, все 3000 текстов нужно вычитать заново. Периодически по 300 строк, вероятно, было бы удобнее, чем по 1500 каждую неделю.

6 лайков

Для самохостинговых сообществ, которые уже используют один или несколько из этих плагинов, потеряют ли плагины свои конфигурационные данные при удалении из app.yml и интеграции в ядро?

У меня плагин AI настроен именно так, как мне нужно; было бы полезно знать заранее, если мне потребуется перенастроить его (или хотя бы записать параметры конфигурации, чтобы затем добавить их обратно). :+1:

7 лайков

Мы стараемся сделать процесс максимально плавным для переводчиков, используя память переводов в Crowdin, чтобы переводы не приходилось переделывать с нуля. Но всё же, я согласен, их нужно проверить.

Интересно, можно ли здесь автоматизировать что-то ещё? Например, возможно, мы могли бы «автоматически одобрять» строки из этих плагинов, не требуя проверки :eyes:

Все данные конфигурации и данные будут сохранены.

11 лайков

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

Неужели не было возможности хотя бы пометить эту тему для сайтов, работающих с минимальной версией Docker Manager?

2 лайка

Эта мета-тема, впрочем, не совсем то, что вы хотели бы увидеть.

Сложность заключается в том, чтобы понять, какие плагины следует удалить из вашего app.yml, а какие не удалять.