向老罗致敬,好人终有好报:

转自网站:界面-http://www.jiemian.com/article/231843.html

[华盛顿]

史蒂夫·马奎斯隐居在华盛顿郊外的一栋小木屋里,没有电视、没有手机信号。服务商每年都保证信号塔就要立到他家门前了,可从来没兑现过。除此之外,小木屋周围绿树环抱、鸟语花香,很适合做超级英雄不用拯救世界的周末去处。

“我老了。老到还记得穿孔卡片和真空管电脑的时代。那会儿没有软件专利权这回事,IBM之类的电脑商会把软件随主机附赠。从那时起,我就对开源着了迷。”

史蒂夫·马奎斯已经从野鸡大学毕业许多年,当过美国国防部咨询顾问也注册了军火商执照,终于把购房贷款还清,连女儿都已经到了大学毕业的年纪。

他话多却有点耳背,平时爱好喝酒打猎,余下的时间都用来守护那个有史以来应用最广泛的开源密码库项目——OpenSSL。如果OpenSSL代码存在漏洞,全球三分之二的网站服务器将会受到影响。黑客甚至可能直接对个人电脑发起攻击,上亿互联网用户从私密博文到银行卡密码都将不保。

自创立之初,OpenSSL就开放源代码接受所有改进和质疑。和维基百科类似,这个开源项目不属于任何商业公司,每一行代码都依靠世界各地程序员们在闲暇周末的自愿贡献。为了维护服务器、购置新设备、雇佣外包验证测试,OpenSSL接受公众捐款,也会接一些与项目完全无关的编程工作换取报酬。

十五年来,OpenSSL每年得到的捐款收入始终徘徊在可怜巴巴的两千美金。说出去大概没人会信,但这个保障了半个互联网安全的密码库项目实际上只雇得起两个全职员工,两人都叫史蒂夫,跟美国队长重名。

第一个史蒂夫姓汉森,是英国人、图论数学博士、电影里那种连讲电话都含羞的编程天才。他辞掉原先的工作,全职投入OpenSSL的建设,每年收入骤减到两万美元。要知道,在硅谷,一个刚毕业的年轻律师一个月就能轻松入账一万。第二个史蒂夫就是前国防部顾问马奎斯。他负责管理OpenSSL基金会,记账、填表、接受采访,担任高能程序员们跟现实世界的唯一纽带。

去年夏天,森林绿意葱茏,史蒂夫·马奎斯坐在他没有手机信号的小木屋中,突然收到一封邮件。发件人来自中国,叫“Han Xu”,搞不清哪个是名哪个是姓。他代表一家叫Smartisan的年轻公司询问OpenSSL项目是否需要一百万人民币的捐款。

“要要要!”是史蒂夫·马奎斯当时的第一反应。他和他的小木屋都太老了,老得没用过智能手机,更不知道锤子科技。不过,1后面接了六个0,史蒂夫搜索起汇率,相当于十六万多美元。这将是OpenSSL创立以来得到的最大单笔捐助,超过历年所有企业与个人捐助额的总和——如果这个中国人不是骗子。

[望京]

名叫“Han Xu”的发件人,为锤子科技工作。他们的总部位于北京市区东北部的望京,一共五百多名员工,官网上的宣言是“用完美主义的工匠精神,打造用户体验一流的数码产品,改善人们的生活质量”。

锤子科技出品的Smartisan OS手机操作系统今年一月刚获得了极客公园(Geek Park)颁出的年度创新大奖和最佳用户体验奖。可仅仅在两年半之前,大家还觉得锤子科技不过是罗永浩脑袋里搭错的一根筋。

这个高中辍学生、新东方段子手,从来都不是以程序技术而闻名的。要说起他的特长,英语一定算一项,而另外一项大概就是“说相声”。在和朋友们创办英语培训学校的同时,罗永浩从2009年起开始以《我的奋斗》为题在全国高校进行巡回演讲,并推出同名自传。后来,他在四年里举办了四轮《一个理想主义者的创业故事》演讲,场场爆满。“老罗语录”也被贴在新中关购物中心地下的广告灯箱,去往地铁的扶梯边一路都是,句句不同。等语录都看完了,也就到了不见天日的地底。

有人说他卖情怀、拿演讲稿出书骗钱,罗永浩索性把版税和演讲收入全部捐出,并公布捐赠细节,于是又有人说他追求虚名。在英语培训学校时期,他捐助的对象是西部阳光农村发展基金会,还组织过英语老师去支教。创办锤子科技之后,罗永浩决定,仍然把手机发布会门票收入捐给公益机构,但最好是正在推动科技发展的公益机构。锤子的工程师和产品经理同时提到了 OpenSSL。

