为NumPy贡献 >NumPy governance > NumPy project governance and decision-making
本文档旨在规范NumPy项目在普通和特殊情况下使用的治理流程,并阐明如何制定决策以及我们社区的各个要素如何相互作用,包括开源协作开发与工作之间的关系。可以由营利性或非营利性实体资助。
NumPy是一个社区拥有和社区运营的项目。关于项目方向的决定应尽可能通过社区共识来做出(但请注意,此处的“共识”在某种程度上具有技术含义,可能并不符合每个人的期望–参见下文)。社区中的某些成员还通过在NumPy指导委员会中任职作出贡献,在该委员会中,他们负责促进建立社区共识,管理项目资源,并在极端情况下(如果在正常的基于社区的流程中断的情况下)做出项目决策。下。
NumPy项目(该项目)是501(c)3 NumFOCUS基金会的附属开源软件项目。该项目的目标是开发用于Python中基于数组的计算的开源软件,尤其是numpy
软件包,以及相关的软件,例如f2py
NumPy Sphinx扩展。由The Project开发的软件是在BSD(或类似的)开源许可证下发布的,是公开开发的,并托管在numpy
GitHub组织下的公共GitHub存储库中。
该项目由称为“贡献者”的分布式开发人员团队开发。贡献者是为项目贡献代码,文档,设计或其他工作的个人。任何人都可以成为贡献者。贡献者可以隶属于任何法律实体,也可以不隶属于任何实体。贡献者通过提交,审查和讨论GitHub Pull Requests和Issues以及参与GitHub,邮件列表和其他渠道的公开和公共项目讨论来参与该项目。项目参与的基础是开放和透明。
项目社区由项目的所有贡献者和用户组成。贡献者代表更大的项目社区并对其负责,我们努力将贡献者和用户之间的障碍降到最低。
该项目正式隶属于501(c)3 NumFOCUS基金会(http://numfocus.org),NumFOCUS基金会是其财政赞助商,可以持有项目商标和其他知识产权,帮助管理项目捐赠并作为母公司的法律。实体。NumFOCUS是唯一与该项目有正式关系的法律实体(请参阅下面的“机构合作伙伴”部分)。
本节描述了项目的治理和领导模型。
项目治理的基础是:
公开透明
积极贡献
制度中立
通常,所有项目决定都是在所有感兴趣的贡献者的共识下做出的。这种方法的主要目标是确保受任何特定变更影响最大并参与其中的人们能够以听到自己的声音的信心来贡献自己的知识,因为广泛的社区进行认真的审查是我们所知的最佳机制用于创建高质量的软件。
对于那些不了解围绕自由/开源软件开发的文化规范的人来说,我们用于实现该目标的机制可能是陌生的。我们在此处提供摘要,并强烈建议所有贡献者另外阅读 Karl Fogel经典的生产开源软件的第4章:社会和政治基础结构,尤其是关于基于共识的民主的部分,以进行更详细的讨论。
在此背景下,共识也不能要求:
我们等待每一个变化征求大家的意见,
我们曾经对任何事物进行投票,
或者每个人都很高兴或同意每个决定。
对我们而言,共识意味着,我们委托所有人,如果他们认为有必要,则有权否决任何变更。虽然这听起来像是阻塞和疼痛的秘诀,但事实并非如此。取而代之的是,我们发现大多数人都认真对待这一责任,只有在他们认为严重的问题正在被忽略并且他们的否决权对于保护该项目是必要的时候才使用否决权。在实践中,事实证明,这种否决权几乎从未被正式援引,因为它们的仅有可能性确保了贡献者从一开始就有动力找到每个人都能接受的解决方案,从而实现了确保所有观点都被采纳的目标。考虑在内。
我们如何知道何时达成共识?从原则上讲,这是相当困难的,因为共识是由缺乏维托斯来定义的,这要求我们以某种方式证明是消极的。在实践中,我们结合了最佳判断力(例如,在GitHub上发布的简单且无争议的错误修复程序,并由核心开发人员审查过)和尽力而为(例如,所有实质性的API更改都必须发布到邮件列表中)为了使广大社区有机会发现任何问题并提出改进建议;我们认为对NumPy足够关心的人可以行使其否决权。如果几天后没人愿意在邮件列表上发表评论,那可能就好了。最坏的情况是,如果变更比预期的更具争议性,备份,然后整理一下。
如果确实需要援引正式否决权,则它应包括:
明确表示正在否决权的声明,
解释为什么调用它的原因,以及
描述什么条件(如果有)会说服否决人撤回其否决权。
如果所有解决某个问题的建议都被否决,那么默认情况下将维持现状。
在最坏的情况下,如果贡献者确实以阻碍性方式滥用其否决权,从而损害了该项目,则可以通过指导委员会的共识将其从该项目中逐出–参见下文。
该项目将有一个由项目贡献者组成的指导委员会,这些贡献者的贡献在质量和数量上都相当可观,并且持续至少一年。理事会的总体作用是在社区的投入下,确保该项目在技术上和社区上的长期福祉。
在日常项目活动中,理事会成员与所有其他贡献者和社区一起参加所有讨论,代码审查和其他项目活动。在这些日常活动中,安理会成员通过成为安理会成员而没有任何特殊权力或特权。但是,由于理事会成员的贡献的质量和数量以及他们对项目软件和服务的专业知识,预计理事会成员将为潜在的经验不足的参与者在技术和项目指导方面提供有用的指导。
指导委员会及其成员在某些情况下起特殊作用。理事会尤其可以在必要时:
决定项目的总体范围,远景和方向。
做出与其他组织或个人的战略合作的决策。
做出有关特定技术问题,功能,错误和提取请求的决策。它们是指导代码审查过程和合并拉取请求的主要机制。
对由项目运行的服务做出决策,并为项目和社区的利益管理这些服务。
更新诸如此类的政策文件。
当定期的社区讨论未能在合理的时间内就某个问题达成共识时,请做出决策。
但是,理事会的主要责任是促进上述基于社区的普通决策程序。如果我们不得不介入并正式超越社区,以维护项目的健康,那么我们将这样做,但是我们将考虑达到这一点,以表明我们领导层的失败。
如果指导委员会有必要做出正式决定,则他们将使用Apache Foundation投票程序的一种形式。这是共识的形式化版本,其中+1票表示同意,-1票表示否决(如上所述,必须附有理由),如果有1票,也可以进行部分表决(例如-0.5,+ 0.5)希望表达自己的意见而不注册否决权。这些数字投票通常也被非正式地用作在某些问题上获得人们的一般感觉的一种方式,通常不应视为正式投票。正式表决只有在明确宣布后才进行,如果确实发生,则表决应进行足够长的时间,以使所有感兴趣的安理会成员都有机会作出回应-至少一周。
实际上,我们预计,对于大多数指导委员会的决定(例如,对新成员进行投票),一个更加非正式的过程就足够了。
当前的指导委员会成员和机构合作伙伴页面上保留了当前的指导委员会成员列表。
要有资格加入督导委员会,个人必须是项目贡献者,其贡献的质量和数量应是可观的,并且必须持续至少一年。潜在的理事会成员由现有的理事会成员提名,并在与现有的理事会成员达成共识后成为成员,并确认潜在的理事会成员有兴趣并愿意以这种身份任职。该理事会最初由现有的核心开发人员组成,这些核心开发人员截至2015年底在过去一年中一直非常活跃。
理事会在考虑潜在成员时,将对候选人进行全面评估。这将包括但不限于代码,代码审查,基础结构工作,邮件列表和聊天参与,社区帮助/构建,教育和推广,设计工作等。我们故意不设置任意的量化指标(例如“ 100次提交此回购”),以避免鼓励影响指标的行为,而不是影响项目整体利益的行为。我们希望在团队中鼓励各种各样的背景,观点和才能,这就是为什么我们明确不将代码定义为评估理事会成员资格的唯一指标的原因。
如果理事会成员在该项目中闲置了一年,则将考虑将其从理事会撤职。在删除之前,将与不活跃的成员联系,以了解他们是否计划恢复活跃参与。否则,将在理事会投票后立即将其删除。如果他们计划很快恢复积极参与,他们将获得一年的宽限期。如果他们在此期间内未恢复积极参与,则将由安理会投票将其罢免,而没有进一步的宽限期。像其他任何项目贡献者一样,将来任何时候都可以再次考虑所有前理事会成员的成员资格。退休理事会成员将列在项目网站上,并确认他们活跃于理事会的时期。
如果认为现任成员对项目的福祉有积极损害,而沟通和解决冲突的尝试均告失败,则理事会保留罢免其权利。这需要其余成员达成共识。
预计理事会成员将受雇于各种公司,大学和非营利组织。因此,会员之间可能会有利益冲突。此类利益冲突包括但不限于:
项目外部的财务利益,例如投资,就业或签约工作,可能会影响他们在项目上的工作。
访问其雇主的专有信息,这些信息可能会泄漏到他们与该项目的工作中。
安理会所有理事国应将可能发生的任何利益冲突向安理会其他成员披露。在特定问题上有利益冲突的成员可以参加安理会关于该问题的讨论,但必须回避自己对该问题的投票。
理事会的讨论和活动将尽可能公开进行,并与项目贡献者和社区进行协作和讨论。理事会将有一个私人邮件列表,只有在特定事项需要隐私时才会被谨慎使用。当需要私人通信和决策时,理事会将在收集不应发布到公共互联网上的个人/私人/敏感信息后,尽力将这些信息汇总到社区。
理事会可以创建小组委员会,为项目的特定方面提供领导和指导。与整个理事会一样,除非明确要求隐私,否则小组委员会应以公开和公开的方式开展业务。除非明确要求,否则私人小组委员会的沟通应在理事会的主要私人邮件列表上进行。
理事会将维持一个狭义的小组委员会,以管理其与NumFOCUS的互动。
NumFOCUS小组委员会由5个人组成,负责管理通过NumFOCUS提供的项目资金。预计这些资金的支出方式将与NumFOCUS的非营利性使命以及整个理事会确定的项目方向相一致。
本小组委员会不得就项目的方向,范围或技术方向做出决定。
该小组委员会将有5名成员,其中4名将是现任理事会成员,其中1名将在指导理事会之外。最多只能有2个小组委员会成员通过雇用或签约工作向一个人举报(包括被举报人,即,被举报人+ 1个最大值)。这样可以避免大多数人依靠一个人。
NumFOCUS小组委员会的当前成员资格在“ 当前指导委员会和机构合作伙伴 ”页面中列出。
指导委员会是该项目的主要领导。除通过以贡献者和理事会成员的身份参与项目外,任何外部机构,个人或法人实体均无权拥有,控制,篡改或影响该项目。但是,由于机构可以成为该项目的重要筹资机制,因此正式承认机构对项目的参与很重要。这些是机构合作伙伴。
机构贡献者是指作为其在机构合伙人中的官方职责的一部分向项目做出贡献的任何个人项目贡献者。同样,机构理事会成员是指在机构合伙人中作为其官方职责的一部分为项目做出贡献的任何项目指导理事会成员。
根据这些定义,机构合作伙伴是在美国或其他地区雇用至少一名机构理事会成员的机构贡献者的任何公认的法律实体。机构合作伙伴可以是营利性或非营利性实体。
机构通过雇用积极为该项目做出贡献的个人,有资格成为机构合作伙伴。换句话说,合作伙伴影响项目的唯一方法是,与贡献者社区和理事会成员的任何其他成员一样,积极地为项目的开放发展做出贡献。仅在机构环境中使用Project Software不允许实体成为机构合作伙伴。财务礼物无法使实体成为机构合作伙伴。一旦机构有资格获得机构合伙制,则指导委员会必须提名并批准该合伙制。
如果在某个时候,现有的机构合作伙伴停止雇用任何有贡献的员工,则开始为期一年的宽限期。如果在这一年期末他们仍然没有任何供款员工,那么他们的机构合作伙伴关系将失效,要恢复该合作伙伴关系,将需要按照正常流程进行新的合作伙伴关系。
机构合作伙伴可以通过任何法律手段自由地为其项目工作寻求资金。这可能涉及非营利组织从私人基金会和捐助者那里筹集资金,或者是一家营利性公司构建利用项目软件和服务的专有产品和服务。机构合作伙伴获得的用于该项目的资金称为机构资金。但是,机构合作伙伴获得的任何资金都不能超过指导委员会。如果合作伙伴有资金从事NumPy工作,而理事会决定不将其作为项目进行,则合作伙伴可以自行进行。但是,在这种情况下,合作伙伴的那部分工作将不在NumPy的保护之下,并且不能以暗示正式关系的方式使用Project商标。
机构合作伙伴的好处是:
在NumPy网站上的致谢,包括谈话和T恤衫。
能够在NumPy网站,讲座和T恤衫上确认自己的资金来源。
通过其理事会成员的参与来影响项目的能力。
理事会成员应邀参加了NumPy开发人员会议。
当前机构合作伙伴列表保留在 当前指导委员会和机构合作伙伴页面上。
本文档的大部分内容摘自 Jupyter / IPython项目的管理文档。
根据CC-0公共领域的奉献精神/许可,在法律允许的范围内,作者放弃了NumPy项目治理和决策文件的所有版权及相关或邻近权利。