“我本可以默默地停止这项工作,但我还是想给开源最后一次机会。”
整理 | 郑丽媛
出品 | CSDN(ID:CSDNnews)
「阳光之下,必有黑暗」。
当互联网企业争相拥抱开源,当开源成为技术创新的重要途径时,“开源”一词逐渐被推上前所未有的高度——如此光鲜的背后,无数开源人却在艰难“求生”。
本周二,JavaScript 模块化标准库 core-js 的作者 Denis Pushkarev,在 GitHub 上发表了一篇万字长文《 So,what’s next?》,说尽了他这 9 年开源生涯的点点滴滴:入狱 10 个月、被不断网暴、积蓄用尽、无法给家人体面的生活等等。
文中,Denis Pushkarev 谈到:“我喜欢开源……但这也许是我一生中最大的错误。”
下载量超过 90 亿次的 core-js
作为一个模块化的 JavaScript 标准库,core-js 可为最新的 ECMAScript 标准和建议提供支持,包含大约 5000 个不同复杂程度的 polyfill 模块,深受开发者欢迎。
据统计, GitHub 上超过 1900 万个代码库都在使用 core-js,它在 NPM 上的每周下载量超过 4300 万次——自 2014 年 Denis Pushkarev 将 core-js 作为开源项目发布以来,其总下载量已超过 90 亿次。
单看这一串数字,你可能无法直接感受 core-js 的应用范围到底有多广。为此,Denis Pushkarev 简单写了个脚本,以检测在 Alexa 全球顶级网站 TOP 1000 中 core-js 的使用情况。
结果显示,仅通过脚本的粗略检测,就发现有 52% 的网站在使用 core-js。在后续更精确的的手动检查中,Denis Pushkarev 更是表示 TOP 100 中就有 75-80 个网站使用了 core-js,其中包括腾讯、苹果、领英、NETFLIX 等。以下为部分示例:
Denis Pushkarev 总结:“我可以肯定地说,大多流行网站都在使用 core-js。而且不仅仅是关于网站前端,几乎所有使用 JavaScript 的地方都有 core-js 的身影。”
但 Denis Pushkarev 盘点这些数据,并不是想炫耀他有多厉害,而是“为了展示一切都有多糟糕”。
孤立无援,放弃高薪全职做开源
2014 年,当时 Denis Pushkarev 想让 JavaScript 开发者们更轻松,于是将 core-js 作为开源项目发布,但他将其形容为:“也许这是我一生中最大的错误”。
core-js 的出现,让开发者能够快速使用最新且有用的 JavaScript 功能,因此刚发布不久,其传播便呈指数级增长。出于对项目的负责,Denis Pushkarev 也由此开始了无止尽的维护工作。
与绝大多数的库不同,core-js 不是一个写完就可以丢在一边的项目,它与 Web 的状态绑定,要对 JavaScript 标准或提案的所有更新、所有 JavaScript 引擎的新版本以及相关 Bug 检测等及时同步。core-js 为此进行的演变和改进从未停止,导致维护工作的规模不断扩大。
然而,这对当时还有全职工作的 Denis Pushkarev 来说,有点兼顾不了了。
那段时间,Denis Pushkarev 尝试了很多方法,希望能找到其他维护者或固定的贡献者,但均以失败告终。最终,他放弃了那份高薪工作,选择全职从事开源,因为当时的他认为:“金钱不是第一要义。”
筹集不到资金,入狱 10 个月
直到 2019 年 4 月,Denis Pushkarev 大约有一年半的时间都在全职做开源。在这期间他回到了俄罗斯,并主要通过一些短期合同赚取生活费,虽然没有高薪,好在生活还算体面。
但打破这种平静生活的转折来得很突然。2019 年 4 月,Denis Pushkarev 因驾驶摩托车撞人致一伤一亡,根据俄罗斯联邦法律,他要被判处有期徒刑 18 个月——这意味着,在此期间 core-js 将无人维护。
唯一不用入狱的办法,就是找一个好律师,与“受害者”方商量和解。据 Denis Pushkarev 回忆,当时他需要支付“受害者”亲属要求的 8 万美元索赔,以及一笔高昂的律师费。
“也许对于一个优秀的软件工程师来说,这笔钱并不多,但此前我在很长一段时间里,都在全职从事开源工作,没有人给我工资,我也为此几乎花光了所有的积蓄。”
为了筹集这笔钱,Denis Pushkarev 试了很多途径。他在 GitHub 和 NPM 的自述文件都提到:“core-js 没有公司支持,所以这个项目的未来取决于你。如果你对 core-js 感兴趣,请成为赞助者或支持者。”
结果,一个月只收到了 57 美元。Denis Pushkarev 对此调侃道:“这就是确保整个网络兼容性的全职工资。”
显然,靠这种方式是凑不到 Denis Pushkarev 需要的钱的,于是他在 core-js 的 NPM 安装日志里加了几行字,除了希望开发者给予资助,也表示自己正在找一份合适的工作:
早已预料到会有人不喜欢这种求助方式,Denis Pushkarev 也计划几周后就删掉这几行字,但他还是没想到“网暴”会来得如此迅猛且铺天盖地:每天他都会收到数百条恶意的信息、帖子和评论,声称他没有权利向他们寻求任何形式的帮助,求助请求也冒犯了他们,甚至想限制 Denis Pushkarev 对 core-js 软件库和软件包的访问,要求他把管理权限转移给其他人。
“可笑的是,他们根本不理解这个项目的规模有多大,社区里也根本没有人愿意维护它。”
筹集不到资金的 Denis Pushkarev 认罪了,在入狱之前他联系了很多开源开发者,希望对方能在他服刑期间帮助维护 core-js,但都被拒绝了。最后 Denis Pushkarev 只好找了他根本不搞开源的朋友,确保 core-js 不会出现重大问题即可。
于是,2020 年 1 月,Denis Pushkarev 入狱了,并在 10 个月之后提前出狱。
每月 400 美元,如何养家糊口?
出狱后,Denis Pushkarev 很快又继续全职做 core-js 更新和维护工作,主要收入来自 Tidelift 每月提供的 1000 美元,以及通过 Open Collective 和 Patreon 获得的 700 美元,即每月大约能收到 1700 美元。
可后来,由于俄乌局势紧张,Tidelift 向俄罗斯的跨境汇款受阻,Denis Pushkarev 失去了每月 1000 美元的收入,Open Collective 和 Patreon 上的捐款也逐月减少——据 Denis Pushkarev 估算,这个月他的收入可能只有 400 美元,但他花费在 core-js 上的时间几乎是每月 250 个小时。
更重要的是,Denis Pushkarev 已经不是“一人吃饱全家不饿”了:
“我有了一个家庭,并在一年多前成为了儿子的父亲。现在我必须为他提供体面的生活水平。”
“我的父母也已经到了需要我赡养他们的年龄。”
在这种生存压力下,每月 400 美元的收入显然不足以支撑起一个家庭,Denis Pushkarev 收到了很多建议:“去上班吧,别在网上乞讨了”,“放弃做开源吧,这只是一种爱好,不能当饭吃”,“那些什么都不懂的程序员,每天只工作几小时,工资都是你的几倍”……
Denis Pushkarev 当然知道,甚至他也收到了很多公司的邀请,但是:“这些工作,让我不能兼顾开源的事情。”
“想给开源最后一次机会”
在这篇长文的最后,Denis Pushkarev 总结了他这 9 年开源生涯所遇到的种种:
从 2014 年开始,他一直为大多数 Web 提供平台的前沿功能,确保没有兼容性问题,现在却挣扎在温饱线上。
core-js 帮助了很多 JavaScript 开发者,但他看到的不是感激之情,反而是各种充满恶意的辱骂。
借助 core-js 赚取数百万美元的公司,并不理会他的资金请求。
即便他只是在危急时刻想要寻求帮助,大多数人也只是忽视和厌恶。
这些年来,没有任何标准开发人员跟他一起为 JavaScript 创造更美好的未来。
对于以上这些,Denis Pushkarev 说:“我喜欢开源,但我已经不知道这样做是为了谁或是为了什么了。”
恶意评论他可以忍,否则他早已放弃开源;缺乏跟标准开发人员的互动他也可以忍,毕竟目前还没有因此出过大错;唯一不能忍的,是没钱。Denis Pushkarev 抱怨道:“我已经受够了以牺牲我和家人的幸福为代价,来帮助无数公司了。我想要确保我家人的生活,想让我儿子有一个光明的未来。”
基于这些考虑,Denis Pushkarev 给出了四个解决方案:
第一,给予他适当的财务支持;第二,他找到一份可以兼顾开源维护的全职工作;第三,如果没有适当的支持,core-js 将转为商业项目;第四,如果不被需要,core-js 将慢慢“死亡”。
至于最终他将选择哪条路,就全部取决于开发者的反馈了。他表示:“免费开源软件的根基已经崩塌了。我本可以默默地停止这项工作,但我还是想给开源最后一次机会。”
引发网友热议
Denis Pushkarev 的这篇万字长文,引起了许多开发者的注意——他们再一次意识到,开源开发者的真实生存现状,哪怕这是一位拥有下载量超过 90 亿次的开源项目的作者。
“我赞成他直接放弃这个项目。既然让开发者及其公司赞助的想法已经失败了,那就停止所有的维护,看看会发生什么。”
“老实说,我认为他应该把 core-js 变成商业项目。既然人们看不起这个项目不愿赞助,那就干脆抽出来算了!”
“如果他把 core-js 变成商业项目,我会笑死的。一夜之间,至少有 50% 的主要网站将面临危机。”
“我觉得每个人都应该读读这个。这个人这么多年来所遭受的一切都很疯狂,而他仍然每天都按时上线维护项目。”
那么,对于 Denis Pushkarev 的遭遇,你又有什么感想呢?
参考链接:
https://github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md
https://www.reddit.com/r/programming/comments/111k9aq/corejs_maintainer_so_whats_next/
https://www.npmjs.com/package/core-js
4000520066 欢迎批评指正
All Rights Reserved 新浪公司 版权所有