Hi!请登陆

开源走向衰竭? 代码被遗弃, 开源开发者们该何去何从?

2020-11-27 34 11/27

近年来,全球开源项目数量呈指数级增长,据开源软件安全平台 SourceClear 的调查报告预测:

2026 年全球开源项目数量将超过 3 亿;然而,开源 vs 生存,如何取舍?

多年以来,这个问题一直在深深地困扰着业界尤其是个人开源开发者。

因患病长期失业、却仍在坚持维护开源项目

早在 2016 年,JS 红宝书原作者 Nicholas C. Zakas 不幸患上莱姆病,而后长期失业,连业余兼职工作也无法进行下去。

然而多年来,他在没工作、没有收入,身患重病的情况下维护着他的开源项目 eslint,一款插件化并且可配置的 JavaScript 语法规则和代码风格的检查工具。

但在现实的压力之下,他不得以在 GitHub 上发起求助,并希望在 2020 年的某个时间能够恢复健康,并重新开始开源工作。

现实压力下开源作者

除了 Nicholas C. Zakas ,仍有不少开源作者身处压力之下。

Bootstrap 开源由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发的一款开源前端框架。

Green Day 和 Barack Obama 的 The White House 的网站设计都使用到了 Bootstrap 。

Bootstrap 开源流行的原因:

1.简约的风格

2.任何人都可以免费使用

Jacob Thornton 的压力:

Mark Otto 和 Jacob Thornton对Bootstrap 持续维护了 9 年,让他直呼想逃离:

每周都有无数的人向他和 Mark Otto 报告错误、要求新特性和给予表扬;

晚上还要花费4~5小时对 Bootstrap 进行管理,编写新代码;

而像 Bootstrap、eslint 这样,即使项目维护者精疲力竭但还在坚持的开源项目已经是个幸事,开源代码被遗弃才是最坏的结果。

无力坚持,放弃却酿成大祸

两年前, event-stream 库的作者 @dominictarr 因缺乏时间和兴趣决定放弃维护这个库,并且将该库转让给了一个完全不认识却又想要接手的陌生人 @right9ctrl ,而 @right9ctrl 利用比特币公司曾使用过这个库的开源代码,对其进行了重写,以试图窃取加密货币。

事情发生后, event-stream 库的作者 @dominictarr 遭到了大量开发者的谴责,控诉他为何要将软件包交给一个陌生人。对此, @dominictarr 回应:起初开发这个库只是因为好玩,并不是为了利他。但开发者将维护的工作全压在我的身上,而我从维护中得不到任何东西,这个库对我来说就不再是兴趣了。并且,一开始我并没有从 @right9ctrl
身上感受到恶意,以为这是一位真心想帮助我的人。

精疲力竭的开源开发者该如何自处?

最近,新媒体 Substack 的作家 Nadia Eghbal 出版了一本书《 Working in Public 》,为了写这本书,她与数百名开源程序员进行了交谈。

从沟通中 Nadia Eghbal 意识到,开源项目代码的编写和修改需要高水平的合作。

而事实上,虽然参与开源项目的开发者会有很多,但他们其实只做出了像修复 Bug 这种很小的贡献,无法实现维护项目所需要的高水平合作。

因此,开源项目的维护最终还是落在了少数人的肩膀上,他们就像公众人物一样背负着众人的期望与监督,而区别是,他们从中得不到任何物质回报。

研究表明,约有 9.5% 的开源代码已被遗弃,约 25% 的开源项目可能也快被放弃。这个趋势很危险,且不说没人维护的代码易被严重破坏,光是恶意利用这一点就后患无穷。

开源最关键的是人,不是代码!

一个公司是否有人可以掌握开源软件本身的架构,是否有人可以对社区的方向有所影响,是否有人可以适配开源软件符合自己的需求,是否有人可以在必要的时候继续维护软件,这些才是最需要关心的问题。

假设某一天一个开源软件的主要开发方突然宣布不再开放源代码了了,这个时候要看其他开发者可以集合起来,有能力接着前一天的分支继续进行开发和维护,那么这个软件就会依然可以被大家开发使用,甚至逐渐集合有能力的社区伙伴重构或者重写一份都不会是问题。

活跃的开发者人群是大家使用开源软件的真正保障,也是社会得以快速创新发展的基础。

国内开源现状如何?

国内开源现状:

(1)国内还没有形成对待开源的思维,仍然停留在各大论坛上贡献的免费软件一样,索取为主,没有交流,用的好不好他也不说,拿过去改了什么他也不说,有问题他也不说。

(2)对于有能力贡献代码的人,贡献出来之后,大部分学习的手段就是拿来就可以了,没有思考,也没有反馈,大多也就是你必须按照我这么做,不这么做就不行。

(3)基于一个想要后续获取利益的目的来发布软件,自立山头的老板比较多,而手下的兵少,人手足够后,缺乏开源管理经验。

(4)国内的程序员没有时间做开源,也没意识到开源的重要性。大多都处于搬运工的状态,每天加班加点完成公司业务代码。

在国内做开源的困难:

源软件的迭代速度则取决于这个世界上有多少对此软件感兴趣的人。

一个软件开源了,很容易就被大公司或者其他人给闭源处理了,迭代比你快,优化比你好。

少部分大牛,开源了一些好代码。难以形成比较大的影响力。国内的开源项目,做得好的基本上是极客,凭个人能力开发出优秀的完整项目,除了阿里,貌似少有公司团队参与的开源项目。

大牛如何看待开源?

几个月前,阿里巴巴技术副总裁贾扬清在知乎上针对“如何看待国内开源现状”时,回答:

一方面,开源是热情驱动的,但是另一方面,我们绝对不能饿死雷锋。所以一定要有体系化的能力沉淀,有很好的流程,把大家做开源的阻力做到最小。

而享受开源代码成果的我们可能能做的就是如亚马逊首席科学家李沐所提到的“契约精神”。

我觉得最大的一点是得有契约精神:我邀请你来用我新鲜出来的代码,那么我会负责回答你的问题,并帮助合并你的代码提交请求。这个也是好几个回答提到的”开源维护“。

最后,开源开发者未来将如何自处,开源的枯竭局面又该如何挽回?这是每一个开源者需要思考的问题。

相关推荐