开源项目的所有者去世了怎么办?
【CSDN编者按】GitHub是全世界最流行的代码托管网站,上面托管了6700万个项目。但是各个开源项目之间所隐藏的复杂软件依赖关系网,带有很大的安全和性能隐患——特别在开源项目的所有者去世之后,很有可能会因为项目缺乏维护而带来其他应用性能的崩溃。本文的作者曾经希望继承某一“孤儿”项目的维护权,却因为客观原因而不了了之。在他看来,开发者应该给大批的“孤儿”开源项目以新生。

以下为译文:
也许你从未听说过Jim Weirich或他的软件,但你肯定用过基于他的软件构建的应用。
Weirich参与创建了流行编程语言Ruby的几个关键工具,许多流行的网站如Hulu、Kickstarter、Twitter和数不清的其他网站都是用Ruby编写的。他的代码是开源的,意味着任何人都可以使用并修改。“他是Ruby西方世界里的精英成员。”Ruby开发者、软件公司Test Double联合创始人Justin Searls说。

Jim Weirich
在2014年Weirich去世后,Searls发现没人再维护Weirich的一个软件测试工具了。也就是说,没有人再审查其他开发者提交的bug修改、安全补丁或其他任何改进。任何依赖于该工具的测试最终都会失败,因为代码总有一天会过时,并且与新的技术不再兼容。
这件事引发了开源软件社区越来越多的担心——在程序员逝世后,他的代码该怎么处理?
安全和性能问题
人们讨论过许多人死后的社交账号如何处理的问题,部分原因是因为许多公司和政府机构都依赖于各个团队维护的商业软件产品。但是今天,越来越多的程序都依赖于模糊却非常关键的软件,比如Weirich的软件。
一些开源项目很有名,如Linux操作系统和Google的人工智能框架TensorFlow,但这些项目也都依赖其他更小的开源库,而那些更小的库也会依赖于其他的库,最终造就了一个复杂且非常隐蔽的软件依赖关系网。
这会带来非常大的问题。比如2014年在OpenSSL里程序出了个著名的“Heartbleed”安全漏洞。几乎全世界每个需要处理信用卡或借记卡支付的网站都会使用OpenSSL这个开源软件,但实际上它的维护团队只有寥寥几名志愿者,而且他们也没有足够的时间或资源来进行所有的安全审查。在Heartbleed出现后不久,另一个著名开源软件Bash中也发现了安全问题,导致世界上无数的Web服务器和其他设备面临被攻击的风险。
肯定还有更多尚未发现的问题。一个名为Libraries.io的组织分析了软件项目之间的联系,发现超过2400个开源项目库都使用了1000多个其他的程序,但这1000多个程序几乎没有受到开源社区的任何关注。
而安全问题仅仅是问题的一部分。
如果软件库不能经常更新,那么总有一天会无法在最新的软件上运行。也就是说,所有依赖于过期软件库的软件都不能再运行。如果开发者去世,或者放弃一个项目,那么所有依赖于该项目的软件都会受到影响。去年,程序员Azer Koçulu从互联网上删掉了一个名为Leftpad的很小的软件库,结果连锁反应使得Facebook、Netflix和许多其他人都大为头疼。
公交车指数
一份软件的所有者越少,被孤立的风险就越高。开发者们甚至给它起了个名字:公交车指数——意思是说,多少人被公交车撞死会导致项目无人维护。Libraries.io发现,大约3000个常用的开源软件库只有少数几个维护者。
尽管商业软件厂商在停止支持旧软件时也会给用户造成类似的困扰,但总的来说,使用孤立的开源软件风险非常高。有时候,热情的程序员会收养孤立的开源代码。
Searls的Weirich项目就是类似的情况。Weirich最流行的项目在他去世时都有其他的管理者。但Searls发现其中一个项目——测试工具Rspec-Given并没有人接手,因此他想接过该项目并负责更新。但他遇到了一些困难。
Rspec-Given的代码放在了GitHub上。GitHub是全世界最流行的代码托管网站,上面托管了6700万个项目。Weirich的在GitHub上的Rspec-Given页面是人们报告bug或帮助改进代码的主要场所,但GitHub拒绝为Searls提供该页面的访问权,因为Weirich并没有在去世前指定他为管理者。因此,Searls不得不复制了该项目并放在了其他地方。他还必须说服Ruby Gems(一个用来分发软件的“包管理系统”)的管理者使用他的Rspec-Given版本,而不是使用Weirich的版本,这样所有Ruby用户才能访问到Searls的修改。GitHub拒绝讨论关于移交项目权限的政策。
这样就解决了与Rspec-Given有关的问题,但也让Searls意识到,许多事情都可能会出错。他说,“开源可以很容易地看成纯粹的技术问题。但一旦项目启动并被几百人使用之后,它就成了社会问题。”
绝大多数包管理系统的维护者都有一个临时的库权限移交流程,但这个流程仅在有人注意到某个项目已经被孤立,并且自愿收养的时候才会启动。Ruby Gems新项目的Evan Phoenix说:“我们并没有正式的政策,因为这个流程很少发生。但我们有个委员会来针对每件类似情况进行讨论。”
现在,一些包管理器会自动监视软件库,并对广泛使用但很久没有更新的软件做出标记。协助维护Perl编程语言的包管理器的Neil Bowers说,有时候他会寻找志愿者来收养孤立的项目。Bowers说,他的团队会找出被遗弃的项目,然后由其他人申请接管。
亡者开关
接管Rspec-Given启发了Searls,年仅30岁的他决定为他自己的开源软件项目立下遗嘱和后继的计划。开发者们也可以做一些事情来让软件包的未来更安全,比如,可以将版权转交给基金会,如Apache基金会。但许多开源项目都是作为个人兴趣开始的,所以很多程序员根本没有想过转移所有权。
Searls建议GitHub和Gems等包管理器能在各自的平台上加个“亡者开关”功能,以便在所有者很长时间不上线或不做修改后,自动将项目的所有权或所有者账号转移给他人。
但移交的计划远远不止允许别人访问代码这么简单。流行的数学库Matplotlib的创立者John Hunter于2012年逝世后,Michael Doroettboom接管了该项目,他指出,后继者必须能够理解代码。“有时候代码库里会有一部分只有一个人才能看懂的代码。”他说,“那些知识保存在了那个人的大脑中。”
总而言之,我们应当让别人尽早参与项目,最好是在别人一开始使用代码的时候。Searls指出,这样做还有其他的好处,比如可以分担维护的工作量,防止开发者过于疲劳。
原文:https://www.wired.com/story/giving-open-source-projects-life-after-a-developers-death/
作者:Klint Finley Business
译者:弯月,责编:郭芮
相关文章
-
特斯拉2018年报:全年亏损10亿美元,转向精细化运营
-
8点1氪|Netflix第三季度营收同比增长31.1%;趣头条旗下米读完成1亿美元B轮融资;软银计划再为WeWork注资50亿美元
-
这个金鼻子奖专门颁给山寨货,结果前十都被中国占了
-
专访江波龙电子钟孟辰:专注用户需求,探索存储新形态
-
大数据智能时代到来,数据安全经得起考验嘛?
-
斥巨资购买版权,苹果公司也开始“豪横”了?
-
ofo总部被退款用户占领 兵临城下戴威该如何应对?
-
让出行更顺畅广州工行教您便捷使用ETC
-
chia算力成为全球第一区块链!
-
锤子、乐视、金立手机的「遗产」,成了微商朋友圈的爆款
-
快讯|数据安全厂商安华金和获德联资本C1轮近亿元融资
-
天问一号传回“宇宙级”冬奥祝福!
-
重大隐患!美国运营商官方公布数据泄露事件,影响超过100万人
-
新书《阿尔加》:将未来金融和科幻大胆融合,一场人机博弈悄然上演!
-
深度资讯|华为下调2019收入预期,重压之下靠什么突围?
-
【PW日报】英伟达内部通知部分型号显卡会适当涨价
-
陈华:音乐人在线工作的时代机会
-
网易云音乐为什么被“匿名社交”闪了腰
-
腾讯云闯北美
-
【产业互联网周报】阿里宣布新一轮组织升级,程立担任阿里巴巴集团CTO;腾讯云2019年营收破100亿;柳传志正式卸任联想控股
-
旷视升级,AI引擎驱动AIoT时代产业物联网构建
-
华为宣布与袁隆平合作曾买华为手机被公开辱骂当场暴毙
-
热点|拼多多增加补贴5亿元联合百大品牌促“正品下乡”
-
通过一场VR产品体验会,我却看到了戴尔成铭助力中国企业数字化的无限未来
-
法院公布中国第一起“流量劫持”被判刑案件
-
春节年货包裹“次日达”,背后是这群人的坚守和付出
-
快手“3亿DAU”目标,计划春晚狠砸40亿元
-
互联网巨头贪腐史:阿里八年7位高管贪腐 联想华为腾讯百度均未幸免于难
-
早报 | 国行 HomePod 本周五发售 / 日本为《荒野行动》贡献 8 成收入 / 罗永浩:今年想解决两大问题