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

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

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

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

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

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

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

Разбор предстоящего изменения

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

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

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

2 — Статус

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

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

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

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

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

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

3 — Затронутые пользователи

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

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

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

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

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

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


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

41 лайк

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

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 лайка

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

2 лайка

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

1 лайк

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

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

1 лайк