“说相声出身”的罗永浩本来从没听说过这个名字。他自己上网去查资料,发现这个开源项目与无数互联网用户的安全问题息息相关,不少科技巨头都在免费使用着他们的劳动成果。“我们花了一些时间来讨论 OpenSSL 是否是最合适的捐助对象。”罗永浩说,“结论是,无论从对人们日常生活和科技界的贡献,还是出于一个互联网使用者的道义,或者是从事件的传播性以及对科技公司品牌形象的提升效果上考虑,他们都是我们观察范围内最应该被捐助的。”

正是2014年5月,史蒂夫·马奎斯的小木屋本来岁月静好,OpenSSL却遭遇“心脏出血”(heartbleed)。队伍中的一名德国程序员在新年假期加班,不小心写下一串包含漏洞的代码,直到两年后才被谷歌工程师检查出来。“心脏出血”漏洞使全球超过半数使用https协议的网站安全受到威胁,黑客甚至可能直接对个人电脑发起攻击,获得隐私信息。

由于没有firefox和linux一样的显眼本质, 此前15年来一直运转过于良好OpenSSL的代码就像托住冰山的海面以下部分,从大企业到初创公司都用得心安理得。没人特意向这个开源项目捐款,也没人操心他们究竟有多少人手、能不能维持生计,反正半个互联网这么多年来都这么用着。

“心脏出血”爆发后,不少人争相跟OpenSSL划清界限。基层程序员批评他们的代码“令人作呕”,大公司则比赛着将牵连自身的安全漏洞尽快修复。而开源宣言《大教堂与集市》(The Cathedral and the Bazaar)的作者更是由此认定开源生态存在亟待解决的本质漏洞。

史蒂夫·马奎斯能理解这些批评:互联网上那么多人,总会有某人因为某事而感到不满。可他很想对他们说:“抱歉,我们搞砸了。要不,退你们钱好了。”他接着想了想,“啊哦,你们压根没付过钱呀。”

就连不少鼎鼎大名、多年使用OpenSSL代码的公司也从没投入一分钱来支持这个开源项目。在偶尔提出要捐款的公司中,有些会临时反悔、人间蒸发,有些要反复商谈“公司商标挂在OpenSSL官网上宽和高至少达到多少像素”,有些则要求史蒂夫和他的程序员朋友们“顺便帮个小忙”。

史蒂夫·马奎斯边擦猎枪边愤怒地回复:“如果你想要我们为你的公司‘顺便’做商业编程,那就不叫捐助了。那叫雇佣。”

最终,捐款总是来自全球各地、积少成多,连一美分的都有。史蒂夫·马奎斯很惊讶,一些他在广播中听说的最不尊重人权、最限制自由和最不发达的国家,反而有不少人认可开源项目,还设法向基金会的账号捐了款。可支付平台总是会抽掉一部分,一美分的捐款就都被抹掉了,史蒂夫忿忿不平。

太平洋这头,罗永浩也爱忿忿不平。多年以来人们往他身上贴的标签,除了“胖子”,就是“理想主义者”。可是这回,他终于发现比他还要理想主义的OpenSSL。“我听说该机构最初的几名工程师放弃了高薪的工作,而投身于这样一项公益事业,来维护互联网的安全。”罗永浩说,“这符合中国人所说的‘侠义精神’,这些人的内心一定有理想主义的支撑。这是我所欣赏的。”

于是,离锤子科技发出第一封邮件还不到十天,史蒂夫·马奎斯就收到了百万元捐款——OpenSSL基金会有史以来最大的单笔收入。

这些中国人对他一无所知。他们不知道他隐居在林中木屋、有军火商执照、耳背、话唠,也自始至终没有问过他这笔钱会怎么花、锤子的标志能不能挂上官网显眼处。但史蒂夫·马奎斯已经习惯信任陌生人。就连全世界他最好的战友,他也从来不知道他们长什么样子。

插画:Mzzz

[大西洋海域]

史蒂夫·马奎斯和他的战友们并不是第一拨踏上密码学战场的人。

第一次世界大战告终后,《凡尔赛条约》规定战败的德国不能拥有潜艇,但德国海军依然秘密研制出了适用于远洋海战的大型潜艇,以字母U后缀数字命名。每艘U型潜艇上都搭载着恩尼格玛密码机,用来对重要作战情报进行加密保护。在战争双方的加密与破译之间,一场场偷袭、登陆和轰炸被策划或者揭露。有人死伤,有人欢庆。

