“关起门来搞开源,做不了开源世界的Leader”
回顾自己职业布道的这一路,适兕有过心酸,也有欣喜。近两年国内对开源的认知度有所提高,这件事可喜可贺,但开源的含义却远比大家所认识的要更加广泛、深刻。那我们该如何理解开源?本期《开源访谈录》邀请到了《开源之迷》作者适兕来分享他的见解。
本期受访嘉宾:
适兕,本名李建盛,作者,「开源之道」主创,Linux基金会亚太区开源布道者团队主席,Apache Local community Beijing成员CCF开源技术从书编委会委员。曾担任开源社执委会教育工作组成员,X-lab开放实验室开源导师。
著作作品《开源之迷》
随着近两年开源在国内有所起色,大家对开源和开源文化的认知也开始萌芽、成长。在这背后,离不开开源布道师们的“推波助澜”。作为中国“史无前例”的职业开源布道师,适兕(李建盛)在回忆起自己早年的经历时说到:“原来大家都认为我是个怪胎,我是一路被如此误解过来的。”确实,早年间大家对开源感知不深,都认为它很难理解,因为它不像是个能够解决现实问题的事物。
但是随着近两年开源的兴起,适兕欣喜地说到:“从2020年开始大家不把我当另类看了,发现我是可以沟通的,很多人愿意跟我沟通,这令我很欣喜。”但是,尽管情况在好转,开源在中国土壤上还仅仅只是撒下了种子,还需要更多的布道师站出来告诉大家如何参与开源、如何正确的认识开源、如何为开源付费等等一系列的问题。只有这样,中国开源才能茁壮成长,并在将来的某一天开花结果。
那么,我们该如何理解开源这件事?开源布道的目标是什么?中国开源从业者们的现状是怎么样的?我们该如何理解一些开源文化?本期我们邀请到了开源之道主创、《开源之谜》作者--适兕来和我们谈谈他对这些问题的见解。
“开源信徒”的朝圣之路
CSDN:媒体曾给您贴上开源信徒的标签,这个标签是准确的吗?在您心中开源是怎样一种存在?
适兕: 这其实是我给自己贴的标签,它是从英文中“open source believer”翻译而来。2017年的一次演讲,就是我用“开源信徒”的身份去做的。在那个阶段,我特别想要给大家树立一个形象:我是个认真做开源,并且坚定相信这件事情的人。这两年我反而淡化了“believer”这个标签,因为我已经用行动去践行了我的愿景。
我从业开源已经将近20个年头,在我整个职业生涯当中,开源一直占有很重要的地位,去年我开始投入精力写书,在这个过程中我也在不断思考开源是一种什么样的存在。最终我得到的结论是,开源是一个完整的文化世界,这个世界里面的人有自己的思考习惯、行为习惯等等。开源是一种人类切切实实的文化现象,对于我来说,开源以一个文化世界的形式存在着。
CSDN:您作为开源布道师的工作主要涉及哪部分?日常工作节奏是什么,能否给大家分享一下?
适兕: 我目前最大的工程是预估用十年时间完成《开源三部曲》一系列共三本书。想把开源这件事讲清楚其实没那么容易,需要很多的知识积累。
我是个坚持写作的人,也会长期发布与开源相关的文章,内容会涉及到社区、基金会、经济、商业、社会的大环境等等。另外,我也会组织一些小型group发起的活动,比如开源之书共读这个活动大概运行了三年。除了这些,我还会参与一些由别的组织发起的活动,比如说Linux Foundation APAC发起的开源布道者计划,我作为一个chair person参与在其中。它是一个针对企业拥抱开源,或者是出境开源治理相关知识的传播活动。Linux Foundation 下还有一个项目叫open security foundation,总的来说我今年会把这两件事情做好。同时还有Apache local community,我也会在这个组织下面发起活动。
其实开源布道这件事就是通过各种媒介输出如写文章、演讲、参与会议。我一年大概有二三十场演讲以及各种大大小小的会议,以上是我在日常会去做的事。如果哪天我能够安安心心地回去写程序,我的布道使命才算是完成了。
CSDN:您的开源三部曲之一《开源之谜》在近期已经发布,可以和大家分享一下创作这本书的心路历程吗?
适兕: 其实写书这个事情花了我好长时间去酝酿。从2015年转行做布道师,我就开始不停写作。这是一个在二维世界里去探索三维的过程,我在黑暗中摸索了大概三四年的时间,一直想找一根儿线索把开源这个事情串联起来,但是现在看来这根本是个误区。19年下半年,有个技术类的译者一语点透了我:你要不要尝试一下好多根儿线索?我突然就想明白,开源,它应该是个网。
我可以从法律的角度去看,或者是从普通人、软件工程的人、技术员的角度去看,或是从商业、社会的角度去看开源,把它当成一个文化世界来描绘。这样一来,开源世界突然就清晰地呈现在了我眼前。我试图呈现的是一个静止的开源世界,假设我们的时间停留在这一刻,你去观察到的开源是什么样子?这个创作方法我觉得是个点睛之笔。
开源贡献者的生存现状难不难?
CSDN:前一阵在开源圈内爆出了一个热点事件,知名开源项目Faker.js的作者Marak因为没有得到与自己贡献相匹配的回报而"删库跑路"。对于这个问题您怎么看?
适兕: 我对Marak这个小伙子的做法保持谴责态度,我认为不管是开源还是闭源,作为一个良善的现代法理社会公民,不应该做出如此极端的事情。
但与此同时,我也会反思自己。作为开源布道师,我的职责之一就是要保证这些从事开源的人有正确的道德、法律、文化观念。我认为从分配的角度上讲,Faker.js这个项目已经在很多场合下为整个社会运作产生一定贡献,但在现有的分配机制下Marak得不到相应的酬劳,这是有问题的,因此我倡导开源用户为这个项目付费。从经济学原理讲增加付费可以增加供给,这个道理大家都明白,想要保证为客户提供服务的这些系统可靠、可控,就应该为这些开源作者提供基本的生活保障,让他们能没有顾虑地做开源。这也是我作为布道师的作用之一。
CSDN:您曾专门写文回答“适兕是如何生存的?”当前开源圈内的普遍生存状态是怎样的?
适兕:我做布道这件事,自认为是很有意义的,因为开拓开源市场需要这样的人。我从2018年开始做自由职业者,在这种情况下就是勉强生存。但是近年来开源发展越来越好,随之而来出现了各种转机,包括资本对开源的青睐、大公司对开源的认可、开发者以及如CSDN的技术媒体对开源的推动和认可。现在即使你从事开源中比如布道、communitymanager、运营,收入都不会很差,至少不比做闭源差。我身边很多做开源的同事现在都在一线城市买房了。
做开源的工程师有个特点,他们自身的素质和自驱力非常强,会主动寻找需要解决的问题。我还没见到做开源的同事抱怨35岁危机,他们常常保持头脑开放,适应这个技术迅速发展、快速变化的时代。当我们回顾技术变革的历程,你会发现编程语言、操作系统、架构、数据库等等这些技术每隔五年或十年都会发生变化,你之前所学的知识都没用了。但如果你在开源的世界里,每天都在应对新的问题,就能不断地学习并保持一个良好的状态和竞争力。总的来说,开源世界的小伙伴们目前生活得非常好。
有限的认知不足以预知无限的未来,enjoy开源就好!
CSDN:对于想通过参与开源来提升个人技术的开发者您有什么建议或经验可以分享?
适兕: 对于这个问题,我只能给刚参加工作,或是还在学生阶段的一些年轻开发者提供一条可行的路径。由于开源的开放性,在过去20年中,年轻人在学习技术时接触到的技术已经被开源技术所占据,大家都在学习例如Linux、C语言、Python、Java等一些开源技术。软件是个实践性较强的专业,learning by doing,在这个时候开源项目就体现出它的优势。开源不设门槛,掌握了这些技术之后,你可以参与到开源community中去,提交一些测试中遇到的问题,或是在社区里解答别人的问题,可以事半功倍地自我提升。在社区中,你还可以看到顶级的工程师写的代码,甚至可以向他们求助或与他们沟通。
CSDN:我们如何判断一个开源项目是否有前景,是否值得关注?
适兕: 这个问题我可能无法给出一个确切的答案,就像是我们人生中很多选择一样,我们不知道结果,只知道我们做这件事情的时候是否快乐。开源是一项工程,当我们回顾历史,没有人在最初就知道这个项目能否成功,人的认知是有局限的。当然,我们可以尽可能搜集更多的信息来了解这个项目,或是从一个宏观的社会环境下去猜测这个项目有没有前途。
举个例子,Ceph是个分布式存储系统,它试图统治块存储和文件存储。这个项目在2013年云计算和分布式开始流行的时候突然被很多人知道,但在这之前的七到八年中,是作者一直在默默无闻的坚持维护,后来它被红帽收购、捐赠给Linux基金会并以基金会的方式运作。还有很多类似的项目,虽然我们今天看起来很火,但在当年并不是这样。所以,我们没有办法预见一个开源项目的前景。
我能给到的建议是在你想要参与一个项目时,要考虑以下几点:你认为这件事能否满足你当下的需求?你能否enjoy这个过程?你能否在这个community中获得归属感,认不认同它的文化?我认为这几个因素是很关键的。
CSDN:对于开源项目来说,它与闭源最大的区别就是工程师们可以在开源项目的源代码中做修改,然后自己进行配置、使用。这是否代表着参与或使用开源是有门槛的?
适兕: 这个问题我们需要细化场景,不能笼统地说。首先开源虽然允许用户自己修改,但是这个修改确实是有门槛的,需要你具有一定的技术实力。但是开源的参与不设置人为门槛,仅仅是技术门槛。在软件行业中想要掌握基本的计算机原理、知识及编程语言,并形成对某些系统的独特理解,大概需要四到五年的时间。任何一项技术、行业都有知识、技能的门槛,单把这种门槛归结为开源所拥有的不太恰当。开源欢迎任何人参与,但是需要你掌握一些知识和技能。总的来说,开源没有门槛,只对技能和知识储备有要求。
开源之“术”与“道”
CSDN:开源中有很多非常先进的理念,比如开源治理、上游优先。可以通俗的解释下它们的含义吗?
适兕:如果从经济学角度来理解开源治理,可以借用一个理论“科斯定理”。它解释了我们为什么会去组织一个企业,究其原因是成本问题,企业的内部的成本是小于它与外部沟通的成本。所谓的开源治理,其实一个人的时候用不上,但是遇到操作系统、数据库这种需要几千个人完成的大型工程就非常有必要了,比如Linux kernel,最多的时候有3000个人来提交一个版本。如何让几千人一条心地做一件事,而且没有利益纠纷?开源界摸索出了开源治理的概念,它是从比较成功的开源项目总结而来。当我们总结一个项目所有跟人相关的因素,包括人之间怎么沟通、谁有合并的权限、谁有review别人的权限等等,就是开源治理。后来的项目可以选择这些开源治理的方式,比如community over code,去指导自己的项目。
开源有个很好的特性,你随时可以退出,并且永远支持fork。要理解Upstream First我们首先要了解什么是上游。比如Linux发起的项目,Linux就是上游。假如我从Git上fork一个Linux的项目,我得到的版本跟Linux仓库里的代码是一样的,我可以对我fork的代码自己进行修改。但如果任何人都可以fork,人难免会因为意见不同而产生各种支流,最经典的就是各种Linux发行版。Linux发行版都是最初的Linux的分支。这个时候,你要不要让自己的代码跟上游保持一致,其实是个成本的问题。最可怕的是当你跟上游产生不一致时,随着时间的增长,你会发现维护自己版本的成本越来越高,并且跟上游比,功能越来越差。我之所以倡导Upstream First,是因为我发现很多公司或个人,甚至专门组建了一个团队去做这种修修补补没有创新的事情,这很让人痛心。所以说Upstream First其实是最合理,也是最能让开源快速发展一种理念。
CSDN:您之前写过一篇关于 CHAOSS 开源指标解析的文章,文中提到在没有搞清楚性质之前,不要迷信数据。所以您认为我们应该以一个什么样的态度去看这些数据?您觉得什么样的项目/社区是健康的?是否有通用的标准?
适兕: 从认知观的角度来看,我们现在所生存的世界是到处都是度量。在物理空间,我们在时间、空间、温度等维度都发明了各自的度量单位。对于认识我们所处的社会,我们会用GDP、GNI去衡量一个国家的发达程度。总的来说,衡量对于人类认识任何事物是非常重要的,从认识物理世界到认识我们所处的这个社会。但是GDP等等这些度量到底准不准确?和人们的幸福指数有直接关系吗?有,但不是因果关系。
回到开源圈中,CHAOSS项目是一个非常好的探索。如何去衡量一个软件项目?我们刚才讨论过,如何判断一个项目是否有前景。一个不开源的软件项目,有哪些指标来衡量它?你可能会考虑这个项目花了多少钱、人员能产生出多少代码等等这些指标。
那么开源项目需要看那些方面?
看Star数或者Fork数等等这些指标,它代表这个项目被关注过。
看软件本身的问题,比如注释写的怎么样、测试文档写得好不好、测试用例写的全不全、代码review的过程严不严谨。
看关于community的指标,这些指标是很难定量的。对于无法定量的事件可以给它定性,比如你觉得一个文化是好还是坏。
CHAOSS也会做一些定性的问题。
比如看参与这个项目的contributor的人气如何、他的network是怎样的、是名校还是普通大学毕业的。
看一个人的社交资本,或者是social reputation,这些东西都是无法量化的,它只能是定性的。
在CHAOSS这个项目的指标中,有定量的的指标,同时也有一些定性的。定性的事件是从个人立场出发的,每个人的看法可能都不同。 总结下来,我观点是对于我们人来说,量化是非常重要的,但是它的难度很高。在定性这方面确实会引起很多争论,确实也是比较难的一件事情,我赞同尽可能把它用数学的方式统计出来,给后来者提供方向,让他们少走一些弯路。
CSDN:Apache这个组织作为开源行业的标杆,其内部有一句非常流行的话叫做Community over Code。从您的角度来看,随着开源历史的发展,Apache为什么越来越推崇这句话?我们该如何理解它?
适兕: Community over Code中的“Community”这个词,我建议将它理解为“共同体”。这个翻译是从科学共同体的概念继承下来的,含义为从事开源的这些人,他们不是乌合之众,是接受过多年科学教育或是计算机相关技能训练的人。他们基于互联网发展出一些文化规则,以支持他们协作推进一个项目。
Community over Code是Apache之道中非常重要的理念,甚至不亚于“没有在邮件里发生的事就没有发生”这条规则。为什么呢?我们以Apache最早期的项目Apache httpd为例。在研发这个项目的时候,用户有很多其它选择,比如Netscape、Web服务器。但 Apache这些早期的创始人对于代码的理解是,某个功能的实现有很多种方式。他们更加信仰以自己认可的方式去做这件事情,并且认为过程比具体的成果更加重要。Apache Foundation下面的组织理念贯彻了对democracy和meritocracy的实践。其组织理念不注重超强的个人能力,甚至在淡化某些与个人能力相关的事。它提倡共同体大于代码,但这并不意味着Apache不注重代码的质量,它只是提倡以文明的方式去讨论。软件代码的实现可以有很多种方法,但是这样的共同体更难得。
关起门来搞开源,做不了开源世界的Leader
CSDN:回顾2021年的开源发展,哪些事让您印象特别深刻?
适兕: 这一年我大部分时间在创作,因为疫情,做活动的频率也比较低。我所遇到的挑战其实是,整个全球的逆全球化的思潮,很让人担忧。“关起门来搞开源”对我国开源的发展挑战非常大,尤其是当我们国内软件产业发展程度不是很高的情况下,相当危险。当你阻断了与这个世界交流的通道,开源的全球发展就会将我们甩在身后,这是很可怕的事情。中国作为一个世界大国,一个文化强国,我们拥有非常勤奋的人民,应该去担起整个人类命运共同体该有的担当,去把具有划时代意义的开源基础设施共同建设起来,而不只是作为一个consumer。在开源的世界里,我们如果想要站起来、建立影响力、做领导者,就必须去付出、去做KT标准,承担起一个大国的责任。这是2021年让我比较担忧和难过的事情。
2021年也有一些让人欣喜的事情。这一年,开源被写进了十四五规划,突然有很多人知道了开源这两个字。虽然开源在社会中起着很大的作用,但即使是我们行内的人,也把它当怪胎,或者是当亚文化去看待。当我们现在去关注开源,你会发现所有企业的业务80~90%都是用的开源软件、开源项目来做的。当这些数字量化的东西展现在世人面前,你会发现,开源原来发挥着如此重要的作用。另一方面,开源在这一年也得到了更加正向的传播。我们国家有非常好的生源,非常优秀的工程师,如果他们能认同开源文化,认同开源思想,愿意去打开自己的头脑去献身给编程、扎根于开源10~20年,这对于我们意义更加重大。
CSDN:您认为这一年的关键词是什么?为什么?
适兕:2021年很魔幻。这一年可能是个转折点,大家对开源的认知从简单的技术上升到了另外一个层次,甚至是以国家的力量去倡导,如果加上文化方法与技术实力,我们超越欧美的开发者、在开源的世界里做leader、成为大国担当的目标是有希望的。我是个爱国情怀很重的人,方法可能也和一些人有所区别,我更倡导打开世界,在Internet上直接用实力影响别人,用技术实力说话,而不是把别人阻挡在门外。我们需要加油,加倍努力把这些已经验证过的开源文化与相应的技术项目结合起来。在五年到十年的技术迭代周期内,去达成我们的目标。但前提条件是,接受别人的挑战,并保持开放。
《开源访谈录》是一档聚焦开源发展的访谈类栏目,每周将邀请1位具代表性及影响力的开源专家,探讨大家广泛关注的开源话题,从不同角度还原开源圈真实面貌。
《新程序员001-004》全面上市,对话世界级大师,报道中国IT行业创新创造