发表于2018-10-21 06:27:36 +0800

近日Apache ServiceComb项目成功从Apache孵化器毕业成为Apache顶级项目。为了让更多的人了解Apache软件基金会, 我在相关资料的基础上结合自己的实践写了这篇有关Apache软件基金会的文章,希望能帮助大家进一步了解Apache软件基金会,也欢迎大家给我发邮件与我交流。

Apache软件基金会介绍

Apache软件基金会是一个成立于1999年的非盈利慈善组织,英文名称 Apache Software Foundation,简称 ASF,最早源于开发Apache HTTP服务器的一个爱好者组织“Apache组织”。经过近20年的发展,Apache软件基金会已成为世界上最大的开源基金会,负责监管350多个免费的企业级项目和1.9亿多行的代码,它们作为主干支撑着全球广泛使用的应用程序。Apache软件基金会屡获殊荣的“The Apache Way”精英管理流程让730名独立会员和6800名代码提交者在人工智能/深度学习、大数据、构建管理、云计算,内容、DevOps、物联网/边缘、移动化、服务器、Web框架等方面进行合作和创新。

ASF的使命是:“Provide software for the public good”,为公众利益提供软件。ASF的项目全部是以Apache软件许可协议(ASL)发布的自由开源软件,任何人都可以免费使用,同时ASL也是一个非常宽松且商业友好的协议。根据这个使命,ASF作为一个独立的法律实体,不接受商业赞助,只接受企业和个人的无偿捐赠,并确保这些捐赠用于公益。Apache软件基金会的纯志愿者性质及其社区所遵循的精英管理Meritocracy模式,构成了Apache软件中立、可信任的基石。

因为站在维护公众的利益的视角上, Apache软件基金会非常强调厂商中立,其项目的代码提交权限,以及项目管理委员会权限都是个人形式体现,与参与者所在的公司无关。这样吸引了大量的厂商将其开源项目捐献给基金会,并雇佣相关的开发者参与为Apache软件基金会项目开发。同时商业公司可以依托Apache项目开发商业产品进行盈利。

加入到ASF有什么好处?

开源项目竞争异常激烈,想要取得更多关注和资源,必须和大约2550万开源项目竞争。得益于业界广泛应用的商业友好的Apache软件许可协议(ASL),Apache软件基金会旗下的解决方案获得广泛传播。开源生态中,并没有销售软件的行为,而更多的是表达想法,并利用市场来换取非常有价值的内容。这些内容包括人们所贡献的实践、金钱、才华以及努力。但是,这一切都是以人们能够了解开源项目及其价值为前提的。Apache.org每周流量超过3500万,镜像下载量超过900w,每天都影响50%以上的互联网基础设施。Apache软件基金会举办的社区盛会、马拉松、及全球路演,让每个成员开源项目在世界面前崭露头角。 加入最具影响力的Apache软件基金会,几乎成为开源项目获得更多信任及支持的最佳选择。

不同于闭源、单一公司主导的软件开发模式,在开源项目中,与其他人合作非常重要,即使是竞争对手也会相互合作。”coopetion”(cooperation+competition)一词就是描述在开源世界中,竞争对手通过密切合作来进行创新。Apache软件基金会强调厂商中立,加入Apache软件基金会可以让你与竞争对手一道集中有限的资源进行技术攻关解决技术难题,于此同时大家可以共享技术成果。基于这种模式,竞争对手之间可以在产品的附加价值上体现差异化来进行竞争,例如培训、服务、支持或收费功能。虽然Apache软件基金会不直接参与这样的竞争,但这确实是Apache之道为参与厂商带来的一个好处。

此外,选择合适的开源软件许可证是一个专业性很强的工作,Apache软件基金会除了提供了业界广泛采用的商业友好的Apache软件许可协议,并且在项目孵化过程中,针对项目的第三方依赖的软件选择提供系列的专业指导, 保证旗下项目可以专心为公众提供高质量的软件。

ASF的做事方式

Apache way是所有ASF项目遵循的一组核心行为,旨在保证项目独立性和多样化,从而确保Apache项目持久健康地发展。

社区大于代码 Community Over Code

