开源项目的所有者去世了怎么办?
【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
译者:弯月,责编:郭芮
相关文章
-
暴风迷局:视频霸主归何处,前度妖股今又来?
-
这5种二维码千万别扫,一不小心钱就没了!
-
微信要收钱了?有两项功能实行收费,爱看订阅号、用红包的留意
-
微信春节前突然更新,只为还用户一个“清净”,老年人再次被关照
-
一个iOS的Bug值多少钱?大概是25000美元起
-
美国陆军成立『数字兵』计划,5.61亿美元用VR等新技术训练士兵
-
知识付费方兴未艾
-
十多亿网友即将打不开网页,只因为更新了波浏览器?
-
宣战支付宝微信!银联手机闪付颠覆性营销太强了,成用户收割机!
-
马云都忍不住炫耀的礼物,被他做成了刺激又好玩的生意
-
第四届进博会|雅培携手国药集团打造智能血糖管理体系
-
世纪佳缘再出事故,区块链能成为搅动婚恋行业的新鲶鱼吗?
-
服装行业为什么这么难做?根源在哪里?如何破局?
-
电竞冠军如此“稀少”,上亿玩家仍在拼搏?原因如此简单
-
30秒朋友圈:从看视频到玩视频,微视互动玩法升级了
-
快播大佬的“铁窗故事”:王欣首次公开狱中信件,揭示三年半的牢狱生活
-
阿里巴巴将于今日上午9时开始在香港公开发售;亚马逊抗议美国防部将100亿美元云计算合同授予微软|早8点档
-
短视频会反噬综艺吗?
-
传 iPad mini 5 明年发布 / 新版微信 Android 内测版曝光 / 春运火车票开抢
-
如何取消校园宽带包
-
余承东主动向马化腾推销MateX遭调侃:能用Q币买吗?
-
钛资本研究院:企业服务早期投资方法论
-
热点|趣头条第一季度营收11亿元净亏损同比扩大
-
36氪首发|「小能科技」完成上亿元C轮融资,国内智能云客服领域已出现头部梯队
-
寄生大师!几种有“超能力”的动植物,就喜欢靠其他生命体生活
-
嵌入式AI合辑第三讲下周开讲!听RT-Thread人工智能总监杨武深入讲解嵌入式AI应用开发对操作系统的要求与挑战
-
网易考拉加拿大鹅鉴定门:失效的鉴真机制和冲突的海淘利益链
-
乔纳森谈新款iPad Pro:它非常独特和完整
-
我国5G网络用户数超1.6亿占全球5G总用户数近九成