Skip to content

PyTorch 治理 |机制

译者:片刻小哥哥

项目地址:https://pytorch.apachecn.org/2.0/docs/community/governance

原始地址:https://pytorch.org/docs/stable/community/governance.html

摘要

PyTorch 采用分层的技术治理结构。

  • 由提出问题、提出拉取请求并为项目做出贡献的 贡献者 社区。
  • 一小组 模块维护者 驱动 PyTorch 项目的每个模块。
  • 他们由 核心维护者监督 ,谁推动整个项目的方向。
  • 核心维护者有一个 领导核心维护者,他是包罗万象的决策者。

所有维护者都应该对 PyTorch 的设计理念抱有强烈的偏见。

除了维护者之外,还鼓励社区做出贡献、提出问题、提出建议、审查拉取请求并出现在社区中。鉴于贡献和投资意愿,任何人都可以被接受为维护者,并提供部分代码库的写入访问者所有权。

技术治理与业务治理严格分离。技术与业务治理的分离确保了任何个人或公司都无法“收买”项目的技术指导。此外,技术治理流程中的成员资格是针对个人,而不是公司。也就是说,没有为特定公司保留席位,并且成员资格与个人相关,而不是与雇用该人员的公司相关。

模块维护者

模块被定义为 PyTorch 组织内的 GitHub 存储库,或核心存储库 pytorch/pytorch 内的目录。每个模块都有自己的维护者组。维护者组负责审查和批准提交、改进设计以及更改模块的范围。每个维护者组可以采用自己的规则和程序来做出决策(默认为多数票)。模块维护者有权对其他模块维护者做出的决定提出异议——特别是当它影响到他们时。当出现争议时,模块维护者组应对争议提供合理且公开的解释、相关论据和解决方案。在模块维护者自己无法得出结论的特殊情况下,他们将升级至核心维护者进行审查。升级由核心维护者按照其规则和程序解决。

每个维护者小组应发布其模块的公开信息(愿景、粗略路线图、设计文档、任何争议和争议解决方案),以便贡献者和其他感兴趣的各方了解项目的未来方向并参与讨论。

维护者的职责包括:

  • 分类模块的高优先级问题
  • 分类、审查和落地模块的高优先级拉取请求
  • 支持与模块相关的公共文档
  • 运行公共开发者会议

核心维护者

核心维护人员应该对 PyTorch 代码库和设计理念有深入的了解。他们的职责包括:

  • 阐明项目的有凝聚力的长期愿景
  • 以所有相关方都能接受的方式谈判和解决有争议的问题
  • 接收 PyTorch 利益相关者提出的广泛变更请求并评估/接受它们(小模块级请求由模块维护人员处理)

核心维护者作为一个群体有权否决模块维护者级别做出的任何决定。核心维护者有权根据自己的意愿解决争议。核心维护者应公开表达其决策,并对其决策、否决和争议解决给出明确的理由。

核心维护者是 PyTorch GitHub Organd 的管理员,在 维护者 中列出。

首席核心维护者 (BDFL)

可能有些决定核心维护者无法达成共识。为了做出如此困难的决定,核心维护者中有一个指定并公开宣布的 LeadCore 维护者,在开源治理模型中通常也称为 BDFL。

首席核心维护者应公开阐明他们的决策,并给出其决策的明确理由。首席核心维护者还负责确认或删除核心维护者。

提名、确认和删除维护者

原则

  • 在通过贡献、审查和讨论展示了该组件的强大专业知识并与该组件如何适应整个 PyTorch 方向保持一致后,模块维护者小组的成员资格将根据 优点 授予个人。维护者小组中的个人必须表现出与 PyTorch 总体原则的强烈且持续的一致性。
  • 模块维护者或核心维护者没有任期限制
  • 如果他们长期不积极参与,则将模块维护移至“退休”状态的简单标准。每个模块维护者组可以定义适合该模块的非活动期。*成员资格是针对个人,而不是公司。

提名流程

  • 每个模块都有自己的进程。请联系模块维护人员以获取更多信息。但是,如果没有确定流程,您可以通过提交此表格向核心维护人员提出请求。核心维护人员正在满足每个三个月。*如果您向核心维护者提交请求,您的请求中的信息必须包括以下项目:

  • 被提名者对模块的代码、审查和设计贡献的深度和广度

  • 被提名者与维护者、用户和社区互动的评价(正面和负面)
  • 维护者对支持的一般评价
  • 然后核心维护者进行评估所有信息并做出确认或拒绝提名的最终决定。核心维护者的决定必须得到很好的阐述并且是公开的。

