Faker.js 作者“删库跑路”引开源圈“震动”:该开源项目现已被社区控制

抽象季风
• 阅读 5623

5 年前,一位程序员因删除了自己开源项目 left pad 中的一些代码而让大半个互联网瘫痪、导致无数代码库崩溃并引发热议。现在,同样的事情再次发生了 —— 上上周,知名工具库 Faker.js 的作者做了同样的事情,现在的结果也和5年前差不多。

Faker.js 作者“删库跑路”引开源圈“震动”:该开源项目现已被社区控制

据最新报道显示,目前 Faker.js 项目现在已成为由 8 名来自不同背景和公司的工程师组成的团队社区所控制。而 Faker.js 的作者 Marak 已正式“出局”。

Faker.js 作者“删库跑路”引开源圈“震动”

1 月初,Faker.js 的作者 Marak Squires 主动恶意破坏自己的项目后“删库跑路”。该事件发生之后,瞬间引发了开源圈“震动”。

据悉,Marak 不仅将自己的 Faker.js 项目仓库的所有代码清空,留下了一个简短的自述文件"What really happened with Aaron Swartz?",还注入了导致程序死循环的恶意代码,引起众多应用程序崩溃。

Faker.js 作者“删库跑路”引开源圈“震动”:该开源项目现已被社区控制

Faker.js 作者“删库跑路”引开源圈“震动”:该开源项目现已被社区控制

作为一个非常有用的工具,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 作者“删库跑路”引开源圈“震动”:该开源项目现已被社区控制

现在,社区控制的 Faker.js 项目已获得了不少开发者的认可。以下是项目仓库的 star 数增长情况:

Faker.js 作者“删库跑路”引开源圈“震动”:该开源项目现已被社区控制

自接管 Faker.js 以来,新团队已对 issue 进行了分类和审查 PR、提供在线文档、迁移至 TypeScript、创建公开的推特帐号、在 npm 上发布软件包、清理 Prettier、CI、Netlify Deploy Previews 和 GitHub Actions 等工作。

同时,新团队还制定了一个发展规划图:

Faker.js 作者“删库跑路”引开源圈“震动”:该开源项目现已被社区控制

  • 对 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。

点赞
收藏
评论区
推荐文章
Mysql到TiDB迁移,双写数据库兜底方案
TiDB作为开源NewSQL数据库的典型代表之一,同样支持SQL,支持事务ACID特性。在通讯协议上,TiDB选择与MySQL完全兼容,并尽可能兼容MySQL的语法。因此,基于MySQL数据库开发的系统,大多数可以平滑迁移至TiDB,而几乎不用修改代码。对用户来说,迁移成本极低,过渡自然。
Stella981 Stella981
3年前
PX4 Bootloader解析
1引言半年前入手了PixhawkV2全套硬件,编译好的开源固件也下了,四轴也飞了,一直想对这套开源飞控进行一个系统地解析,由于工作原因一直没时间。最近翻开了PX4飞控源代码,它基于NUTTX操作系统,在github上更新十分迅速。为了能够全面地掌握这套软硬件设计思想,同时对硬件系统有全面的认识,我决定对PX4Bootloader进行详细解
Wesley13 Wesley13
3年前
PG_RMAN使用手册
众所周知,Oracle下可以使用rman进行物理备份,支持数据库的全量、增量、归档的备份模式;而PostgreSQL作为开源数据库,也推出了开源功工具pg\_rman,同样具备了oraclerman大部分的功能。本文写的很早,近期才翻出来,挂到博客上,希望能帮助需要的朋友。1、下载安装软件root@mydb01~wget
Easter79 Easter79
3年前
Tiny官网的变迁
开源交互社区建设的变迁Tiny框架开源也快5年了,做开源其实也是在做社区,那么一个开源社区怎么样构建实际上也是一个非常重要的问题,不同的交互方式,可能直接导致最终开源社区的成熟度如何。最早的Tiny开源框架采用QQ群的方式进行交互,博客相关的内容在开源中国来进行展示。!(https://static.oschina.n
Stella981 Stella981
3年前
Git用户手册
6.1GitHub账户的创建和配置GitHub是最大的Git版本库托管商,是成千上万的开发者和项目能够合作进行的中心。大部分Git版本库都托管在GitHub,很多开源项目使用GitHub实现Git托管、问题追踪、代码审查以及其它事情。所以,尽管这不是Git开源项目的直接部分,
Easter79 Easter79
3年前
TiDB 初体验
其实从2017年就打算测试下TiDB了,因为工作安排的关系,这个事情在年后才开始计划来做。而根据时间线来看,2015年的那个时候,我正和老杨张罗DBAplus的事情,而东旭已经在构思TiDB的雏形了,几年过去了,TiDB已经很火热,发展势头很不错,难得有这样一批热爱技术的人通过自己的行动来助力开源社区。其实一直以来,我感觉国内的很多开源产品,开源项目
Wesley13 Wesley13
3年前
CTO用“汉德公式”来定责,我大写的服!
开发删库跑路,却让运维背锅?CTO用“汉德公式”来定责,我大写的服!原创Mr.K技术领导力昨天点击“技术领导力”关注∆每天早上8:30推送作者|Mr.K编辑|Emma来源|技术领导力(ID:jishulingdaoli)01开发删库跑路,却让运维背锅?一位同行跟老K讲了一个事情,非常有意思,也挺有启发的,跟大
Stella981 Stella981
3年前
DevOps 安全威胁,你值得关注!
随着开源软件被大量引用,线上运行的代码中超过80%的部分是开源代码。软件安全的重点已经从内部代码转移到所引用开源部分上。DevOps安全需要关注内部研发团队的自研代码以及外部第三方开源软件的安全,对于内部代码,所使用的依赖必须清楚,如果底层依赖有风险,还必须快速反向分析哪些其他软件受到同样的威胁;目前DevOps安全团队和持续交付团队往往独立运行,信息交
Stella981 Stella981
3年前
C++开源代码覆盖率工具OpenCppCoverage介绍(Windows)
关于代码覆盖率统计工具,Linux平台下,gcc内置支持gcov,通过编译时加参数选项,进行代码插桩,从而实现代码覆盖率。在Windows平台下,早在几年前,我还没找到特别好用又开源的覆盖率工具,所以以前公司是自己实现了一套,使用起来也不是很方便。最近又遇到同样的问题,不过非常幸运的是,一款开源的Windows平台的C代码覆盖率工具出现了在我的面前:
陈哥聊测试 陈哥聊测试
1年前
5W1H聊开源之What——开源协议有哪些?
开源许可协议是指开源社区为了维护作者和贡献者的合法权利,保证软件不被一些商业机构或个人窃取,影响软件的发展而开发的协议。
libvirt和qga的区别?
本文分享自天翼云开发者社区《》,作者:乐道Libvirt是一个开源项目,提供了一组API、工具、库,用于管理和控制虚拟化平台。在Openstack环境中,Libvirt是一个至关重要的组件,它为各种虚拟化技术(如KVM、QUME、Xen和LXC)提供统一的