Представляем «Предстоящие изменения» — систему для управления новыми функциями и изменениями в существующей функциональности вашего сообщества

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

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

Обзор работы системы «Предстоящие изменения»

По мере работы над новыми функциями или другими изменениями мы будем добавлять их на страницу конфигурации «Предстоящие изменения» по адресу /admin/config/upcoming-changes. Каждое изменение будет включать описание, статус, указание того, какие пользователи затрагиваются, и информацию о том, для каких пользователей (если таковые имеются) оно включено в вашем сообществе.

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

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

Разбор элемента «Предстоящее изменение»

Давайте разберём элемент «Предстоящее изменение» и определим информацию, которую вы увидите в каждом разделе.

1. Название и описание

Название и описание дают краткое объяснение изменения и содержат ссылку на соответствующую тему на Meta для получения дополнительной информации и сбора отзывов.

2. Статус

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

В разделе «Предстоящие изменения» мы используем следующие статусы:

  • Experimental (Экспериментальный): Потенциальное изменение, находящееся на ранней стадии разработки/тестирования, которое, как ожидается, будет быстро развиваться, или может быть полностью удалено, если мы прекратим эксперимент (в этом случае оно перейдёт в статус Inactive; см. ниже). Вы можете включить изменения со статусом Experimental, чтобы протестировать их.
  • Alpha (Альфа): Протестированное изменение, безопасное для использования, хотя возможны некоторые незначительные обновления его дизайна или функциональности. Вы можете включить изменения со статусом Alpha, чтобы использовать их заранее.
  • Beta (Бета): Протестированное изменение, безопасное для использования, и маловероятно, что оно сильно изменится перед переходом в статус Stable или, возможно, Permanent.
    • :information_source: Для большинства сайтов на нашем хостинге и для самостоятельно размещаемых сайтов изменения со статусом Beta автоматически включаются для всех (если вы не включали их ранее), но вы всё ещё можете отключить их.
  • Stable (Стабильный): Завершённое изменение[1], но оно всё ещё является опциональным для выключения (т. е. администраторы могут его отключить). Администраторы получат предупреждение на панели управления, если они отключили изменение со статусом Stable.
  • Permanent (Постоянный): Изменение, завершившее тестирование, и оно принудительно включено (т. е. администраторы не могут его отключить). Постоянные изменения больше не будут отображаться в списке предстоящих изменений, вместо этого они будут показаны на странице /admin/whats-new.
  • Inactive (Неактивный): Заброшенный эксперимент. Вы не можете включить его.

Иногда изменения проходят линейно через эти статусы (т. е. начинаются со статуса Experimental и заканчиваются статусом Permanent), но не всегда. Некоторые изменения могут быть введены со статусом Alpha или Beta, а некоторые завершатся со статусом Stable. Изменения типа «изменение значения настройки сайта по умолчанию» не будут переводиться в статус Permanent, поскольку они лишь изменяют значение существующей настройки по умолчанию.

Нет фиксированного времени для перехода конкретного изменения от одного статуса к другому, но администраторы будут уведомлены, когда:

  • Доступно новое изменение для тестирования
    • Эти уведомления отправляются не чаще одного раза в неделю, чтобы избежать усталости от уведомлений. Если вы не хотите получать эти уведомления, вы можете отключить их в /my/preferences/notifications
  • Изменение было включено автоматически
  • Вы отключили изменение, которое скоро будет принудительно включено
    • Это будет показано как предупреждение на панели управления администратора

3. Затрагиваемые пользователи

Метка «Затрагиваемые пользователи» описывает, какие пользователи в вашем сообществе могут видеть или взаимодействовать с изменением тем или иным образом. Проще говоря — кто может заметить это изменение? Существует несколько типов затрагиваемых пользователей:

  • Admins (Администраторы): Изменение видно только администраторам.
  • Staff (Сотрудники): Изменение видно только администраторам и модераторам.
  • All members (Все участники): Изменение видно всем участникам вашего сайта.
  • Developers (Разработчики): В редких случаях изменение будет заметно только тем, кто взаимодействует с кодом в ядре, темах или плагинах.

Тип воздействия

Подмножество затрагиваемых пользователей, которое не отображается в списке, — это тип воздействия. Тип воздействия описывает, как изменение повлияет на ваше сообщество в широком смысле:

  • Feature (Функция): Изменение вводит новую функцию или функциональность в ваше сообщество или изменяет существующую функциональность.
  • Site setting default (Настройка сайта по умолчанию): Изменение изменяет значение существующей настройки сайта по умолчанию. Администраторы, которые уже изменили настройку с её старого значения по умолчанию, не будут затронуты. Предупреждение на панели управления администратора для этого изменения не будет показано, когда оно достигнет статуса Stable.
  • Other (Другое): Любое другое изменение, которое не подходит под вышеуказанные категории.

