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

По мере продолжения улучшения 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 лайк

I’m curious - how does it control how the change is rolled out? Can it be changed after the feature is introduced? Thanks.

2 лайка

Native Feature Flags! Very good :clap:

Be great to have an API for plugins.

5 лайков

That’s a long-awaited feature! Thanks!

3 лайка

This is great, having the ability to change flags like this is amazing for people on the bleeding edge like myself especially when developing a theme

Is “upcoming changes” really the best name for it though? For example HomeAssistant uses “labs” and a lot of other people just use stuff like “experiments” which feel better than upcoming changes.

4 лайка

You’ll be notified of new features while they are still in a state where you can try it out early (opt-in) and turn it off temporarily to fix any issues caused by the change (opt-out). If a change is going to become permanent (which means you can’t opt-out) and you’ve currently turned it off, we’ll let you know.

This section describes that in a little more detail:

Right now, you’re seeing only experimental changes because we migrated those over from the settings area to Upcoming Changes, but in the future there will be non-experimental updates here, too. So “labs” doesn’t feel accurate for how we are using this system.

3 лайка

Plugins can already use this system. The OP doesn’t go into the technical ins-and-outs, but there is not much needed to add an upcoming change.

The quick summary is:

  • Add a site setting which is hidden: true and client: true

  • Add a description for the setting in server.en.yml

  • Optionally add a screenshot to public/images/upcoming_changes/SETTING_NAME.png

  • Add upcoming_change metadata to the setting, which looks like this:

# upcoming_change       - Additional metadata with the following options to show in the /admin/config/upcoming-changes page:
#                          - status: experimental | alpha | beta | stable
#                          - impact: two parts separated by comma - feature|other , staff|admins|moderators|all_members|developers
#                          - learn_more_url: a url for more information

However the caveat here is that we haven’t really intended to have third party plugin developers use this system, it was mostly for our own purposes. Maybe over time we can think more about this use case.

7 лайков

Love this! Thank you :raising_hands:

Is it possible to have a link/shortcut to the applicable setting if relevant? e.g. the custom splash screen has additional settings that need setting up for it to work (uploading the SVG) - but you have to actively go and find them. Would be helpful to have them alongside where it’s being enabled

8 лайков

Yes indeed! I’m working on that change now, should be available in the next day or two, I will make a note to deploy your hosted site so you get the update :slight_smile:

Edit: Done! :rocket:

6 лайков

I have a question, for a self-hosted Discourse instance, how do I display these “Upcoming Changes” in the admin panel?

@lindsey

We still have this hidden behind a global enable_upcoming_changes site setting which is hidden, so you can enable this in your site’s rails console with rails c. Eventually we will remove this and you won’t have to anymore.

Okay, thank you, I’ll wait then~

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

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

1 лайк

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

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

3 лайка

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

2 лайка

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

1 лайк

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

2 лайка

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

2 лайка

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

1 лайк

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

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

1 лайк