实验性插件

在开发新插件时,通过将插件标记为实验性来表明相关工作的实验性(或“进行中”)性质。

实验性插件:

  • 在每个 IDK 版本中,实验性插件可能会更改其参数输入和输出。
  • 实验性插件可能暂时依赖于不属于 Fuchsia 平台界面区域的 API 或 ABI。所有依赖项仍必须在平台源代码树中定义和表示。
  • 插件作者必须展示实现非实验性状态的路线图,例如让插件依赖项达到稳定状态。我们的目标是逐步移除实验性插件,以最大限度地提高 ffx Surface 和依赖项的稳定性。
  • 插件不得引入在调用插件命令时之外的其他时间执行的行为(即,实验性插件无法在 ffx 守护程序或远程控制服务中执行后台操作)。
  • 实验性插件遵循与其他插件相同的代码审核和代码质量流程。由于实验性插件包含在标准 ffx 二进制文件中,因此它们必须遵循相同的质量标准,以免影响产品的整体质量。

将插件标记为实验性

在插件 lib.rs 文件中定义插件函数时,会有一个带有 ffx_plugin 修饰的入口点,例如:

#[ffx_plugin()]

#[ffx_plugin(MyProxy = "fuchsia.example.Service")]

如需将插件标记为实验性,并同时声明用于启用实验的令牌,请添加一个初始字符串参数。在以下示例中,“zippy”标记可能与插件命令名称匹配,也可能不匹配。标签可以任意设置,但建议选择与插件相关的值:

#[ffx_plugin("zippy")]

#[ffx_plugin("zippy", MyProxy = "fuchsia.example.Service")]

在上述两个示例中,插件将由名为“zippy”的功能令牌进行保护。当用户尝试执行 ffx zippy 时,系统会告知他们 zippy 处于实验阶段,然后系统会显示有关启用 zippy 功能的说明。

按照说明启用 zippy 之后,(针对该用户)的后续调用就如同 zippy 不处于实验阶段,也就是说,他们已选择使用 zippy 功能。

实验性代码的 CL 审核

不得将实验性插件用作一种机制来绕过代码质量问题、设计问题、安全性问题、隐私问题和其他问题。ffx 的每个元素都必须遵循共同的基本标准才能纳入 IDK。

移除实验状态

在退出实验状态之前,插件必须具备以下条件:

  • 我们会审核用户体验途径,使其足够稳定,以符合平台版本控制 RFC。
  • 实现依赖项都是已定义的平台 Surface 区域的一部分,例如,所有 FIDL 依赖项均为 sdk_category = 'public'。
  • 设计文档(利益相关方接受)
  • 用户文档
  • 符合 CLI 评分准则的参数
  • 单元测试
  • 集成 (e2e) 测试