PyTorch 治理 | 机制¶
摘要¶
PyTorch 采用分层的技术治理结构。
一个由**贡献者**组成的社区,他们提交问题、发出拉取请求并为项目做出贡献。
一小部分**模块维护者**推动 PyTorch 项目的每个模块。
他们受**核心维护者**的监督,后者推动项目的整体方向。
核心维护者拥有一位**首席核心维护者**,他是最终的决策者。
所有维护者都应强烈倾向于 PyTorch 的设计理念。
除了维护者之外,还鼓励社区做出贡献、提交问题、提出建议、审查拉取请求并在社区中出现。鉴于贡献和投资意愿,任何人都可以被接受为维护者,并获得代码库部分的写入权限或所有权。
技术治理与业务治理严格分离。将技术治理与业务治理分离可确保任何个人或公司都无法“用金钱换取”项目的技术指导。此外,技术治理流程中的成员资格适用于**个人**,而不是公司。也就是说,没有为特定公司保留的席位,并且成员资格与个人相关联,而不是与雇用该个人的公司相关联。
模块维护者¶
模块定义为 PyTorch 组织内的 GitHub 存储库,或核心存储库pytorch/pytorch中的目录。每个模块都有自己的维护者组。维护者组负责审查和批准提交、改进设计以及更改模块的范围。每个维护者组可以采用自己的规则和程序来做出决策(多数投票为默认值)。模块维护者有权对其他模块维护者做出的决定提出异议,尤其是在影响到他们自身的情况下。当发生争议时,模块维护者组应提供对争议、相关论点和解决方案的合理且公开的解释。在模块维护者无法自行达成结论的特殊情况下,他们将升级到核心维护者以供审查。核心维护者根据其规则和程序解决升级问题。
每个维护者组都应为其模块发布公开的沟通信息(愿景、粗略路线图、设计文档、任何争议和争议解决),以便贡献者和其他利益相关方了解项目的未来方向,并参与讨论。
维护者的职责包括
对模块的高优先级问题进行分类
对模块的高优先级拉取请求进行分类、审查和合并
支持与模块相关的公共文档
举办公开的开发者会议
核心维护者¶
核心维护者应深入了解 PyTorch 代码库和设计理念。他们的职责包括
阐明项目的连贯的长期愿景
以所有相关方都能接受的方式协商和解决有争议的问题
接收来自 PyTorch 利益相关者的广泛变更请求并进行评估/接受(小型模块级请求由模块维护者处理)
核心维护者作为一个整体有权否决模块维护者层级做出的任何决定。核心维护者有权自行解决争议。核心维护者应公开阐明其决策过程,并为其决策、否决和争议解决提供清晰的理由。
核心维护者是 PyTorch GitHub 组织的管理员,并在维护者中列出。
首席核心维护者 (BDFL)¶
可能存在核心维护者无法达成共识的决策。为了做出此类困难的决策,核心维护者在其成员中指定了一位已公开声明的首席核心维护者,在开源治理模型中通常称为 BDFL。
首席核心维护者应公开阐明其决策过程,并为其决策提供清晰的理由。首席核心维护者还负责确认或移除核心维护者。
提名、确认和移除维护者¶
原则¶
模块维护者组的成员资格授予**个人**,并基于**贡献**。在他们通过贡献、审查和讨论证明了对组件的强大专业知识,并且与组件如何融入 PyTorch 的整体方向保持一致后。
要成为维护者组的成员,个人必须证明与 PyTorch 的整体原则保持强大且持续的一致性。
模块维护者或核心维护者没有任期限制。
如果他们长期不积极参与,则将模块维护转移到“荣誉”状态的轻量级标准。每个模块维护者组可以定义适合该模块的非活动期限。
成员资格适用于个人,而不是公司。
提名流程¶
每个模块都有自己的流程。请与模块维护者联系以获取更多信息。但是,如果没有识别出任何流程,您可以通过提交此表单向核心维护者提交请求。核心维护者每三个月举行一次会议。
如果您要向核心维护者提交请求,则您的请求中必须包含以下信息
被提名人在模块上的代码、审查和设计贡献的深度和广度
被提名人与维护者、用户和社区互动(正面和负面)的评价
维护者的一般支持评价
然后,核心维护者评估所有信息并做出最终决定,确认或拒绝提名。核心维护者的决定必须表达清楚,并且将公开。
移除流程¶
与提名流程类似,社区中的任何人都可以提名将某人从模块维护者职位或核心维护者职位中移除。
一个人也可以自行提名移除
核心维护者(排除存在利益冲突的人员)将要求或收集以下方面的信息
他们在项目上的活动(或缺乏活动)
他们对该领域的思考变化,导致与项目的整体方向发生冲突
其他使他们不适合担任维护者的信息,例如行为准则问题、他们在项目范围之外的活动与项目价值观冲突
利益冲突:父子或恋人关系
然后,核心维护者评估所有信息并做出最终决定,确认或拒绝移除。核心维护者的决定必须表达清楚,并且将公开。
提名核心维护者¶
任何核心或模块维护者都可以提名某人成为核心维护者
首席维护者(BDFL)负责评估提名。
首席维护者要求或收集有关候选人成为核心维护者能力的信息
其他核心和模块维护者的支持信
PyTorch 社区利益相关者的普遍支持信
任何适合候选资格的新的相关信息
首席维护者评估所有信息并做出最终决定,确认或拒绝提名,并清楚地公开说明其做出决定的理由。
移除首席核心维护者并提名新的首席核心维护者¶
核心维护者中的绝大多数(75%)可以选择移除首席核心维护者
在移除首席核心维护者之后或在不可预见的情况下(例如首席核心维护者永久无法使用),核心维护者将遵循排名选择投票方法选举新的首席核心维护者。
添加、移除和重新定义模块和项目范围¶
核心维护者共同负责对在 PyTorch 组织中添加、移除和重新定义新模块的决定进行决策,无论是作为 PyTorch GitHub 组织中的新存储库,还是作为pytorch/pytorch存储库中的文件夹。
他们邀请社区成员(包括他们自己)提出此类更改的建议。这些提案是开放式的,但应该有一些基本的工作来提出有说服力的理由来进行更改。以下是此过程的一个示例方法
采访研究人员/利益相关者,与社区交流,收集问题;
阅读论文,参加会议,根据经验构建示例管道;
创建世界现状 - 确保此更改是必要的,例如添加新项目或模块值得维护成本;或者移除项目或模块不会从 PyTorch 中移除太多价值;
创建提案;该提案涵盖了提案批准后维护、开发和社区计划。
核心维护者对该提案做出最终决定,并公开说明做出决定的理由。
决策¶
无争议的更改¶
主要工作通过 GitHub 上的问题和拉取请求进行。维护者应避免将其更改直接推送到 PyTorch 存储库,而是依靠拉取请求。核心或模块维护者批准拉取请求允许将其合并而无需进一步流程。核心和模块维护者,如维护者页面和CODEOWNERS中列出,最终批准这些更改。
通知相关专家有关问题或拉取请求非常重要。来自特定兴趣领域的专家的审查是强烈推荐的,尤其是在拉取请求批准方面。未能这样做可能会导致相关专家撤消更改。
有争议的决策流程¶
特定兴趣领域的重大更改需要打开一个 GitHub 问题以进行讨论。这包括
对 PyTorch 框架或库的任何语义或语法更改。
对 Python 或 C++ API 的向后不兼容更改。
对核心框架或库的添加,包括现有库中的大量新功能。
移除核心功能或平台支持
核心和模块维护者最终批准这些更改。
一般项目策略¶
PyTorch 已被确立为 PyTorch LF Projects, LLC 系列项目。适用于 PyTorch 及 PyTorch 参与者的策略,包括商标使用指南,位于https://www.lfprojects.org/policies/。
PyTorch 参与者承认,所有新贡献的版权将由版权持有人作为独立的创作作品保留,并且不会要求任何贡献者或版权持有人将版权分配给该项目。除非下面所述,否则对项目的全部代码贡献必须使用此处提供的 3-Clause-BSD 许可证:https://opensource.org/licenses/BSD-3-Clause(“项目许可证”)。所有输出代码将在项目许可证下提供。维护者可以作为例外情况批准使用替代的开放许可证或许可证用于输入或输出贡献。
常见问题¶
问:如果我想拥有(或部分拥有)项目的一部分,例如功能区域或领域库,例如线性代数或Torch Vision?这绝对是可能的。第一步是开始为现有项目区域做出贡献并支持其健康和成功。除此之外,您可以通过 GitHub 问题提出关于新功能或改进项目区域的更改的建议。
问:如果我是一家公司,希望在内部使用 PyTorch 进行开发,我可以获得或购买董事会席位来推动项目方向吗?不,PyTorch 项目严格遵循维护者项目理念,并将技术治理与业务治理明确分开。但是,如果您想参与赞助和支持,您可以参与 PyTorch 基金会 (PTF) 并通过此方式进行赞助。您也可以让个人工程师寻求成为维护者,但这并非保证,而是基于能力的。
问:PyTorch 项目是否支持赠款或支持独立开发人员使用或为该项目做出贡献的方式?不,目前没有。但是,我们正在寻找更好的方法来支持围绕 PyTorch 的独立开发人员社区。如果您有任何建议或意见,请在 PyTorch 论坛上联系我们进行讨论。
问:如何为该项目贡献代码?如果更改相对较小,可以立即在 GitHub 上打开拉取请求,供项目提交者审查和合并。对于较大的更改,请打开一个问题以提出建议以供事先讨论。另请参阅PyTorch 贡献者 Wiki,了解贡献的演练。
问:我能否成为该项目的提交者?不幸的是,当前提交到 PyTorch 的流程涉及与 Facebook 基础设施的交互,而此交互只能由 Facebook 员工触发。但是,我们正在寻找方法将提交者群扩展到 Facebook 之外的个人,并在工具允许这样做时提供更新。
问:如果我想在会议上或其他场合提供 PyTorch 教程?我是否需要“正式”成为提交者才能做到这一点?不,我们鼓励社区成员在任何时间任何地点展示他们的作品。请联系marketing@pytorch.org 获取营销支持。