介绍即将推出的更改:一个用于管理新功能和现有功能变更的系统

随着我们不断改进 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 结束),但并非总是如此。某些更改可能以 AlphaBeta 状态引入,有些则以 Stable 状态结束。类型为“站点设置默认值”的更改不会移至 Permanent,因为它们仅更改现有设置的默认值。

特定更改从一个状态进展到另一个状态所需的时间没有固定限制,但在以下情况下管理员会收到通知:

  • 有新的更改可供试用
    • 为避免通知疲劳,此类通知每周最多发送一次。如果您不希望接收这些通知,可以在 /my/preferences/notifications 中将其禁用
  • 更改已自动启用
  • 当您禁用了即将强制开启的更改时
    • 这将显示为管理仪表板警告

3 - 受影响的用户

“受影响的用户”标签描述了您社区中的哪些用户可以看到或以某种方式与该更改交互。简单来说——谁可能会注意到这一更改?受影响的用户有几种类型:

  • Admins(管理员):更改仅对管理员可见。
  • Staff(工作人员):更改仅对管理员版主可见。
  • All members(所有成员):更改对站点上的所有成员可见。
  • Developers(开发者):在极少数情况下,更改仅对与核心代码、主题或插件中的代码进行交互的人可见。

影响类型

受影响用户的一个子集,且不在列表中显示,是影响类型。影响类型从广义上描述了该更改将如何影响您的社区:

  • Feature(功能):该更改为您的社区引入新功能或功能,或修改现有功能。
  • Site setting default(站点设置默认值):该更改修改现有站点设置的默认值。已经将该设置更改为旧默认值之外的管理员将不受影响。一旦该更改达到稳定状态,将不会显示任何管理仪表板警告。
  • Other(其他):任何不符合上述类别的其他更改。

4 - 启用对象…

在此下拉菜单中,作为站点管理员,您可以通过为以下对象启用该更改,来控制是否以及如何向您的社区引入此更改:

  • No one(无人):为站点上的所有人禁用该更改。
  • Everyone(所有人):为站点上的所有人启用该更改,包括匿名用户。当更改自动开启时(通常在 Beta 状态),它将针对 Everyone
  • Staff only(仅限工作人员):仅为站点工作人员(即管理员和版主)启用该更改。
  • Specific groups(特定群组):为选定的群组启用该更改。

:information_source: 某些即将推出的更改可能具有受限的“启用对象”选项。“启用对象”下拉菜单中的可用选项由更改的配置决定。例如,某些更改可能仅允许 EveryoneNo one 选项,因为对该更改进行有限的群组测试不可行。


目前,我们已将大多数 Experimental 更改从 /admin/config/experimental 移至“即将推出的更改”,您很快将开始在此处看到新的更新。我们期待听到这一系统对您的社区产生的影响,并欢迎任何疑问或反馈!


  1. 严格来说,任何软件都难以称为完全完成! ↩︎

43 个赞

我很好奇——它如何控制功能推出的方式?功能引入后可以更改吗?谢谢。

2 个赞

原生功能标志!太棒了 :clap:

很高兴能有一个用于插件的 API。

5 个赞

这是一个期待已久的功能!谢谢!

3 个赞

这太棒了,能够像这样更改标志对于像我这样走在最前沿的人来说非常棒,尤其是在开发主题时

不过,“即将进行的更改”真的是最好的名称吗?例如,HomeAssistant 使用“labs”(实验室),而许多其他人只是使用“experiments”(实验)之类的名称,感觉比“upcoming changes”(即将进行的更改)更好。

4 个赞

当新功能处于您可以提前试用(选择加入)并暂时关闭以修复更改引起的任何问题(选择退出)的状态时,您将收到通知。如果某个更改将变为“永久”(意味着您不能选择退出),并且您当前已将其关闭,我们会通知您。

本节对此进行了更详细的描述:

目前,您只看到了实验性更改,因为我们已将那些更改从设置区域迁移到“即将进行的更改”,但将来这里也会有非实验性的更新。因此,对于我们使用此系统的方式来说,“实验室”感觉不太准确。

3 个赞

插件已经可以使用这个系统了。原帖没有深入介绍技术细节,但要添加一个即将到来的更改并不需要太多。

快速总结如下:

  • 添加一个站点设置,其属性为 hidden: trueclient: 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 c 在您站点的 rails 控制台中启用此功能。最终我们将删除此设置,届时您将不再需要这样做。

好的 ,谢谢,那我还是等等吧~~~~~~~~

我不确定这是否清楚:“即将进行的更改”菜单项尚未上线,但是

重新表述:
如果您还没有该菜单项,仍然可以通过访问 [your_forum]/admin/config/upcoming-changes 来查看“即将进行的更改”部分。

1 个赞

它应该在那里,你在这里看不到吗?

您是自托管吗?如果是,您还需要将 enable_upcoming_changes(这是一个隐藏设置)设置为 true。我们计划在不久的将来移除此设置,一旦我们完全确定系统稳定。

3 个赞

为什么大多数关于即将进行的更改的网站设置都被隐藏了,而 enable_auto_grid_images 没有被隐藏?

2 个赞

不,这只是一个疏忽,已在此处修复:

1 个赞

是的,我正在自托管,就像 sniper756 一样。
“尚未上线”也许不是最好的措辞;我会修改一下。

2 个赞

今天,我在想如果能按状态对变更进行排序该有多方便——先是 Beta 版,然后是 Alpha 版,最后是实验版。我知道可以通过筛选来实现,但我还是喜欢看到完整的列表;我只是觉得根据状态不同,变更的有趣程度也会有所不同。

4 个赞

没错,有道理。我也考虑过添加一个按变更在你网站上出现的时间排序的选项……我会把这两个都加上:smiley:

2 个赞

太棒了!

感谢您的分享。

1 个赞