走向开源社区的第一步:The Apache Way
如果想加入Apache开源社区,成为一名Commiter,那么首先第一点就是要认同Apache社区的理念:
Apache Way
目录
- Apache基金会是什么?
- 一些关于Apache基金会的历史
- 精英政体
- 基金会的结构
- 社区角色
- 项目管理者
- 组织架构
- 基金会孵化器
- 基金会的本质
- 结语
一、Apache基金会是什么?
Apache软件基金会 (ASF) 是一个 501(c)3 非营利性公共慈善组织,在美国注册成立。它成立于1999年,主要是为了:
- 通过提供硬件、通信和业务基础设施,为开放、协作的软件开发项目奠定基础
- 创建一个独立的法人实体,公司和个人可以向其捐赠资源,并保证这些资源将用于公共利益
- 为一些志愿人员提供庇护的手段,使他们免受针对基金会项目的法律诉讼
- 保护"Apache"品牌软件产品免受其他组织的滥用
这些都是枯燥的事实, 但这一切是怎么来的, 这到底是什么意思呢?我们回过头看一看历史。
二、一些关于Apache基金会的历史
一群自称为"阿帕奇集团"的人于1999年创立了该基金会。几年前,他们走到一起,继续支持和维护由伊利诺伊大学国家超级计算应用中心 (NCSA) 编写的 HTTPD Web 服务器。
该服务器是免费提供的,带有其源代码,其许可证允许非常开放的修改和再分配,但原来的开发人员失去了对该项目的兴趣,并转移到别的东西,使用户没有支持应用程序。
其中一些用户开始交换修复(称为"修补程序")和有关如何防止问题和改进现有软件的信息。Brian Behlendorf 创建了一个邮件列表,这些用户可以协作修复、维护和改进该软件。
该组织之所以选择"阿帕奇"这个名字,是出于对美洲原住民阿帕奇民族的尊重,以其在作战战略方面的高超技能和取之不尽的耐力而闻名。它也使一个可爱的双关语在"一个零碎的网络服务器" - 一个服务器由一系列补丁 - 但这不是它的起源。该组织很快开始称自己为"阿帕奇集团"。
1995 年至 1999 年间,阿帕奇集团创建和支持的 Apache HTTPD Web 服务器成为市场的领导者(目前,世界上超过 65% 的网站都由它提供支持)。
但随着网络规模的扩大,经济利益开始增长,阿帕奇网站托管了新的姐妹项目(如mod_perl项目、PHP项目、Java Apache项目)。需要建立一个更加连贯和结构化的组织,保护个人免受潜在的法律攻击。
想要了解更多有关Apache基金会的历史,可以阅读ASF History Project
三、Meritocracy(精英政体)
与开放源许可证下的其他软件开发工作不同,如 Linux 内核或 Perl/Python 语言,没有单个开发人员启动 Apache Web 服务器。一群有着共同利益的人在交流信息、软件修复和建议时开发了该项目。
随着小组开始开发自己的软件版本,远离NCSA版本,更多的人被吸引,并开始帮助,首先通过发送小补丁,或建议,或回复邮件列表上的电子邮件,后来与更重要的贡献。
当小组认为一个人"赢得了"成为开发社区的一员的优点时,他们允许直接访问代码存储库,从而扩大了团队,提高了开发程序以及更有效地维护和开发软件的能力。
我们称这一基本原则为"精英政体":以功绩为本的政府。
这个过程在不产生摩擦的情况下发展得很好,因为与其他权力稀缺而保守的资源不同,在阿帕奇集团中,新来者被视为想要帮助的志愿者,而不是想抢到职位的人。
由于没有有限的,因此宝贵的资源(金钱,能源,时间)处于危险之中,该集团很高兴有新的人进来提供帮助。他们只过滤那些表示有兴趣找到并包括那些他们认为足够致力于这项任务的人,并符合与他人合作所需的人类态度,特别是在存在分歧时。
在解释ASF的结构后,我们将看到精英与各种角色的关系。
四、基金会结构
随着Apache Web服务器的市场份额和普及率开始增长,由于其技术优势的协同作用和项目背后的社区的开放性,人们开始创建卫星项目。受他们习惯的社区精神的影响,他们采用了同样的社区管理传统。
到ASF成立时,有几个独立的社区,每个社区都关注"网络服务"问题的不同方面,但都以一套共同的目标和一套受人尊敬的礼仪和工艺文化传统而团结在一起。
共同的目标和一套受人尊敬的文化传统的礼仪和过程。
这些独立的社区被称为"项目",虽然相似,但每个社区都表现出很少的差异,这使得它们与众不同。
为了减少摩擦并允许多样性出现,而不是强迫高层进行单一文化,ASF 将项目指定为阿帕奇世界的核心决策组织。每个项目都有权开发其软件,在设计自己的技术章程和自己的管理规则方面有很大的自由度。
同时,原始阿帕奇群体的文化影响力很强,不同社区之间的相似性也很明显,我们稍后将看到这一点。
下列实体管理基金会:
- 董事会(董事会)管理基金会,由成员组成。
- 项目管理委员会(PMC)管理项目,由承诺人组成。(请注意,根据定义,每个 PMC 成员也是提交人。
- 董事会任命的公司各官员在特定领域(法律、品牌、筹款等)制定了全基金会的政策。
想要了解更多信息,可以阅读 Governance overview.
Board of Directors (board)董事会
董事会负责根据章程对公司的业务和事务进行管理和监督。这包括管理公司资产(资金、知识产权、商标和支持设备),以及将公司资源分配给项目。
但是,每个 Apache 项目的 PMC 对项目的内容和方向都有技术决策权。
董事会目前由9人组成,由基金会成员选举产生。章程没有具体说明基金会应该拥有的董事会成员人数,但这是第一个董事会成员的数量,而且从未改变过。董事会每年选举产生。
董事会网站拥有更多信息、现任董事名单、会议日程和过去会议记录。
Project Management Committees (PMC) 项目管理委员会
理事会设立项目管理委员会(PMCs),负责对一个或多个特定社区的积极管理。
每个PMC包括至少一名ASF官员,该官员应被指定为其主席,并可能包括ASF的一个或多个其他成员。
董事会任命PMC主席,他同时成为ASF的官员(副总裁)。主席对董事会负有主要责任,并有权为PMC负责的社区的日常管理制定规则和程序,包括PMC本身的组成。请参阅有关 PMC 主席角色以及为什么主席是官员的进一步讨论。
ASF 章程(第 6.3 节)定义了 PMC 和主席职位。一些电子邮件有助于澄清。
从基金会的角度来看,PMC 的作用是监督。PMC的主要作用不是编码,也不是编码,而是确保其社区解决所有法律问题并遵循既定程序,并且每一次发布都是整个社区的产物。这是我们诉讼保护机制的关键。
PMC 的第二个作用是促进整个社区的长远发展和健康,并确保进行平衡和广泛的同行审查和协作。在 ASF 中,我们担心任何社区都围绕着一些几乎无需审查而工作的个人。我们认为,这不利于守则和长期社会结构的质量、稳定性和稳健性。
我们坚信职权。您在 ASF 中的角色是个人分配给您的角色,并且由您的同行授予您。它与您的工作或当前雇主或公司无关。
然而,PMC 上的那些被控制在更高的标准。PMC,特别是主席,是ASF董事会的眼睛和耳朵,所以我们依靠和需要信任你提供法律监督。
董事会可以随时通过决议终止 PMC。
阿帕奇开发人员信息页面有更多有关 PMC 如何工作的详细信息。所有Apache的完整项目也可用。
Officers 工作人员
阿帕奇软件基金会的官员监督基金会的日常事务。董事会选举这些官员。
五、Roles 角色
精英制度通常在每个阿帕奇项目社区中担任各种角色:
User 用户
用户是使用我们软件的人。他们通过以错误报告和功能建议的形式向开发人员提供反馈,为 Apache 项目做出贡献。用户通过帮助邮寄列表和用户支持论坛中的其他用户参与 Apache 社区。
Developer 开发者
开发人员是以代码或文档形式为项目做出贡献的用户。他们采取额外步骤参与项目,活跃在开发人员邮件列表中,参与讨论,并提供补丁、文档、建议和批评。开发人员也被称为贡献者(contributors)。
Committer 提交者
提交人是编写代码存储库并存档已签署的供稿人许可协议 (CLA) 的开发人员。他们有一个 apache.org 邮寄地址。不需要依赖其他人对代码或文档进行修补,他们实际上是在为项目做出短期决策。PMC 可以(甚至默示地)同意并批准永久更改,或者他们可以拒绝这些更改。请记住,PMC 做出决策,而不是由个人提交人做出决策。
PMC Member PMC成员
PMC 成员是因项目演变的优点而当选的提交人。他们有权写入代码存储库、apache.org 邮寄地址、对与社区有关的决定进行表决的权利以及为承诺提出其他积极贡献者的权利。PMC 作为一个整体是控制项目的实体,没有其他人。特别是,PMC 必须投票批准其项目软件产品的任何正式发布。
PMC Chair PMC主席
董事会从PMC成员中任命PMC主席。PMC 作为一个整体是控制和领导项目的实体。主席是董事会和项目之间的界面。PMC主席有具体的职责。
ASF Member ASF成员
ASF 成员是由现任成员提名并因基金会的演变和进步而当选的人。成员关心 ASF 本身,通常通过项目相关和跨项目活动。从法律上讲,会员是基金会的"股东",也是基金会的所有者之一。他们有权选举董事会,作为董事会选举的候选人参选,并有权提出入会承诺人。他们还有权提出一个新的孵化项目(我们稍后将看到这意味着什么)。成员们通过邮寄名单和年会协调他们的活动。我们有阿帕奇会员的完整名单。
Project Management and Collaboration 项目管理和协作
阿帕奇项目使用基于共识的协作流程进行管理。我们没有等级结构:相反,不同的贡献者群体在组织中有不同的权利和责任。
由于指定的 PMC 有权制定自己的自治规则,因此对于 PMC 应如何管理其项目和培育其领导的社区,没有单一的愿景。
同时,虽然存在一些差异,但所有ASF项目都有一些相似之处:
Communication 通信
通信是通过邮寄列表。这些是"虚拟会议室",对话异步进行,这是分布在许多时区的组的一般要求(通常阿帕奇社区的情况)。
有些项目还使用更多的同步消息(例如,IRC 或即时消息)。语音交流极为罕见,通常是因为成本和语言障碍(语音比书面文本更难理解)。
一般来说,异步交流很重要,因为它允许创建档案,并且对不同社区的志愿者性质更加宽容。
Documentation 文档
每个项目都负责自己的项目网站。ASF 基础设施提供更多信息,以协助提交者、开发人员和 PMC。
Decision Making 决策
项目通常是自动管理,由自愿参加这项工作的人驱动。这有时被称为"do-ocracy" - 权力的人这样做。这在大多数情况下运作良好。
当需要协调时,项目以懒惰的共识方式作出决定:一些没有反对票的正面投票就足以进行。
投票按数字进行:
- +1 - 一个积极的投票
- 0 - 弃权,没有意见
-1 -- 反对票
规则要求登记反对票的 PMC 成员必须包括替代提案或对反对投票原因的详细解释。
然后,社区试图就一项能够解决问题的替代提案达成共识。在绝大多数情况下,可解决导致反对投票的关切。
这个过程被称为"共识聚会"("consensus gathering" ),我们认为它是一个健康社区非常重要的标志。
具体案例有一些更详细的投票规则。
Philosophy 理念
虽然没有官方名单,但人们经常引用这六项原则,通常被称为 "The Apache Way",作为基金会的核心信念:
- 协作软件开发 collaborative software development
- 商业友好型标准许可证 commercial-friendly standard license
- 始终如一的高质量软件 consistently high-quality software
- 尊重、诚实、基于技术的互动 respectful, honest, technical-based interaction
- 忠实执行标准 faithful implementation of standards
- 安全性作为必备功能 security as a mandatory feature
所有 ASF 项目都共享这些原则。同样,阿帕奇项目必须独立于不当的商业影响来管理自己。
Operation 操作
ASF项目的所有参与者都是志愿者,没有人(甚至不是成员或官员)由基金会直接支付他们的工作报酬。有许多承诺者有报酬从事项目工作的例子,但从来没有由基金会本身支付。相反,使用软件并希望增强软件或维护软件的公司或机构提供工资。
ASF 提供各种服务,包括会计、新闻和媒体关系以及基础设施系统管理。
ASF的个人组成
所有ASF,包括董事会、官员、承诺人和成员,均以个人身份参与。这是ASF的一个优势:个人从属关系不会给个人的贡献蒙上阴影。
除非他们另有具体说明,否则无论ASF参与者在任何邮件列表中发布什么帖子,都是自己完成的。这是个人的观点,戴着他们的个人帽子,而不是作为喉舌,无论任何公司碰巧签署他们的薪水现在,甚至没有作为ASF的董事。
所有 ASF 参与者都含蓄地拥有多个帽子,尤其是董事会、官员和 PMC 主席。他们有时需要谈论一个政策问题,为了避免显得表达个人意见,他们会说,他们是以特殊身份说话的。然而,大多数时候,这是没有必要的:个人意见工作得很好。
有些人在电子邮件中使用特殊的脚印来申报他们的帽子,另一些人用特殊的引号来附上他们的陈述,另一些人使用他们的 apache.org 电子邮件地址,否则他们会使用他们的个人地址。最后一种方法是不可靠的,因为很多人使用他们的 apache.org 地址所有的时间。
平衡保密性和公众讨论
我们努力在公开场合进行尽可能多的讨论。这鼓励开放,提供公共记录,并刺激更广泛的社区。
但有时需要内部私人邮件列表。未经列表明确许可,不得在公开场合泄露此类列表中的信息。也切勿复制私人和公共列表之间的电子邮件(无 Cc)。此类事件将超出对电子邮件礼仪的正常需求,并严重失信。它可能产生严重后果,造成不必要的混乱和不知情的讨论。
私人名单通常只用于与个人有关的事情(如在新的提交者中投票),以及需要保密的法律事务。
基金会孵化器
为了支持和鼓励新的项目,ASF创建了孵化器,以帮助新的努力加入基金会。
由于精英规则自下而上地在整个ASF中运作,因此,对于这种形式的政府的长期稳定至关重要,项目最初的一组承诺者必须非常了解这种系统的动态,并分享ASF对其项目所期望的合作和开放性的哲学态度。
孵化器负责:
- 筛选有关创建新项目或子项目的建议
- 帮助创建新项目及其运营所需的基础设施
- 监督和指导孵化的社区,以帮助它创造一个开放的,精英的环境
- 评估孵化项目的成熟度,并决定是否将其提升为正式项目/子项目状态,或在失败的情况下将其退休。
孵化器(如板)不根据技术问题进行过滤。基金会尊重并支持各种技术方法。它不怕创新,甚至不怕功能重叠的项目之间的内部对抗。
孵化器根据项目成为成功精英社区的可能性对项目进行筛选。孵化的基本要求是:
- 一个工作代码库 - 多年来,经过几次失败后,基金会开始明白,如果没有一个初始工作代码库,通常很难启动一个社区。这是因为没有工作代码库的开发人员不会很好地认可其优点。此外,在初始设计阶段可能产生的摩擦可能会使社区四分五裂。
- 打算将足够的知识产权分配给ASF-- 这使基金会能够获得不可撤销的和永久的权利,重新分配和处理代码,而不必担心为自己或其用户锁定,同时仍然允许原始作者保持其版权。
- 赞助 ASF 成员或官员 - 此人担任主要导师,为项目指明方向,帮助提供日常详细信息,并与孵化器 PMC 保持联系。
潜伏期通常用于估计项目是否能够增加其提交人的多样性,并在基金会的精英规则下发挥作用。
这似乎相当容易实现,但是,在一个志愿者和高度选择性的环境中,吸引新的承诺者不是自动的。
承诺的多样性很重要,主要有两个原因:
- 它为项目的发展提供了长期的稳定性。事实上,由于所有开发人员都隶属于同一实体,看到他们同时离开项目的机会比与不相关实体关联的个人社区相比要大得多。
- 它提供了更多的技术愿景,这保证了更好地遵守环境和用户的需求,从而更有可能找到软件的实际使用。
其他基础实体
除了孵化器,基金会还有其他几个跨基础项目。例如,ASF 没有办公室或建筑物。它是一个仅存在于 Internet 上的虚拟实体,基础设施团队管理使其能够运行的技术基础结构。
本文来自博客园,作者:赵雯_后端开发工程师,转载请注明原文链接:https://www.cnblogs.com/ybqdren/p/15476386.html

浙公网安备 33010602011771号