那时的德国男孩会觉得潜艇兵是一个光荣的位子,只有身体条件最好、心理素质最过硬的人才能入选。在U型潜艇上工作,不光每12周就有假期,还能享受封闭环境服役补助和潜水补助,薪水几乎是陆军的两倍。唯一的痛苦是潜艇内空间有限、温度奇高。紧贴舱壁的铺位只能容纳士兵侧身躺下,许多岗位还是两人轮流用一个“热铺”。每到换岗时间,铺上的士兵就得不情不愿地去接班,而刚回来的战友则在那张五十摄氏度汗湿的铺位上继续睡去。

U-110潜艇上的德国士兵同样没有机会了解战友的样貌身世和脾气喜好。他们也同样深信自己是为了责任与荣耀才投入战事。1941年,U-110潜艇被英军捕获。1945年,U-505潜艇被美军捕获。潜艇上的恩尼格玛密码机和密码本帮助盟军提前两年取得在西欧的全面胜利。

二战后,美国政府颁布联邦资料处理标准(Federal Information Processing Standards),其中140-2号标准收紧了对加密法的控制。所有卖给美国政府的软件必须经过第三方机构独立验证其保密性能,并提交检测报告。无数公司立刻抓住机会提供评估服务,整个新的行业应运而生。

国防部咨询顾问史蒂夫·马奎斯就在这个行业中耗尽了前半生。他烦透了官僚主义作风,看腻了一个政府部门跟另一个斗智斗勇,像左手掐右手。为了简化行政程序,他四处求援。一个政府部门6次决定资助,而另外一个部门驳回了6次。

“政府像怪兽那样大,那么多文件,我一辈子都那么过去了。”最后,史蒂夫·马奎斯像所有超级英雄一样等到了戏剧化的人生转折。他听说OpenSSL项目缺人手。他深信,“我们的世界必须拥有一个可靠的加密系统,它不能落入任何政府与商业公司的控制中”。

加密法是互联网时代保障隐私信息的关键技术。历史告诫现代人,如果加密和破译规则被别有用心的人掌握,后果将是多么可怕。于是,史蒂夫·马奎斯,同史蒂夫·汉森还有其他几十个没有超级英雄名字的程序员们决定投身OpenSSL的建设。他们抱着同样的信念,要造出有史以来最棒的加密系统,以开源的方式分享给全世界,以保障后代的隐私和安全。

为了分出时间给这项工程,他们多多少少推掉商业工作、牺牲假日休息,与屏幕中看不见的战友讨论、争执、推翻再重来。一开始还纯粹享受着脑力锻炼的程序员们,慢慢就被责任感淹没了。在开源中,他们能够享有对代码作品的最大控制权和最高透明度,也能坚持做自己认为“对”的事。他们觉得保护这个世界就是对的事。

“总有唱反调的人把这些开源项目说成是‘反资本主义’的。”但史蒂夫·马奎斯觉得恰恰相反:“开源项目其实来源于最纯粹的竞争。如果一个开源项目在商业世界获得了成功,那决不会是出于侥幸,决不会是因为其它竞争者恰好被规章制度所累、被知识产权法约束、被人傻钱多的赞助商拖垮。如果一个开源项目胜出了,背后只会有一个原因——它真的比其他竞争者都要好。”

史蒂夫·马奎斯很清楚自己的编程技术比不上世界级水平的战友们(其中一半拥有博士文凭),于是主动负责案头工作。他丰富的填表经验解放了战友们的宝贵时间,他的话唠正好足够对付来访的记者。他总是忍不住好心提醒记者,某些邮箱后缀逼格太低,最好换掉。

他从没离开过隐居的森林木屋,只靠邮件和网络电话跟全世界人通讯。他帮史蒂夫·汉森争取到合理的工资待遇,接着操心团队里其他人能不能去得起超市。

史蒂夫·马奎斯认为地道的开源文化就该这样,只凭智力成果定夺名声,没有人会因为长相、性别、家世而受到歧视或者特别关照。

他跟其中一个见过面,还有四个打过电话,对剩下的就一无所知了。他倒是熟悉他们编程的风格、邮件的写法,但即使有天恰好在大街上迎面碰见,他们也不会认出彼此。

