【CSDN 编者按】Apache 软件基金会与Linux基金会作为全球开源的一面旗帜,创立二十余年已深深影响着全球数十亿开发者。随着开源在全球的渗透率逐年加深,引发巨大影响的开源供应链等安全问题也在向开源从业者发起挑战,本文将跟随Apache 创始人之一、OpenSSF 基金会总经理 Brain Behlendorf 的视角,直面这位开源奠基者对开源生态与安全的深度思考。
作者 | 王启隆 责编 | 何苗出品 | 《新程序员》编辑部在开源开发者心中, Apache 与Linux 的意义不言而喻。开源能够发展至今,离不开众多非营利开源软件组织的帮助,而它们便是这些组织中的佼佼者。时至今日,早年间由 Brian Behlendorf 带领程序员们重写开源程序 NCSA HTTPd 而成的 Apache HTTP Server 仍是世界使用第一的网页服务器。这个最初被戏称为“补丁服务器”的存在,成就了 Web 服务器的传奇,也让 Brian Behlendorf 获得了 “Apache之父” 的尊称。
同时,国内开发者耳熟能详的Apache ShardingSphere、Apache SkyWalking、Apache Doris 等也都是 Apache 孵化的顶级开源项目。Apache 的开源文化深深地影响着全球开发者。“Apache Way” 向技术人指明了一条“如何去做开源?怎样做好开源?”的大道。其中“没有在邮件中发生的事就没有发生”这一准则,更是沿袭自 Brian Behlendorf 的一个偶然举措,早年间他为了更好地进行沟通,建立了一个邮件列表,将大家召集在一起,更好地协同工作。
如今的开源已经步入一个全新的阶段,先驱者们已经从拓荒中归来,开始研究更加现实的开源安全问题,“Apache” 创始人之一的 Brian Behlendorf 也加入了OpenSSF 开源安全基金会担任总经理,致力于全球开源生态系统安全方面的建设。
广告Brain Behlendorf,Apache 创始人之一、OpenSSF 基金会总经理
本期《新程序员005》有幸邀请到了这位开源大师展开专访,他不仅向我们分享了许多开源安全领域建设的实践经验和宝贵思考,还吐露了自己最真挚且崇高的开源理想。
以下是 Brian Behlendorf 访谈记录:
“ Apache 之父 ” 的成长之路
《新程序员》:据了解,你的父母在科技领域工作,但你大学却并没有主修计算机,那时候的你对什么更感兴趣?后来又是什么引发了你对计算机编程的兴趣?
Brian:1991 年的时候,我高中毕业,就在同一年,Tim Berners-Lee 推出了世界上第一个网络浏览器和网络服务器,但在那时候还没有多少人知道这件事。当我上高中的时候,我的父母在 IBM 工作并相识,得益于此,我们家里有一台个人电脑。但我的父亲是个 COBOL 程序员,而 COBOL 语言对我来说又索然无味,所以当时并没有打算将编写软件作为未来的工作。
在加州大学伯克利分校上大学期间,一开始我主修的是物理,但后来我在大学里建立了自己的第一个电子邮件账户,并接触到了互联网,慢慢地对计算机科学更感兴趣。也是从那时起,我开始经营一些独立的编程项目,也因此得到了一份协助管理 Unix 机器的实验室工作,对计算机编程行业的工作和运营有了一定了解。后来我对电子音乐产生了浓厚的兴趣,所以在 1992 年建立了一个关于电子音乐的网站,并开始在那里建立一个社区,这也导致我最终没有时间完成本科学位。
《新程序员》:那么你第一次听说 Unix 操作系统时,对它有什么看法?
Brian:我对 Unix 的第一印象是——它是命令行驱动的,这一点让我欣喜若狂。对我来说,输入命令行就像和电脑说话,我可以通过命令行给电脑下达非常精确和具体的要求。命令行甚至比图形用户界面更好操作,因为我不需要打开一个个文件夹,然后试着找到正确的按钮或输入方式。从这个角度来看,Unix 的诞生是鼓舞人心的。
现在回想 1991 年到 1993 年左右的时候,当时的互联网氛围乃至社会文化非常鼓励相互帮助。那是个一切都很完美的时代,你会因收到陌生人的邮件感到兴奋,你会去遐想自己在互联网接触的每一个人都是友善且风趣的,你会希望让更多的人能接触到互联网。这种文化甚至早于开源软件诞生之前,但我认为它至今仍在被发扬光大,现在许多开源社区都是富有生产力和创造性的。
《新程序员》:还记得自己写的第一个比较有趣的程序是什么吗?你早期的编程风格是否有延续到如今的工作中?
Brian:大约在八岁的时候,我读过一本关于如何用 BASIC 为 TRS-80 计算机编写程序的书,也曾用这本书编写过一些简单的游戏和程序。至于我写的第一个真正的程序,那得回溯到我上小学四年级的时候。当时我需要每两周为班里安排一次随机座位表,于是我写了一个程序,可以随机分配座位且把结果打印出来。有意思的是,如果我被随机分配坐在不喜欢的人旁边,我就会让它再运行一遍,就可以“随机”坐在班上那些很酷的孩子旁边——所以这个座位表并不是完全“随机”的。老师不了解原理,所以也没能发现我的小动作。
但在那之后,我职业生涯的大部分时间里,都不经常编程了。还记得在建立Apache Web 服务器的早期我编写了不少程序,在 Apache 的第一个赞助网站上线时也写了很多东西。我现在仍然会维护自己的邮件服务器,但我从不以一个伟大的软件开发者自居,我并不伟大。
《新程序员》:1993 年告别校园后,你曾与伙伴们创立了 Organic.Inc,但当时的网络服务器软件无法处理公司需求,因此你尝试了修补开源代码,那是你第一次接触开源吗?你是如何与开源结缘的?
Brian:不,并不是那时候。我第一次接触开源应该是 1991 年第一次到伯克利的时候,我当时开始探索早期的互联网是什么样子,我看到互联网上有很多软件可以下载,可以轻而易举地下载每一个软件并且在自己的电脑上运行。从那时起我就有了一个想法:软件并不应该是让一两个人去编写,并且卖 30 多美元一份的东西;相反,软件应该是成百上千的人把小段代码拼在一起编写,将所有的东西都集中在一起的存在,这可能就是我开源思想的雏形。这段经历发生在 1991年,那是我第一次使用你们如今所认为的“开源软件”,但直到 1998 年,它才被称为开源,开源这个术语是在那之后发明的。
安全的开源开发需要公开的“配料表”
《新程序员》:自去年 12 月 Log4j2 曝
Brian:开源安全是政府和企业需要共同努力的事情。我记得当时他们在 Log4j事件之后发布了相当多的报告,但在一份大约 3 周前发布的报告里表示:是很多不同的情况导致了这场危机,因此希望像 OpenSSF 这样的开源安全基金会越来越多。OpenSSF 被那份政府报告引用了 29 次。在我看来,至少在过去几年里,国家安全委员会不再会在修复漏洞的问题上对我们发表意见,所以基金会能取得如今这样的成果和地位,不仅是非常令人满意的,也是非常令人生畏的。开源安全是摆在我们面前的一项艰巨的任务,社会依赖它来运转,就像依赖桥梁、高速公路、电网或社会的其他部分一样,我们的生活不能没有它。
《新程序员》:2021 年 10 月,Linux 基金会宣布筹集 1000 万美元新投资,以扩展和支持开源安全基金会( OpenSSF ),保护开源供应链。为什么开源供应链如此重要?它在开源的发展中占据什么位置?
Brian:供应链代表着一切,可以说我们所生活的世界就是由供应链组成的,现在我的电脑旁边能有一只鼠标存在,都是因为供应链的存在。而软件自然也不例外,很少有哪个软件是由一个人写成,然后直接把它发送给终端用户的,因为开源软件就是离不开供应链的存在。
正因如此,供应链现在也是被主要攻击的对象。十年前我们肯定想不到,可能会有人在我们的包数据库里偷偷安插了一个坏包,更想不到某个 JavaScript 模块的作者可能会把账户卖给某个黑客,而这个黑客可能会在我们的网站上设置后门……我们的事业是在一个彼此之间高度信任的时代建立起来的,当时我们不必担心这些类型的攻击。现在我们已经意识到了,要帮助开源开发者做出更加安全的决定。
《新程序员》:你认为开源软件的安全性目前面临的最大挑战是什么?
Brian:现在的开发者经常忽视一个问题,那就是平台的选择。比如,当我需要添加一个功能时,一般会在现有库的基础上进行构建,构建的过程中就需要平台的帮助,但我们从来都是默认了一个平台并且依赖它,没有去思考深层的安全性问题。你可以认为这是因为大部分程序员都很“高效”,但其实也是一种“懒惰”。所有人在开发过程中都给予 GitHub 这样的中心组织很大的信任,甚至从未质疑它们。
当然,我希望 GitHub 永远不会被黑客入侵,一旦 GitHub 被入侵了,很多人都会遭殃。到目前为止,GitHub 做得很好,但我们真的应该把所有的信任都交给一个组织吗?
我也不清楚这个问题的答案。我们在 OpenSSF 中有一个名为 Sigstore 的项目,它使用了非常轻量的 Let’s Encrypt 方式来用密钥对研发流程中的制品进行签名,以便将其嵌入到每个人用来进行构建和发布的工具中。这就像我们生活中随处可见的配料表:如果你拿起一瓶番茄酱,那么制造商必须告诉你瓶子里装的是什么,以免有的人过敏。总之,开发者现在还需要更好的软件工具来促进开源安全。
开源开发也需要这样的“配料表”,需要透明公开的协作流程。很多企业通常不知道他们运行的是什么软件,Log4j 也是因此出现了问题。开发者们在部署软件时需要理解目标对象的构建,需要了解整套工作的运行流程。我们要尽量避免那些只有一个开
跨越语言障碍,OpenSSF 助推中国开源安全建设
《新程序员》:很多问题到了中国可能又会有所不同,从而衍生新的问题。你对中国开源的现状有哪些看法吗?
Brian:开源安全是每个国家都存在的问题。在这一点上,大家的利益其实是一致的,毕竟 Log4j 的漏洞就是由阿里巴巴(阿里云)的研究人员发现的。我们需要一起努力,而这也是我参与本次访谈的原因之一,我真的希望看到中国社区、企业、开发商、甚至政策制定者在这方面真正统一起来。
当然,我也很清楚中国开发者现在面临的一些问题,最主要的肯定是语言的问题。如果你的母语不是英语,可能与中国以外的开发人员合作会是一个挑战,由于不知道如何提出正确的问题而阻碍合作和发展。Linux 正在与 OpenSSF 合作,我们试图创建一个中文子社区,专注于服务和帮助中国开发者采用这些先进技术,同时也让中国开发者帮助我们改进技术,最终在中国开设我先前提到的Sigstore 项目。这些都应该本地化到中国,让中国社区能够更广泛地学习和使用。
《新程序员》:要想降低开源软件的安全风险,安全意识也很重要,OpenSSF 是如何帮助开源使用者有效提升安全意识的?
Brian:我们在 OpenSSF 上发布了相当多的内容,不仅能帮助开发者学习如何使用工具,还能帮助他们编写更安全的代码。事实上,我们已经在培训网站上发布了一门关于 Linux 安全基础培训的课程,现在正在将其翻译成中文,叫做安全软件开发基础课程。课程时长大约有 20 小时,虽然不是很长,但它可以教你如何避免一些问题,比如不要解析不受信任的用户,还有怎么提交正确的输入格式字符串——这个问题曾导致了 Log4j 的 bug 。我们相信,如果有更多的开发人员参加这个课程并进行认证,就能大大降低代码进入软件供应链时产生的风险。
总而言之,我鼓励开发人员前往 OpenSSF 的网站上学习这门课程,特别是在我们将其本地化为中文之后。我们还发布了一份指南,上面介绍了开源项目可以做的一系列事情,以提高安全性。OpenSSF 开放了许多资源来帮助开发人员,这些工作并不只是为了让他们的代码更安全,更重要的是培养一种不同的思维方式和一种不同的做事方式。
《新程序员》:大部分中国开发者都比较务实,他们很关心开源软件的商业化和开放。你对此有什么想法?
Brian:如果每个人都选择把代码卖出去,那么像谷歌、亚马逊甚至百度和腾讯这样的公司都不可能发展壮大。我们确实应该具体思考如何将开源代码商业化,但肯定不是通过出售开源代码本身,而是围绕它做其他事情;比方说,我们可以使用开源代码去构建一个很棒的网站,或者是移动应用程序、移动应用程序的后端还有启动一些引人注目的新服务等等。不要总去想怎么把开源代码卖出去,你应该思考自己如何利用这些开源代码在世界上创造更多的价值,人们自然而然会付钱给你。
《新程序员》:您曾提到过可持续开源的软件理念。中国的开发者该如何从这一理念中获益呢?
Brian:可持续开源理念不一定和软件有关,首先你得认识到,大多数人写开源代码并不是出于慈善,他们选择开源并非出于无私,而是为了免费地编写代码。比方说,如果你是为了建立一个网络服务或是一个支付平台而开展项目,那么在这个过程中每当你修复了一个 bug,或者添加了一个特性,或者写了一些新东西——都是需要付费的。因此,一个运行良好且持久稳定的开源项目是人们进行活动的主要驱动力,我认为这是企业需要考虑的关键问题。
对于中国的开发者,我还想说的是,我们就在这里,我们想让你们更强大,我们也想让你们互相帮助,从而达成全球协作。我认为有许多开发者已经投入了大量精力来解决这个问题。“传播”是一件很重要的事情,人类的发展便起源于传播,我们将会提供工具让所有中国企业——甚至全球行业,共享这项开源事业的结果。
Apache Way 是更安全的协作方式
《新程序员》:作为 Apache 软件基金会的创始成员,你对著名的“ Apache Way ”的理解是什么?这种开源的运作方式如何保障开源软件的安全?
Brian:其实 Apache Way 一直没什么确切的定义,它的核心有两点:电子邮件和数字交流。Apache Way 是一种完全包容、开放、透明且基于共识的工作方式,让我们打个比方:如果一个项目、一个事情没有发生在我们公众的邮件列表里,那么你可以先在私下进行它,但是你必须把它带回到公众面前,进行一次群体的交流,然后才能继续项目的推进。Apache Way 的主题是透明、协作,我们要尽量避免出现“一个人负责整个软件”这种情况,因为如果某个项目唯一的负责人哪天离开了项目,就没有任何人知道怎么继续维护了。
正如我前面所说,你要确保在开源项目中,总是有很多人对每一行代码负责,甚至是对整个项目进行负责。这就是 Apache Way,我认为它其实是一种生活准则。我们通过这种方式一起使用简单的工具来协调我们的活动,并且对事物的编写方式有共同的期望,这样我们才能够高效生产,编写出最好的软件,从而在代码中建立公众对我们的信任。
《新程序员》:那关于“Apache Way”还有你们的工作方式,你有哪些趣闻可以分享吗?
Brian:我很喜欢用电子邮件来进行工作交流,我喜欢这种以异步方式在线协作的感觉,电子邮件也包容了我们时间上的差异、文化差异还有语言差异等等。至于趣闻,其实我们的 Apache Web 服务器项目就是一个例子,我们的项目里有一个叫 Alexico 的人,他在服务器项目建立后的3年里,大部分时间都对我们提供了不少实用的帮助。他不仅是帮忙写了一些代码,他还会帮助项目里的其他人写代码,并且协助审查他人的代码,甚至还帮我们回答用户的问题。不得不说,他真的是一个优秀的社区构建者。
但是那时候还不流行视频会议,我们也没有很多面对面的机会,所以我没有见过他本人,所以我唯一知道的就是这位 Alexico 的电子邮件地址。直到有一天,他给 Apache Web 服务器的开发者邮件列表发了一条消息,说:“嗨,伙计们,我有一些消息要告诉你们。我以后可能没法给项目带来那么多贡献,也没法经常上线了;因为我今年秋天就要上大学了。”
他作为一名高中生一直在参与这个开源项目,与所有其他专业软件开发人员进行交流!当时我们项目的所有人,都为他的勤奋、智慧以及纯正的开源精神而震惊不已,而我们后来在许多不同国家的人们之间也看到了这份精神。所以我认为,Apache Way 可以帮助那些英语不是母语的人使用电子邮件进行交流,这比使用视频或电话或其他方式要好得多,因为使用电子邮件能保证信息被更准确地传达。
开源生而自由,全球协作是最终理想
《新程序员》:在开源领域,Richard·Stallman(自由软件运动的精神领袖)的自由价值理念是永远绕不开的一大思想。您认为和过去相比,如今的“自由软件”和“开源软件”有什么不同?
Brian:我很尊重 Richard·M·Stallman,我们的社区流行过这么一种说法:如果Richard·M·Stallman不曾存在,我们就必须创造一个Richard·M·Stallman。因为让他代表各种观点是非常有用的。相比之下,社区中的其他人看起来就像温和派。我非常了解共享源代码的实际好处,我认为这个权利是非常重要的,而 Richard·M·Stallman 甚至认为这是一种人权。我相信我们已经能够让行业的很多人转向开源软件事业。要知道,当今世界的手机、汽车或网站上所使用的 90% 软件都是开源软件。
当然,我并没有从道德或人权的角度来强调软件应该是开源的。正是因为团队协作的开源项目能够更有效地构建更好的软件,所以我才认为自由软件和敏捷开发可以与开源软件共存,我并不认为它们是对立的或不一致的。开源软件运动所讨论的一直都是“我们该如何帮助开发者?”“我们该如何帮助企业编写更好的代码?”“我们要如何避免回到以前 Mac 和 PC 的平台战争当中?”其实我认为关于这些问题的争论早已结束了,开源在很大程度上获得了胜利。既然我们赢了,接下来就该思考要如何用开源发展出自己想要的社会和未来。我的理想便是全球协作。
《新程序员》:最后,你有哪些话想送给中国开发者?你如何评估开源在全球和中国的发展前景?
Brian:我是个理想主义者。我想要的未来是,我们能够在共同的项目上进行全球合作,我们能在未来找到一种不受语言、时区、政治等障碍影响的方法并共同协作,但我很担心这是否能够实现。实际上,我认为现今没有足够的人写开源代码来满足市场的需求。我希望未来就像 Apache 的早期一样,所有人可以一起工作,彼此不关心出身、年龄或背景。这就是我想要的开源代码未来。我也希望政府能更多地认识到,开源软件在建设我们想要的社会中发挥的关键作用,开源将会建设一个非常数字化的社会。所有企业(当然主要是大型企业)和个人,都需要认识并投资开源代码,认识到开源代码会给社会带来哪些积极的结果。这些都是我的希望,我担心的是我们根本无法接近这个目标,我担心我们会朝着相反的方向前进,但我无法预测我们在未来是否会走向更乐观的方向,所以我所能做的就是谈论目前乐观的方向。
—