SSWG 孵化流程

概述

正如服务器页面所述,Swift 服务器工作组(SSWG)的目标是为 Swift 服务器应用程序开发创建一个强大、健康的生态系统。实现这一目标的途径之一是鼓励开发高质量、维护良好的库和工具,让社区能够安心使用。

SSWG 与 Swift 演进流程的区别在于,工作组努力产出的面向服务器的库和工具将存在于 Swift 语言项目之外,并且分布在不同的代码库中。

苹果和 Vapor 的团队都有工程师将积极参与此类库和工具的开发,我们也希望看到社区加入这项工作。为此,工作组定义并启动了一个孵化流程,让任何人都可以提出想法、建议、开发和贡献此类库和工具。

孵化流程旨在帮助培育和成熟项目,确保标准化、质量和长期可持续性。它还致力于提高那些能为 SSWG 使命增添价值的想法、实验或其他早期工作的可见度。 以下文档详细说明了这个孵化流程。 SSWG 指导小组的角色类似于 Swift 核心团队,将根据社区的反馈,对推进提案/建议通过孵化流程做出最终决定。 就像 Swift 演进流程一样,任何人都可以提出想法和建议,成为 SSWG 指导小组的成员绝对不是必需条件。

流程

孵化包括以下阶段:构想提案开发推荐。 开发阶段是孵化的主要阶段。 SSWG 将维护一个公开的”Swift 服务器生态系统”索引页面,列出所有推荐的工具和库,以及处于孵化流程中的项目及其各自的孵化级别。

构想

构想是对新库或工具想法的介绍。 它们也可以介绍对现有工具的新功能或更改的想法。 构想用于收集社区反馈,并在编写代码之前帮助确定项目的确切范围。 它们应该展示如何与 SSWG 改进服务器端 Swift 的目标保持一致。 构想通过在 Swift 服务器论坛区创建新主题来提交。

提案

要将构想转入提案阶段,必须得到至少两名 SSWG 成员的支持。 提议的代码范围需要与获得支持的构想紧密一致,并且需要根据下面定义的 SSWG 毕业标准进行审查。

提案通过创建 PR 添加提案文档到提案目录来提交给 SSWG。提案遵循模板并包含以下信息:

提案 PR 提交后,SSWG 将在其两周一次的会议中指定一名审查管理员。 审查管理员的职责包括:

SSWG 每两周对待定提案进行投票,目标是每月至少对两个提案进行投票。

投票后,审查管理员将:

  1. 在审查主题中宣布投票结果。
  2. 根据投票结果更新提案状态。
  3. 关闭审查主题。

毕业标准

每个 SSWG 项目都有一个相关的成熟度级别:沙盒孵化中已毕业。 提案应说明其首选的初始成熟度级别,SSWG 将投票决定实际级别。

项目被接受为孵化中或已毕业需要超级多数(三分之二)支持。 如果没有超级多数的票数支持进入已毕业级别,那么支持已毕业的票数将重新计算为支持进入孵化中级别的票数。 如果没有超级多数的票数支持进入孵化中级别,那么所有票数都将重新计算为进入沙盒级别的赞助。 如果赞助者少于两个,提案将被拒绝。

沙盒级别

要被接受为沙盒级别,项目必须满足下面详述的 SSWG 最低要求,并得到至少两名 SSWG 赞助者的支持。

早期采用者应该格外谨慎对待早期阶段的项目。 虽然沙盒项目可以安全尝试,但预计有些项目可能会失败,永远不会进入下一个成熟度级别。 不保证生产就绪性、用户或专业级别的支持。 因此,用户必须运用自己的判断。

孵化中级别

要被接受为孵化中级别,项目必须满足沙盒级别要求,并且:

已毕业级别

要被接受为已毕业级别,项目必须满足下面详述的 SSWG 毕业要求,并且:

流程图

流程图

生态系统索引

所有项目及其各自的级别都将在 Swift 服务器生态系统索引中列出。 如果有多个项目解决特定问题(例如,两个类似的数据库驱动程序),它们将按受欢迎程度排序。 对于关键构建块(如日志记录或度量 API),SSWG 保留定义单一解决方案的权利,因为生态系统的一致性具有关键性质。

建议被接受到任何成熟度级别的项目在其项目的 README 中列出成熟度级别,并使用适当的徽章,定义如下:

sswg:sandbox sswg:incubating sswg:graduated

SSWG 将每 6 个月召开一次会议审查所有项目,并保留降级、归档或删除不再满足最低要求的项目的权利。 例如,一个已毕业的项目不再定期更新或未能及时解决安全问题。同样,SSWG 保留删除或归档不再收到更新的构想和提案的权利。

Swift 服务器生态系统索引页面的更改将由 SSWG 通过 Swift 服务器论坛公布。

最低要求

毕业要求

安全

请遵循安全部分中列出的指导。

技术最佳实践

变更管理

对孵化流程的更改必须记录并公开发布,并遵循语义版本控制模式:

导致版本升级的更新需要 SSWG 的超级多数投票。修复错别字或格式等琐碎的更改不需要版本升级。

资源和参考