OpenSSL在杜塞尔多夫的聚会。从左至右依次为:Steve Marquess、 Kurt Roeckx、Geoff Thorpe、Richard Levitte、Lutz Jänicke、Tim Hudson、Matt Caswell、Bodo Möller、Rich Salz、Andy Polyakov、Emilia Käsper。参会者还有四个人并未出现在照片中。

[杜塞尔多夫]

如果永远见不到真人,开源程序员们大概可以畅想,自己的战友其实是个人工智能。幸好在2014年末的杜塞尔多夫,Linux基金会特意在年度欧洲大会的举办现场辟出一个房间给OpenSSL团队。有了锤子科技的那笔捐款,世界各地并肩作战多年的战友终于相聚。

第一天早上,史蒂夫·马奎斯等在会议室里,竟有点紧张。直到一个接一个陌生人走进房间,客气地道过早安,他凭口音猜到他们的家乡,才突然发现都已经认识他们十多年了。英国人、瑞典人、澳大利亚人、爱沙尼亚人……十五位战友们的名字跟脸慢慢对上号,胖瘦高矮全部不同,花花绿绿各色T恤,逛超市时都不会被当做超级英雄。

每个人都一样的兴奋。“十五年了,终于见到队友们。他们不再是藏在电邮地址后面的隐形人。他们都有自己的个性、爱好。”后来在邮件里,程序员理查德回忆道。另一名程序员杰夫也说,“过去我们中的大部分人只认识另外的一、两个人,这还是第一次有机会让这么多人同时聚在一起。当有张脸可以跟电邮地址对上号时,沟通都会变得更加轻松。”

他们喝光了五瓶苏打水和两瓶可乐,不眠不休地谈论OpenSSL的过去与将来。白天,偶尔有一两个参会者突兀地敲开会议室的门,称赞他们。但更多的人依然没听说过OpenSSL。等到晚上,会展中心要关门了,他们就挪到几步远外的家庭餐馆里,就着啤酒和烤肉继续畅谈,直到凌晨一点。连续三天,都是这样。

这次聚会对OpenSSL意义非凡。纲领性文件在迟到十五年后终于出炉,团队主力还就发布策略和漏洞处理问题达成了一致。代码标准化和证书申请目录被明确了,官方路线图文件也发布在了网站上。OpenSSL补好“心脏出血”,每个人都整装待发。

大会闭幕那天,有人提议拍张合影吧。史蒂夫·马奎斯小跑到门外叫住一个路人。对方友好地停步,帮忙按下一次快门。他当然不会知道,取景框里这十四个男人和一个女人曾参与过保护人类隐私的伟大工程。

就像史蒂夫·马奎斯不知道,锤子科技为什么会突然跑过来帮助OpenSSL。他多次坐在小木屋中惴惴不安,猜测这间中国公司是否能够得到行侠仗义的回报。而他能做的,只是把那次聚会的合影发给锤子科技,表示感谢。没过几天,锤子科技竟又捐出一百万元人民币。这下OpenSSL可以再雇佣三名全职程序员了,所有代码都会经过反复的漏洞检查。史蒂夫·马奎斯说战友们敲起代码来总是兴冲冲的,像古代工匠专心雕刻一枚盾牌,这儿敲一锤子、那儿敲一锤子,虽然累,但穷开心。

在二百万人民币之后,OpenSSL又收到不少来自中国的个人捐款,史蒂夫·马奎斯依然费解于从天而降的好运。不过,他和许多开源参与者一样,都有点理想主义。他相信,自己的林中木屋总有一天能收到手机信号。他还相信,在肉眼看不见的地方,总有一群隐形的战友,志同道合,只等相认。

————————————————

如果您也想对这项伟大工程做出一点点贡献,请点击:这里

