5 年前,一位程序员因删除了自己开源项目 left pad 中的一些代码而让大半个互联网瘫痪、导致无数代码库崩溃并引发热议。现在,同样的事情再次发生了 —— 上上周,知名工具库 Faker.js 的作者做了同样的事情,现在的结果也和5年前差不多。
据最新报道显示,目前 Faker.js 项目现在已成为由 8 名来自不同背景和公司的工程师组成的团队社区所控制。而 Faker.js 的作者 Marak 已正式“出局”。
Faker.js 作者“删库跑路”引开源圈“震动”
1 月初,Faker.js 的作者 Marak Squires 主动恶意破坏自己的项目后“删库跑路”。该事件发生之后,瞬间引发了开源圈“震动”。
据悉,Marak 不仅将自己的 Faker.js 项目仓库的所有代码清空,留下了一个简短的自述文件"What really happened with Aaron Swartz?",还注入了导致程序死循环的恶意代码,引起众多应用程序崩溃。
作为一个非常有用的工具,Faker.js 可以生成可用于应用程序开发/测试方面的 Fake 数据,其受欢迎程度甚至被《财富》世界 500 强企业在内的数百家公司使用。
而一直以来,开发和维护 Faker.js 项目的作者 —— 程序员 Marak 向来都被认为是一位颇具争议的人物。报道称,Faker.js 项目作者 Marak 此前就有过删除自己热门项目的记录。早在 2020 年,Marak 就曾宣称他已经“受够了维护 Faker.js ”。
而在此次行动之前的“预兆”中,Marak 在一份代码提交中声明:“恕我直言,我将不会再为《财富》世界500强(以及其他规模较小的公司)提供免费支持。”
众所周知,js代码库是开源免费的,这需要有人支付几十万的薪水来继续支持维护。但作为免费使用该代码库的一些世界企业及公司们,却在代码库无法使用或出状况的时候第一时间出来指责作者而不用付出任何代价,这一点也确实让开源项目的作者感到失望。
由此也看来得出,Faker.js 作者此次事件的发生也并非“突然”了。
此前在 reddit 上,有不少热门帖也表示,Marak 清空 Faker.js 仓库的代码是因为缺乏资金和被别人滥用开源项目。
当然也有帖子称,这个被删除代码的 Faker.js 仓库也不是真正的 Faker.js 原仓库。据称,Marak 首先将真正的 Faker.js 仓库设置为私有,并为它修改了名字。然后再创建新的同名「Faker.js」仓库——所以仓库的 commit 信息只有最新的一条记录,而且 star 数量也远少于原本的 Faker.js 仓库。
尽管 Marak 清空了 Faker.js 项目仓库的代码,但其在 npm 上的软件包仍然保留着历史版本的下载。有报道称,Faker.js 最新的版本项目的周下载量也超过了200万。
Faker.js 现已成为社区控制的项目
目前,Faker.js 已成为社区控制的项目,新组成的团队则暂时将他们所维护的库称为“官方库”,且合并了所有活跃的分支,待后期事态平息、混淆减少之后,他们则会放弃使用“官方库”的名称。
现在,社区控制的 Faker.js 项目已获得了不少开发者的认可。以下是项目仓库的 star 数增长情况:
自接管 Faker.js 以来,新团队已对 issue 进行了分类和审查 PR、提供在线文档、迁移至 TypeScript、创建公开的推特帐号、在 npm 上发布软件包、清理 Prettier、CI、Netlify Deploy Previews 和 GitHub Actions 等工具。
同时,新团队还制定了一个发展规划图:
- 对 ESM 的支持
- Browserify=>Rollup/Vite
- 改进测试基础设施
- 提供类型生成文档
- 与 Faker 生态系统的现有维护者互动
- 在文档中提供交互式游乐场
- 与节点18兼容
在资金方面,与此前对 Faker.js 项目捐款一样。js项目是在开源集合平台上进行的,现有团队在与开源集合执行董事沟通后,制定了一个过渡计划:
- js 项目从 Open Collective 转移到 Faker.js遗留帐户(总计11652.69美元),将用于邀请 Marak 和另一名维护人员 Barin 加入
- 转让完成后,现有团队将成为 Faker.js 的管理员。开放集合平台上的 js 帐户(https://opencollective.com/fa...)
- 已通知现有团队,如果他们希望向 Marak 捐款,请选择https://opencollective.com/fa... 或http://opencollective。com/marak。(当然,他们也会同步并通知是否收到了注明为 Marak 捐赠的资金)
最后,团队承诺,他们将继续开发和维护 Faker.js 项目,让该项目变回从前那样酷。
js 项目引发开源文化脆弱的本质
此次 Faker.js 项目作者的 “恶意破坏”事件,也引发了一场业内关于“数字生态系统的脆弱性”的探讨。
努力在“商业世界”中生存的开源概念,却不得不被最原始的契约关系所“禁锢”,而支撑这种紧张关系的是一个简单的问题:一旦开源代码被采用,谁将最终对其负责?
是一个复杂的问题,也是一场关于开源与商业由来已久的“冲突”,涉及罪责、所有权、道德和人类动机的缺陷性质等话题。
而作为一个对其他项目极具依赖性的开源项目,这次 Faker.js 作者的 “恶意破坏”事件所暴露出来的问题也更为复杂。
所以现在对于“谁才是对的?”这个开源哲学中由来已久的问题,你会怎么看呢?欢迎在评论区留言互动。
关于 Faker.js
Faker.js 是十分流行的 Node.js 工具库,提供了各种类型的模拟数据,用于开发调试。最早的 Faker 项目于 2004 年由 Jason Kohles 首次使用 Perl 实现。后来 Marak 实现了 Node.js 版本,并投入了大量精力和时间来维护 Faker.js。