在由51CTO主办的WOT全球技术创新大会2022-北京站上,Apache软件基金会董事吴晟,为我们带来了主题演讲《Apache软件基金会与项目孵化》,为广大听众分享了自己对于Apache软件基金会的理解。现将演讲内容整理如下,希望能对你有所启发。
Apache软件基金会的历史与发展
Apache软件基金会是目前为止全球最大的开源软件基金会,包含300多个顶级项目以及数十个孵化器项目,为全球提供着几十亿甚至上百亿美元市值的开源软件。
HTTP SERVER是Apache的第一个软件,项目的开发者为了能够使项目继续发展而创建了Apache软件基金会,并将HTTP SERVER作为Apache软件基金会的第一个项目提供给了广大开发者。而最初为HTTP SERVER所撰写的自由软件许可证也发展成了大家所熟悉的Apache License2.0,我们平时接触的很多开源软件,其实都来自于Apache基金会,它们互相之间的依赖过程,也是开源本身的一种美丽。
Apache OpenOffice是在全球影响力非常大的一个软件,在国内大家一般更熟悉微软的office,但是OpenOffice其实为全球真正的第三世界国家以及很多没有费用去采购Office的地方提供了和Office几乎一致的功能。并且其完全按照开源的方式,在Apache基金会进行构建、分发和使用。
Apache2.0 License
我们说Apache2.0 License是一个商业友好的License,那它到底给我们什么东西呢?
第一,我们可以基于Apache License,对Apache的软件进行修改、分发、销售,甚至可以换名、换UI去销售。但有些内容是使用Apache2.0License的时候需要保留的。首先,如果软件提供给了对方源代码,不管是商业源代码还是二次分发,这也是一个开源的东西,所有从Apache软件基金会获取的源代码的授权给Apache基金会的hider必须要被保留下来,原始软件上的包名也需要被保留下来。
第二,项目的logo是没有授权的,项目的logo和项目的名字不与商业软件一起被销售出去,只能表示项目基于Apache的某一个项目,但不能随便使用项目的logo。如果要把项目的logo挂在某个商业产品上,logo的版权是需要重新向基金会确认的,说明为什么要使用这样的logo以及为什么要使用这样的名字。这个过程中有一个标准的说法,就是某软件powered by Apache的某个软件,这是一个相对来说比较标准的说法。
最后,在获取源代码或者是二进制的时候,里面有两个License文件,一个是源码根目录下License,一个是获得的二进制文件下的License文件。License以及License文件里面指向的notice以及其它的License文件是需要被拷贝到二次分发版本或二次分发源码里的。
Apache基金会的中立性原则
Apache基金会没有追逐任何商业利益的过程,更多强调的是中立。Apache软件基金会并不会帮助某个项目获取更大的利益,甚至不一定会帮助某个项目获取更大的技术成功或所谓的市场宣传的成功,它更多的是处在一个中立的角色里面。无论是软件的使用方还是开发方,基金会保证这个项目不会被单一厂商、单一的商业诉求而左右。
Apache Way
关于Apache Way,其只是Apache基金会对Apache项目要求和指导的原则性的概要,并不是我们去做开源或者了解任何和开源有关的事情的一个必备选项。其中提到的精英治理、透明、社区共建、Community over code,只是在Apache软件基金会内被推荐的,并不是所有的开源软件都要求Community over code,全世界有大量优秀的开源软件,不要把Apache软件基金会的一些要求扩展为对所有开源项目的要求,甚至你用了Apache2.0的License,也不一定要遵守这样的要求,因为那只是一个License的正文而已。
精英治理
Apache基金会本质上是一个基于个人的基金会组织,它不是一个企业层级制的。Apache软件基金会的项目管理委员会本质上是一个个人化的组织,它相对来说是很离散的,每一个人有自己做决策的权利。在Apache基金会,做了多少事情,就可以获得多少的尊重,大家愿意更多地相信你,你的决策、话语权就会有更大的分量,因为你为这个项目,为基金会做了更多的贡献,这是所谓的精英治理,尊重基金会、尊重项目内精英的位置。
透明
透明即所有的沟通,无论是关于安全,功能,还是迭代路线,要尽可能地保证公开、透明可见,不能是一个私下的决策,所有私下的决策应该要把结论和讨论的过程的重点通过邮件列表的形式在基金会内部进行共享和公开,不应该有项目的技术决策或者是项目方向性的决策在私密环境中决定,不能有事情是不可追溯的。
社区
Apache基金会认为任何一个项目、任何一个个人都有可能因为其它的原因发生变化,只有人持续地参加某个项目、持续地运营迭代,这个社区才会得到比较好的发展。所以,我们会关注项目贡献者的数量,关注社区的大小,但是Apache基金会并不想把这个东西变成一个量化的数据,不是说一个项目有多少贡献者,有多少人参加了这个项目的研发,多少人在用就一定是一个好项目。Apache基金会更多地认为只要有人在持续地参加并且持续地贡献这个项目,这就是一个有活力的项目。很多项目的活跃贡献者都是个位数甚至是五人以下,相对来说比较偏个人英雄主义,Apache基金会更认可的是那些精英为整个行业、整个产业链所做的贡献。
Apache Way的作用
厂商中立性
国内已经有很多项目加入到Apache,但几乎所有的项目背后都是一家公司。从本质上来说,目前即使是已经在Apache软件基金会毕业的国内项目,也并没有非常好地保持中立性。这有主观原因也有客观原因,本质上中国对开源环境并不是特别熟悉,想两家共同来构建一个开源软件,在今天是非常困难的事情,在公司的层面上很难达成一致。所以,我们会发现现在的主要项目都是一家处于绝对的领导位置,其它一些厂商或者是个人、组织在配合。但是在基金会的角度上,为什么这样的项目依然可以毕业成为顶级项目,以及一直视为顶级项目,是因为它有非常好的用户组的多元性,它的用户是多元的,它不是这家企业自娱自乐的,不是针对这家企业销售的对象点对点去进行销售的。所以,这个过程中它依然具有非常好的中立性。只是说作为中国的开源软件,要更多地做好在构建方面的多元性,这一点是相对来说比较长期的一个任务。
多样性
多样性是中立性的背面,保证中立的前提是需要更多的人来参与,更多国家、地区不同的人员、不同的人种、不同的肤色、不同的性别、不同的年龄。我们发现在很多项目中学生是非常主要的贡献来源,他们借助开源软件既可以熟悉工业化,也可以把他们在学校学到的知识运用在这个相对来说比较工业化的软件体系里。
信任和安全性
开放本质上是增加大家信任的手段,商业软件最不让人信任的是它是闭源的,它偷偷在做什么你是不知道的,编译好的代码是很难去读的。安全性,我们会想到开源软件的CVE的问题,每次都可以上大新闻,这首先意味着这类事件很少发生;其次,意味着这个软件得到了极大范围的应用,对于行业的影响力是非常巨大的,比如log4j的问题,几乎影响了所有Java体系内的应用。如果这是一个商业软件,不会有人给你提供如此之多的解决方案来保证你的基础设施的安全性。现在越来越多的基础软件,不管中国、美国、欧洲,任何大的IT环境里,越来越多的基础软件把开源作为标配,因为基于开源的商业绝对不仅仅是卖服务、卖7×24那么简单的事情,后面有非常多的商业逻辑,包括产品包装的逻辑、产品销售的逻辑。
如何在开源社区寻求帮助
Community over code,即社区大于代码。首先,它是人的力量。第二,它是开放讨论的力量。Community在讨论的时候,是很多中国工程师一个痛苦的地方,我们习惯了点对点的沟通,习惯了即时通讯软件,习惯了对方能够用短语去进行沟通。分享一个例子,去年kong的summit,有一个来自欧洲的工程师,他想体系化地介绍Scaling,就给我们提了一个discussion,说想实验ABCD四个功能,现在已经会了两个,还有两个不会。他用英语写的discussion,整个浏览器写了一页,就描述我做了什么。
这更多体现的是态度问题,你免费给我用了,就要给我服务,这是很多目前看到的国外能够构建超大规模社区,但在中国构建社区特别困难的一个点。你也许刚刚在公司因为开源软件的Bug被骂了,你会觉得很冤。但是你把自己的情绪转移给一个开源社区的时候,你会发现comunity不是这么工作的。community可能很粗暴地直接把这个需求关掉了,它认为你没有提供足够信息,或者它给了你一个debug的流程,说请按这个回去debug解错,你得不到任何你想要的帮助。
参与开源软件并不一定是参与开发,作为使用方去参与的时候,要能够知道该怎么样去提问题,怎么样和开源设计师进行沟通,才能得到你要的帮助。
社区人只是志愿者,开源社区、基金会、项目,没有给其中的任何一个人发工资,这就叫志愿者为基础的基金会。所以,这个人本来就在义务工作,他服务的是他认为他需要服务的体系,也就是Apache软件基金会里的那些项目,我们认为项目构建了这个基金会的实体,而这些项目其实才代表开源本身。
创新:Apache孵化器
项目孵化的条件
首先要满足一个最基本的条件,项目要有一个初始化的社区,这些人作为初始化社区的人,要去学习和使用Apache way中包含的所有中立、维护项目、发展项目的这套理论,这是背景条件。第二,能够找到至少三位Apache孵化器的项目管理委员会的成员,也就是Apache软件基金会的会员,需要他们愿意做项目的导师,帮你一起走过将近一年半到两年半的项目孵化过程。如果有他们的帮忙,且项目团队也愿意去发展,项目也确实有人喜欢,你会逐步地去成熟社区,强大项目的社区,最后从Apache孵化器毕业。
项目毕业的条件
首先明确并不是这个项目要多牛才能毕业。能否毕业跟项目的功能成熟度没有任何直接关系,没有人会去评估一个软件是不是成熟。Apache软件基金会评估一个项目是否可以毕业的标准有以下几点:
首先,这个项目要满足所有的开放沟通、合作、共建以及透明讨论的要求。
第二,项目软件里面的依赖是符合Apache软件基金会的要求的,也就是License检查的工作。
第三,项目的社区和用户要初具规模。如果项目有一些最终用户,这些最终用户敢于将项目放上生产环境,他们会去做POC,做压力测试,做各种功能测试,决定项目是否满足生产可用这个标准。如果项目可以在这些公司上线,他们愿意使用开源版本,那么项目就可以被认为具有一定的可用性以及解决了这个领域内的一部分问题。
只要满足这些基本的条件,再进行一些其他的流程性工作,项目就可以从Apache软件基金会毕业,成为一个顶级项目。顶级项目只是开源项目的开始而不是结束,很多人觉得项目毕业了,这个项目就成熟了、高端了,其实不然。毕业是真正构建成熟的开源体系以及项目生态系统的开始,很多项目在毕业之后才会迎来很大的发展,这时大家才会认为项目终于以开放的心态、正式的方式在走开源,而不是一个小团体的方式。
结语
包容性和多样性是Apache反复强调的一个话题,Apache基金会中的成员从最小的几岁、十几岁到退休的60多、70多岁都在基金会里有不同的角色,有他们擅长和想干的事情。这是diversity要强调的事情,在整个Apache软件基金会,有很多人并不是现在还在写代码,有很多人都写过在如今看来非常古老代码的人,可能那个项目已经结束生命周期了,但项目的作者依然在基金会里做着其它的事情。
Apache软件基金会是一个公益组织,不会有收入,所以会有一些筹款、捐赠过程,会有很多全球的企业给基金会捐赠,来完成基金会日常的运作,包括一些基础设施、宣传,当然也包括ApacheCon的一些活动。