遥测审查指南

审查更改的一般指南

这些是我们审查更改时遵循的一般原则。

  • 建设性地提出意见。 审查者和补丁作者都应该是盟友,目标是共同完成更改。

  • 考虑影响。 我们提供关键数据,这些数据由许多系统和人员进行处理和使用。任何中断都应经过计划且有意为之。

  • 尽职尽责。 所有更改都应在典型条件下进行测试。

  • 了解自己的局限性。 在合理的情况下,将问题转交给其他同行或专家。

任何更改的主要考虑因素

对于任何更改,这些都是我们始终需要得到令人满意答案的基本问题。

  • 是否有计划?

    • 进行此更改是否有具体需求?

    • 此更改是否需要首先提出建议

    • 我们是否需要在进行此操作之前进行公告?(例如,对于弃用

  • 这是否涉及到合适的人员?

    • 此更改是否需要来自……数据工程师?数据科学家?的意见?

    • 此更改是否需要数据审查?

  • 此更改是否已完成?

    • 此更改是否具有足够的测试覆盖率?

    • 此更改是否具有足够的文档?

  • 我们是否需要后续操作?

    • 我们是否需要提交验证错误?或其他后续错误?

    • 我们是否需要向我们的用户或其他群体传达此信息?

其他考虑因素

除了上述基本考虑因素外,以下是一些有助于审查更改的其他详细考虑因素。

所有更改的考虑因素

  • 遵循我们的标准和最佳实践。

  • 这是否会对性能产生重大影响?

    • 不要延迟应用程序初始化(除非绝对必要)。

    • 不要阻塞网络请求。

    • 尽可能使较长的任务异步化。

  • 这是否比预期更广泛地影响产品?

    • 考虑我们所有的平台:Windows、Mac、Linux、Android。

    • 考虑我们所有的产品:Firefox、Fenix、Glean。

  • 这是否违反了常见的架构缺陷?

    • 除非编写解析器,否则优先使用采用非字符串类型的 API。

  • 健全性检查

    • 此更改在发布版本中的行为如何?您是否已测试过?

    • 此更改是否包含测试覆盖率?我们要求对每个新代码、更改和错误修复进行测试覆盖率。

  • 这是否需要更新文档?

  • 后续操作

    • 我们是否已提交验证错误?

    • 所有 TODO 是否都已提交后续错误?

    • 我们是否需要向我们的用户传达此信息?

    • 我们是否需要向其他群体传达此信息?

      • 数据工程、数据科学、数据管理员……?

考虑对其他人的影响

  • 此更改是否可能破坏上游管道作业?

    • 此更改是否以未处理的方式更改了传出数据的格式?

      • 例如,通过添加、删除或更改非指标有效负载字段的类型。

    • 这是否需要更新 ping 模式?

    • 这是否会破坏为指标解析注册表文件的作业?(Scalars.yaml、metrics.yaml 等)

  • 我们是否需要让其他人参与?

    • 数据格式、ping 内容、ping 语义等的更改需要让数据工程师参与。

    • 对任何正在使用的传出数据进行更改都需要让利益相关者参与(例如,数据科学家)。

Firefox 桌面版的考虑因素

  • 对于配置文件

    • 使用不同的配置文件如何影响此更改?

    • 在配置文件之间切换如何影响此更改?

    • 用户在不同通道之间切换时会发生什么?

  • 地雷

    • 这是否对 Fennec 产生副作用?(统一遥测在那里已关闭,因此行为非常不同。)

    • 您的代码是否基于首选项、构建信息、通道进行限制?测试应涵盖这一点。

    • 如果测试基于 isUnified 进行限制,则代码也应如此(反之亦然)

      • 测试其他情况

    • 任何使用new Date()的代码都应受到额外的审查 - 使用new Date()的代码应使用 Policy 以便可以模拟 - 使用new Date()的测试应使用特定日期,而不是当前日期

    • 这如何影响 Build Faster 支持/Artifact 构建/动态内置标量或事件?其他人能否在 Artifact 构建上测试此更改?

    • 我们在公开环境中工作:更改是否包含可能吓到最终用户的词语?

    • 此更改如何处理客户端 ID 重置?

    • 此更改如何处理用户选择退出数据收集?