删除过程

  • 与提名流程类似,社区中的任何人都可以提名一个人被从模块维护者职位或核心维护者职位中删除。
  • 一个人也可以自我提名被删除
  • 核心维护者(不包括利益冲突人员)将请求或汇总以下方面的更多信息:

  • 他们在项目上的活动(或缺乏)

  • 他们对空间的想法不断变化,这导致与项目的总体方向相冲突
  • 其他使他们不适合成为维护者的信息,例如行为准则问题、他们的项目范围之外与项目价值观相冲突的活动
  • 利益冲突:孝顺或浪漫关系
  • 然后核心维护者评估所有信息并做出确认或拒绝删除的最终决定。核心维护者的决定必须清楚地表达出来并公开。

提名核心维护者

  • 任何核心或模块维护者都可以提名某人成为核心维护者
  • 首席维护者 (BDFL) 负责评估提名。
  • 首席维护者请求或汇总有关候选人成为核心维护者的实力的更多信息:

  • 来自其他核心和模块维护者的支持信

  • 来自 PyTorch 社区内利益相关者的一般支持信
  • 任何适合候选资格的新相关信息
  • 首席维护者评估所有信息并做出确认或拒绝提名的最终决定,明确公开阐述其决定背后的理由。

删除主要核心维护者并提名新的主要核心维护者

  • 绝大多数核心维护者 (75%) 可以选择删除主要核心维护者
  • 在删除主要核心维护者后或在不可预见的情况下(例如主要核心维护者永久不可用),核心维护者遵循排名选择投票方式选举新的主要核心维护者。

添加、删除和重新调整模块和项目的范围

核心维护者共同负责在 PyTorch 组织中添加、删除和重新界定新模块的决策,无论是作为 PyTorch GitHub 组织中的新存储库,还是作为 pytorch/pytorch存储库。

他们邀请社区成员(包括他们自己)提出此类变革的建议。这些建议是开放式的,但应该有一些基本的基础工作,以提出令人信服的变革理由。以下是此过程的示例方法:

  1. 采访研究人员/利益相关者,与社区交谈,收集问题;2.阅读论文、参加会议、根据经验构建示例管道;3.创建一个世界状态
  2. 确保此更改是必要的,例如添加一个新项目或模块值得维护成本;或者删除项目或模块不会从 PyTorch 中删除太多价值;4.创建提案;一旦提案获得批准,该提案将涵盖维护、开发和社区计划。

核心维护者对提案做出最终决定,并公开阐明决定背后的理由。

决策

无争议的更改

主要工作通过 GitHub 上的问题和拉取请求进行。维护人员应避免将更改直接推送到 PyTorch 存储库,而应依赖拉取请求。核心或模块维护者批准拉取请求后,无需进一步处理即可合并拉取请求。核心和模块维护者,如 维护者 页面和 代码所有者 中列出/master/CODEOWNERS)最终批准这些更改。

向相关专家通报问题或拉取请求非常重要。强烈推荐来自给定兴趣领域的专家的评论,尤其是在拉取请求批准方面。如果不这样做,相关专家可能会撤销更改。

有争议的决策过程

给定兴趣领域的重大变化需要打开 GitHub 问题进行讨论。这包括:

  • 对 PyTorch 框架或库的任何语义或语法更改。
  • 对 Python 或 C++ API 的向后不兼容更改。
  • 对核心框架或库的添加,包括现有库中的大量新功能。
  • 删除核心功能或平台支持

核心和模块维护者最终批准这些更改。

一般项目政策

PyTorch 已成立为 PyTorch a Series of 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 ContributorGuide 了解贡献指南。

问:我可以成为该项目的提交者吗? 不幸的是,当前 PyTorch 的提交过程涉及与 Facebook 基础设施的交互,只能由 Facebook 员工触发。然而,我们正在寻找将提交者基础扩大到 Facebook 之外的个人的方法,并将在有工具存在时提供更新。

问:如果我想在会议上提供 PyTorch 教程怎么办?我需要成为“正式”提交者才能做到这一点吗? 不,我们鼓励社区成员随时随地展示他们的工作。请联系marketing@pytorch.org 获取营销支持。


我们一直在努力

apachecn/AiLearning

【布客】中文翻译组