在ASF一直坚信的好的软件是由强大的社区构建出来的。诚然,作为一个软件社区,代码是至关重要的,没有代码就没有社区存在的理由。但”Community over code”并不仅仅是一个口号,它意味着我们的行事方式,如何看待彼此,如何进行决策,甚至如何编写代码。健康、互相尊重的社区是非常重要的,这不仅让人感到模模糊糊的温暖,而且会带来切切实实的好处。一个健康、多样、包容的社区,可以促进项目不断成长,可持续发展。甚至,有助于用开源技术提供服务的公司获得商业上的成功。

开放的协作方式 Open and Cooperation

ASF作为供应商中立的非营利组织,其项目必须是独立于商业影响进行管理。ASF和所有旗下项目都不支持任何特定供应商。开源软件相比闭源的企业软件,具有费用低廉、高质量、免受厂商锁定的优势。所有的Apache软件基金会的软件,包括项目下载、文档、更新、补丁等,都可以自由的下载和使用,并且完全免费。任何人,可以以任何目使用ASF软件,不受安装或部署限制,只需满足商业友好的Apache许可证2.0要求即可。 Apache软件基金会旗下项目的所有代码都是由志愿者在没有任何报酬的情况下贡献的。志愿者包括全球超过6000多名独立个人或公司员工。社区接受多种形式的贡献,包括代码、补丁、文档。

Apache软件基金会与其他开源基金会之间的一个重要区别是,Apache软件基金会并没有规定其项目的技术方向:每个Apache软件基金会项目都由一个自选的项目活跃贡献者团队监督。项目管理委员会(PMC)指导各自项目的日常运营,包括社区发展和产品发布。

精英管理 Meritocracy

“精英管理”:字面意思是基于绩(Merit)的管理架构。由于没有持久的资源(金钱,精力,时间),这就造成了Apache社区很高兴有新人进来帮助他们,对于一个刚到Apache的新人来说,他需要被大家了解和接受,并成为社区的一份子。通常情况下那些在社区里做出建设性贡献的人,都将会被大家所接受。值得注意的是这种基于绩(Merit)的管理架构运行效果非常好,降低的新人加入的门槛,同时也不会引入摩擦。任何人都可以参与,无论性别,文化,所在地,所在公司,抑或他们的专业水平。一个人可以通过提供补丁或实现新功能开始在项目上进行协作,但绩(merit)不仅仅是通过代码贡献来衡量。帮助用户,改进文档,推广项目和其他非编码活动也非常有价值并且得到认可。精英管理Meritocracy推动社区的发展,并确保任何人都可以参与到项目中来,那些参与项目、关心项目的人才是项目的管理者。这些贡献最终会体现到在项目中授予的代码提交权限,包括成为项目管理委员、成为Apache软件基金会成员。

多样性与共识决策

ASF非常强调多样性原则。 由于大部分开源软件项目都是创新型项目,项目发展并不是一成不变的,多样性保证了开源项目的持续创新, 同样多样性也保证了社区的健康发展。 开源项目会鼓励所有个体或公司都参与进来, 让他们感觉能对项目有所掌控,或者会对项目产生一定影响。这样可以保证意见的多样性、用户的多样性、系统的的多样性。ASF项目通常是要求有三个以上不同公司的人参与开发,以保证项目不会因为其中某个公司的退出而终止。

因为开源项目开发是一个协作开发的过程,必然会存在多样性方向选择,那ASF项目是如何做出共识决策的呢? 一般来说项目管理委员会在决策之前让大家充分的讨论发表意见,很多的分歧都是在这个阶段解决的,最后通过投票的方式来进行决策。大家采用+1,-1,0的方式投票,如果是-1反对的话,需要提供明确的理由, 最终的决定采用懒式的共识法:只要没有反对意见基本上就算达成一致。

Apache 孵化器

学习Apache的工作方式并不总是那么容易,捐赠给ASF的项目往往拥有不同背景。其中一些已经拥有自己的社区和开源合作方法,需要与Apache way有一些磨合。大部分捐赠给ASF的新项目都要进入Apache孵化器进行孵化。想要从孵化器毕业,成为ASF顶级项目,候选项目必须满足ASF成熟度模型,针对代码完整性、版权、许可证、版本发布、共识建立、独立意识等均有严格的要求,确保了毕业的顶级项目的质量。

参考资料

https://jaxenter.com/apache-way-open-source-done-well-140293.html

https://blogs.apache.org/foundation/entry/asf_15_community_over_code

http://www.ocselected.org/posts/opensource/apache_is_open/

http://www.ocselected.org/posts/business_model/marketing-open-source-project/

https://zh.wikipedia.org/wiki/Apache_Incubator