4. Включено для…

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

  • No one (Никого): Отключает изменение для всех пользователей сайта.
  • Everyone (Всех): Включает изменение для всех пользователей сайта, включая анонимных пользователей. Когда изменение включается автоматически (обычно при статусе Beta), оно включается для Everyone.
  • Staff only (Только сотрудники): Включает изменение для сотрудников сайта (т. е. администраторов и модераторов).
  • Specific groups (Конкретные группы): Включает изменение для выбранной группы (групп).

:information_source: Для некоторых предстоящих изменений могут быть ограничены варианты «Включить для». Доступные варианты в выпадающем списке «Включено для» определяются конфигурацией изменения. Например, для некоторых изменений могут быть доступны только варианты Everyone и No one, поскольку ограниченное тестирование группами было бы нецелесообразным для такого изменения.


На данный момент мы перенесли большинство изменений со статусом Experimental из /admin/config/experimental в раздел «Предстоящие изменения», и вы скоро начнёте видеть новые обновления здесь. Мы с нетерпением ждём отзывов о влиянии этого на ваше сообщество и приветствуем любые вопросы или отзывы!


  1. Насколько вообще любое программное обеспечение можно считать завершённым! ↩︎

44 лайка

Мне интересно — как контролируется процесс внедрения изменений? Можно ли изменить это после того, как функция будет введена? Спасибо.

2 лайка

Нативные флаги функций! Очень хорошо :clap:

Было бы здорово иметь API для плагинов.

5 лайков

Это долгожданная функция! Спасибо!

3 лайка

Это здорово! Возможность менять флаги таким образом — просто потрясающе для тех, кто находится на острие прогресса, как я, особенно при разработке темы.

Но действительно ли «предстоящие изменения» — лучшее название для этого? Например, HomeAssistant использует термин «labs», а многие другие просто применяют что-то вроде «эксперименты», что звучит лучше, чем «предстоящие изменения».

4 лайка

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

В этом разделе это описано немного подробнее:

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

3 лайка

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

Краткое резюме:

  • Добавьте настройку сайта с параметрами hidden: true и client: true.

  • Добавьте описание для настройки в файл server.en.yml.

  • При желании добавьте скриншот в public/images/upcoming_changes/SETTING_NAME.png.

  • Добавьте метаданные upcoming_change для настройки, которые выглядят следующим образом:

# upcoming_change       - Дополнительные метаданные со следующими опциями для отображения на странице /admin/config/upcoming-changes:
#                          - status: experimental | alpha | beta | stable
#                          - impact: две части, разделенные запятой - feature|other , staff|admins|moderators|all_members|developers
#                          - learn_more_url: URL для получения дополнительной информации

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

7 лайков

Отлично! Спасибо :raising_hands:

Возможно ли добавить ссылку или ярлык к соответствующему настройке, если это уместно? Например, для пользовательского загрузочного экрана требуются дополнительные настройки для его работы (загрузка SVG), но их нужно искать вручную. Было бы полезно разместить их рядом с местом, где эта функция включается.

8 лайков

Да, конечно! Я уже работаю над этим изменением, оно должно быть доступно в течение ближайших пары дней. Я отмечу необходимость развернуть ваш размещённый сайт, чтобы вы получили обновление :slight_smile:

Редактирование: Готово! :rocket:

6 лайков

Подскажите, пожалуйста, как в самодеплоируемом Discourse отобразить раздел «Предстоящие изменения» в панели администратора?

@lindsey

Это всё ещё скрыто за глобальной настройкой сайта enable_upcoming_changes, которая также скрыта, поэтому вы можете включить её в консоли Rails вашего сайта с помощью команды rails c. В будущем мы уберем эту настройку, и вам больше не придётся этого делать.

Хорошо, спасибо, тогда я пока подожду~~~~~~~

Не уверен, было ли это понятно: пункт меню «Предстоящие изменения» еще не активен, но

перефразирование:
Если у вас еще нет пункта меню, вы все равно можете просмотреть раздел «Предстоящие изменения», перейдя по адресу [your_forum]/admin/config/upcoming-changes

1 лайк

Так и должно быть, вы не видите этого здесь?

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

3 лайка

Есть ли причина, по которой большинство настроек сайта для предстоящих изменений скрыты, а enable_auto_grid_images — нет?

2 лайка

Нет, это просто упущение, исправлено здесь:

1 лайк

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

2 лайка

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

4 лайка

Да, логично. Я тоже думал о добавлении опции сортировки по дате появления изменения на вашем сайте… Добавлю оба варианта :smiley:

2 лайка

Прекрасное дополнение!

Спасибо вам за это.

1 лайк