做个体面有尊严的IT人【转自界面】的更多相关文章

  1. ZT:做一个连自己都羡慕的人

    当你越来越杰出时,自然有人关注你, 当你越来越有能力时,自然会有人看得起你, 改变自己,你才有自信,梦想才会慢慢的实现. 做最好的自己,懒可以毁掉一个人,勤可以激发一个人! 不要等夕阳西下的时候才对自 ...

  2. 技术的止境(客户价值第一,快速实现第二,边做边学,迅速成为牛人。紧贴客户的需求去做技术,立于不败之地。追求的目标:把一项产品去做好,用产品去养活自己和家人)good

    作为一个依靠技术来谋生的程序员,我最近一直在思考一个问题,有限的生命里,面对无限的技术更新,我要研究到什么程度才能算是完成我的成为技术大牛的目标呢?换而言之,那就是技术的止境在哪儿呢?深入的思考下去, ...

  3. 题解西电OJ (Problem 1007 -做一名正气的西电人 )--长整型计算

    Description 一天,wm和zyf想比比谁比较正气,但正气这种东西无法量化难以比较,为此,他们想出了一个方法,两人各写一个数字,然后转化为二进制,谁的数字中二进制1多谁就比较正气! Input ...

  4. 总结使人进步,可视化界面GUI应用开发总结:Android、iOS、Web、Swing、Windows开发等

    可视化界面的软件,是21世纪最主流的应用类型了,黑屏控制台的不适合普通用户.   2004年左右的时候,作为普通网民,接触的自然是可视化,准确是Windows那一套.   那个时候,Microsoft ...

  5. 淡淡de馨香---职业尊严

    大学四年时光匆匆而过,仿佛一切都不曾远去,那种熟悉又激动的感觉好似就在昨天,但是.一切都仅仅是一种感觉,在现实面前没有谁能够逆天,在被遗忘的什么时候,曾经是想着无数的梦想与自定义,同样也是在被遗忘的什 ...

  6. 我们是怎么做Code Review的

    前几天看了<Code Review 程序员的寄望与哀伤>,想到我们团队开展Code Review也有2年了,结果还算比较满意,有些经验应该可以和大家一起分享.探讨.我们为什么要推行Code ...

  7. 如何利用FineBI做财务分析

    很多企业随着业务规模的增长,传统的财务分析方式采用手工摘取数据的方式,难以快速地对企财务经营状况作出及时分析和预测.现在业务人员通过使用自助式BI工具做财务分析已经成为流行,每个人都希望自己做报表,快 ...

  8. Jsoup做接口测试

    最早用Jsoup是有一个小的爬虫应用要写,发现Jsoup较HttpClient轻便多了,API也方便易懂,上手很快,对于response的Document解析的选择器用的是cssSelector(Jq ...

  9. 【转】【51CTO 网+】怎样做一款让用户来电的产品

    [51CTO 网+]怎样做一款让用户来电的产品 据相关调查显示,目前全球移动用户平均每人安装应用约95个,每天使用的应用约35个.可见面对众多的移动应用,用户拥有非常大的选择空间.如果由于交互设计欠佳 ...

随机推荐

  1. [leetcode] 题型整理之排序

    75. Sort Colors Given an array with n objects colored red, white or blue, sort them so that objects ...

  2. 【前端开发】优化代码之减少引入,css预编译语言的优点,stylus的使用

    前言:我必须得承认在最最最开始的时候,我对于css的预编译是非常不以为然的,这是错误的.一般在页面编写过程中,我会将需要reset的css放在reset.css中,讲会需要重复用到的放置到public ...

  3. DataTable.RowFilter 用法

    /// <summary> /// 处理DataRow筛选条件的特殊字符 /// </summary> /// <param name="rowFilter&q ...

  4. 算术表达式解析(第二版) C++11版

    //一个简单的计算器代码,主要用来练习C++11新标准的编程技术和stl应用 1 #include<iostream> #include<stack> #include< ...

  5. Service Locator 服务定位模式

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  6. div垂直居中的几种方法

    CSS教程:div垂直居中的N种方法[转](原文地址:http://www.cnblogs.com/chuncn/archive/2008/10/09/1307321.html) 在说到这个问题的时候 ...

  7. jquery mobile页面跳转缓存问题解决

    最近,我的一个写后端的同事因为缺前端自己做起了前端的活儿,因为对前端的不熟悉,找寻了一些现成框架想轻松了事,做一个web app他选了jquery mobile,开发效率确实高,但是这个框架的一些坑也 ...

  8. 文本编辑器VIM/VI

    vim/vi  功能强大全屏文本编辑器.主要是建立,编辑,显示文本. www.vim.org  构建shell脚本 :set number 使文件出现行号 a 光标后附件文件     i在光标前插入文 ...

  9. Sprint会议记录(第五组)

    会议时间:12/8 下午14:00 会议地点:宿舍 会议进程: *首先我们讨论了实验第一个Sprint1要实现的功能:排球规则分析.比赛详细过程.比赛人物分析, *之后对是任务的认领, *最后每个人对 ...

  10. springmvc HandlerInterceptoer WebRequestInterceptor MethodInterceptor使用

    HandlerInterceptoer拦截的是请求地址,所以针对请求地址做一些验证.预处理等操作比较合适.