在各大厂纷纷拥抱开源的当口,“开源代码面临可持续发展危机”的言论也甚嚣尘上。早期,技术爱好者们“用爱发电”,“他们知道在出问题前,没人会注意到他们,没人会重视他们”。但遗憾的是,很长一段时间里,很多从开源中谋取暴利的人,却“没有为开源社区做出过贡献,他们将开源当成礼物直接拿走”,留给开源贡献者无限的阵痛——从开发者到经济学家们不禁发问,开源,还能走多远?本文剖析了以开源软件为基础开发的复杂业务,讨论了建立在免费开源开发者之上的互联网能否可持续发展的问题。
作者
DanielOberhaus译者
弯月责编
仲培艺出品
CSDN
以下为译文:
StephenHenson审核通过了一个互联网漏洞的时候,正值年跨年夜的午夜。
这位43岁的英国软件开发人员接受了有关OpenSSL代码的一处很小的改动,OpenSSL是一种开源加密协议,其可以保护网络上的很多内容。OpenSSL是开源的,任何人都可以在线查看其代码,并自愿贡献项目代码,但这并不意味着真的有很多人做出了贡献。
Henson在OpenSSL上花了十多年的心血,OpenSSL有一个很小的团队,加上其他核心成员也从未超过3-4个开发人员。到年底,他与其他核心开发人员需要负责维护一个包含大约50万行代码的代码库,其中绝大部分是由Henson自己编写或批准的,这个责担子可不轻。OpenSSL保护了大量的Web服务器(互联网中三分之二的网站都用到了这些服务器),以及电子邮件服务器、聊天服务器、VPN以及军事、政府和金融机构的网络基础设施。
12月的那个晚上,Henson批准的代码变更是由一位名叫RobinSeggelmann的德国开发人员提交的,他帮忙编写了OpenSSL的“心跳(heartbeat)”标准。在这项代码变更被批准之前,Henson和Seggelmann已经在这段代码上工作了数周时间,但仍未能发现这个bug:允许攻击者拦截传递给由OpenSSL保护的任何站点的信息。
后来,Seggelmann承认了代码中的bug——这就是著名的“心脏出血”(Heartbleed)漏洞,虽然这是一个“非常微不足道”的小改动,却成为了历史上最危险的软件漏洞之一。对于像Henson这样经验丰富的人来说,应该很容易发现并修复这个bug——但是每个人都会犯错误。实际上,在Google的一位程序员后来于年发现并修复了这个bug之前,它已经在OpenSSL代码中存活了将近两年半的时间。尽管如此,如今这个漏洞依然存活于数十万台设备上,其中许多设备不太可能得到修复。
OpenSSL只是成千上万开源软件程序中的一个,数百万人每天都依赖这些程序来浏览网页或观看视频,实时翻译或在智能手机上使用语音识别功能等。这些项目都是开源的,这意味着任何人都可以免费查看或使用这些代码。
自从开源创建以来,开源开发的最大卖点之一就是软件开发人员EricRaymond提出的“林纳斯法则(Linus’sLaw)”,还有人认为那么多的人查看这些代码,所以“所有的错误都会浮出水面”。因此,在心脏出血bug被修复后,每个人心中最大的疑问是:这么关键的一个漏洞为何会被忽视如此之久,而其他开源项目的代码中是否也存在类似的漏洞。
注:林纳斯法则即“足够多的眼睛,就可让所有问题浮现”。
正如OpenSSL基金会的前任首席执行官SteveMarquess在博客文章中指出的那样,心脏出血可以归因为开发人员的筋疲力竭以及资金的匮乏。据Marquess所言,该基金会的捐款预算不到2千美元,每年签署的合同收入不足万美元,且无法承担更多合同,因为其开发人员(其中许多人有全职工作和家庭)根本没有时间。
Marquess还表示,实际上Henson是唯一一个全职工作的OpenSSL开发人员,而且以他的技术实力如果换作其他地方他所得到的报酬远不止如此微薄。“这些人并不是为了钱而在OpenSSL工作,他们也不是为了出名。他们这么做只是出于对技术的自豪感以及对他们所信仰事物的责任……他们知道在出问题前,没人会注意到他们,没人会重视他们。”
开源恶疾:把开源当成天赐礼物“抢”走的人
很显然,全球互联网的安全性仅靠一位拿着微薄薪资的程序员呕心沥血的无私奉献来支撑着,这本身就是很大的问题,那么谁应该担负起责任呢?Marquess认为应该由“广泛使用OpenSSL,并将其视为理所当然的商业公司和政府”站出来。
Marquess在文中写道:“我说的就是你,世界0强公司,那些靠销售包含了OpenSSL产品赚取利润的人;那些弄不清楚如何使用OpenSSL就来缠着我们要免费咨询服务的人;那些从来没有为开源社区做出过贡献,却把OpenSSL当成礼物拿走的人。”
Marquess和Henson都于年离开了OpenSSL,但在临走前他们还为这个项目做好了近期的筹划。在他们离开后,OpenSSL的核心开发团队已经发展到了7人,该项目的资金可以至少撑到年。这主要得益于Linux核心基础设施计划的大量资助——该计划致力于向对互联网安全至关重要的开源项目分配资源。该核心基础设施计划本身的资金来自亚马逊、Google、IBM、微软、Facebook和英特尔等主要科技公司的捐款。这笔资助意味着OpenSSL是安全的——只要这些公司继续捐赠。
从表面上看,如今的开源软件社区非常繁荣。各家公司和政府正在以20年前难以想象的速度采用开源软件,而新一代程序员正在开发软件,并且可以随意使用。然而,深入观察你会发现问题已经开始显现。
开源的优势地位给流行软件的维护者带来了沉重的负担,如今他们需要处理比以往更多的bug报告、功能请求、代码审查和代码提交。与此同时,开源开发人员还必须处理不断涌入的不熟悉社区规范的企业用户生产和使用开源软件。这导致开发人员疲于应付,并对依赖免费劳力来生产软件的公司产生了不满情绪,这些公司利用开源软件打包成产品后卖给消费者以获取巨额利润。
从这个角度来看,心脏出血并不是唯一一个开发人员精疲力竭和资金匮乏的例子,而是多年以来在开源软件社区内逐渐恶化的系统性疾病的产物。确定这种疾病的症状和原因很容易,但想找到治疗方法却很难。
许多开发人员与Marquess一样认为开源发展的主要问题在于财务,如果大型科技公司能够为他们所依赖的开源软件项目贡献更多资源,那么这些问题就可以得到解决。从理论上讲,这可以让开发人员在开源项目上投入更多时间,并激励其他程序员为开源项目做贡献。
然而,仅靠在开源社区投入资金还远远不够。关于如何分配增加的资金以及如何回报提供资金的组织,这本身就是问题。事实上,资本的涌入有可能破坏社区驱动的基础,而近半个世纪这个基础一直支撑着开源的发展。
免费提供啤酒:开源软件的经济基础
为了理解当前关于开源软件经济学的争论,我们有必要回顾一下其历史发展的背景。这可以追溯到80年代早期麻省理工学院的人工智能实验室。
那是一个MarvinMinsky等计算机科学先驱与RichardStallman和GuySteele等新一代黑客交锋的时代,后者凭借自己的实力从根本上改变了计算机编程世界。Steele在编写和创建Lisp和Scheme等编程语言方面起到了重要的作用,而Stallman为自由软件运动奠定了基础——这是自Luddism以来对技术仲裁者的最大挑战。
在最近一次接受NewLeftReview的采访时,Stallman描述了麻省理工学院的人工智能实验室培养了一种合作与激进开放的文化,以至于实验室的巨型计算机没有密码保护,实验室的大门始终处于无锁状态。可以肯定的是,Stallman承认这些开放的文化是环境的产物:例如Minsky总是丢钥匙,而实验室里的研究人员不得不共享庞大的计算机,因为这是唯一的一台。尽管如此,该实验室的精神还是给Stallman留下了深刻的印象。
年,他向Usenet小组(这基本上是一个论坛的原型)发布了一条消息,他宣布打算创建一个操作系统并“免费送给所有想要使用的人”。Stallman称这个操作系统为GNU(GnusNotUnix),这是对当时主流专有操作系统(即Unix,贝尔实验室内部使用的操作系统)的挑战,而它的名字也蕴含了这一点。
GNU开启了自由软件运动。年,Stallman在GNU宣言中总结了这一原则:“我认为黄金法则的要求是:如果我喜欢一个程序,那么我必须与喜欢它的其他人分享。软件销售商希望分裂用户并征服他们,让每个用户都答应不与他人分享。我拒绝这种破坏用户团结的方式。”
Stallman在讨论自由软件时使用“自由”这个词的方式并不是很明显。正如他喜欢的表达方式,自由软件的“自由”意味着“自由言论,而并不是免费的啤酒”。换句话说,自由软件的定义是道德要求,即将代码从对使用方式的限制中解放出来,但这并不一定意味着必然不收分文免费赠送软件。自由软件运动的基本原则于年正式编纂完成,而当时Stallman发布了GNU通用公共许可证(GeneralPublicLicense,简称GPL)——即现在更广为人知的公共版权,它为自由软件开发的爆炸式增长奠定了基础。
RichardStallman(右)正在展示“自由言论”与“免费的啤酒”之间的区别。图片来源:WikimediaCommons
两年后,脾气暴躁的芬兰学生LinusTorvalds使用GPL发布了他的免费操作系统内核Linux。其内核经常与GNU软件一起使用,自发布以来的三十年,GNU/Linux已经成为世界上Web服务器和个人计算使用最广泛的操作系统之一。继Linux之后,许多其他有名的免费软件程序都在GPL或符合GPL标准的许可下发布,其中包括ApacheWeb服务器软件和MySQL数据库引擎,两者目前仍在广泛使用。
在狂热的互联网泡沫中,当名不经传的科技公司都获得了令人憎恶的估值时,Stallman由道德驱动的自由软件运动提供了一种截然不同的视角来看待未来。与硅谷的风险资本家在办公室里大量炮制的空中数字城堡不同,自由软件发挥了作用。Stallman和他的助手证明了,通过结合道德信念和技术,可以构建出优秀的软件,这些软件能够通过修改来满足用户的个性化需求。90年代间曾有一个短暂的时期,软件的未来似乎就在于自由——真正的自由。
后来,在年,一位名叫EricRaymond的程序员发表了《大教堂和市集》(TheCathedralandtheBazaar),这篇文章分析了开发自由软件的过程。Raymond富有创意的文字和核心是他所谓的“林纳斯法则”(Linus’sLaw),主要思想是说如果足够多的人共同开发一个软件程序,那么任何隐藏在代码中的bug就会被迅速捕获和修复。从本质上讲,Raymond为自由软件开发的效率打好了基础。由于软件是公开开发的,所以任何人都可以看到自由软件程序的底层,这意味着任何代码中潜在的bug都会被迅速发现。林纳斯法则的必然结果是:自由软件可以更快地发展,因为任何人都可以针对软件提出自己的改进,并发送给项目的核心开发人员。
Raymond的分析对自由软件运动的影响非常大。在他的文章发布之后,网络浏览器Netscape(它曾是世界上最有价值的一个软件)公开了它的源代码,并引用Raymond的文章作为该决定的“基本灵感”。很明显,Raymond的宣言引起了一些硅谷人的注意,他们意识到了自由软件的商业潜力。
但还有一个问题:自由软件运动背负着重要的道德问题,而道德对企业很不利。因此,年在Raymond和崭露头角的媒体巨头以及“大骗子”TimO’Reilly的领导下,一群高调的自由软件传播者聚集在一起,探讨如何让自由软件对行业更具吸引力。正如Raymond后来描述的那样,会上的开发者们针对“重新塑造产品品牌,将其树立成企业界渴望购买的产品”为目标,开展了一场“营销活动”。
Raymond在一篇名为《开源:开源革命的声音》的文章(