CatCoding

大家都在用我的代码,所以我就该富有吗?

2022-01-12

这些天因为 faker.js 开源作者 Marak 删除代码事件让开源出圈了,好多非 IT 的自媒体都跟风写上了。我花了些时间查找资料,也说说自己的理解。

首先我们回顾一下整个事件:

  • 8 年前 Marak 的 JavaScript 库 Faker.js 完成 1.0.0 版本,该库可以制造非常多不同类型的假数据,用于开发调试。使用的是 MIT License,这个 License 简而言之你可以随意用我的代码,但是风险你自己承担,我也不会收费。
  • Marak 曾在 2020 年 10 月 25 日的时候在推特发帖声称自己在公寓火灾中丢失了所有东西,几乎无家可归,在申请外界支援,从回复上看很多人已经伸出了援手。

  • 2020 年底开始,Marak 一直在寻求一些方式来通过 Faker.js 赚钱,众筹或者寻求大公司赞助,甚至是希望被收购。这过程中收到了一些拒绝。

  • 从 2021 年左右开始,Marak 开始关注币圈了,说要卖掉房子来投资 NFT。可以看出这时候他应该从火灾的窘境中脱离了?

  • 也许是因为通过 faker.js 筹钱不顺,前几天 Marak 强制把代码仓库清空,并写上了句关于 Aaron Swartz 的话。

Aaron Swartz 被称为互联网之子,作为开放获取运动的长期支持者,因为大规模系统性地下载JSTOR上的学术期刊] 而被判非法入侵罪,他拒绝认罪并随后自杀。Aaron Swartz 倡导的开发和平等的互联网思想深深的影响了一代 IT 从业人员,使得越来越多人愿意将自己的软件授权、技术书籍、平台信息选择对外开放。

所以 Marak 的做法也许在拷问,这个世界怎么了,我们分享精神得不到应该得到的回报?

如果作者不想再继续维护开源软件,通常的做法是不做更新、或者转移项目所有权给其他人。但是 Marak 的做法是清空代码库,这导致一大波公司不能使用。最后,作者还因为向自己开源项目提交恶意代码,使得 GitHub 账户被暂停使用,从而在技术圈引发热议。

这里我再加一些具体的细节。这个库虽然有用,但是并不是什么高深技术。即使没有他这个东西,一个资深的前端程序员完全可以自己搞出来一个。在开源的世界一个东西流行,其实有很多因素,可能出现的时机对了,当然也可能确实有些独特好用的地方。这样功能的一个库,往往只要一个火了,其使用量就会很大,排第二的可能就没多少人知道了。

另外作者来开始的时候,也是不知道这东西这么多人用的,选择的 License 就很随意,要是选择 GPL 在道义上就没问题。所以十年后,用的人多了的情况下,他就形成了这样一种心理:世界上这么多人用我的代码,但我却这么穷,这不公平。

大家都用我的代码,所以我就该富有吗?

理论上确实是如此,你创造了一个大家都在用的东西,理应收到物质上的回馈。但现实中就很复杂,你这东西如果从开始就说要收费,可能根本没这么多人用。所以这就是一个鸡生蛋还是蛋生鸡的问题,而且这库也不是一个必需品,事实上这是开发过程中的辅助库,基本不会发布到生产环境,替换起来又没到伤筋动骨的程度。

所以 Marak 在尝试通过这个库来赚钱的时候会很困难。即使这样,faker.js 并不是没融到钱,只是可能没达到最近玩币圈的 Marak 的胃口。参考faker.js - Open Collective

真正能赚钱的通常不是基础库,而是直接面向用户的成品,比如 Obsidian 这个产品,我作为愿意付费,但是我没捐赠给他用的那些开源库。而给基础开源库捐赠的企业太少了,参考之前的 OpenSSL 事件。

个人为什么开源

实际上,能通过开源软件直接赚钱的个人开发者少之又少。如果这样,作为个人开发者,为什么我们要开源?

开源运动始于早期黑客的反抗精神和分享精神,Unix 不是闭源么,所以早期黑客把代码印成书来分发,这是一种对商业软件的反抗。随着互联网和 Linux 的发展,开源已成为软件开发的常态,甚至是开发者的自豪。可以说开源和 Wikipedia 是目前人类两项最大的集体智慧活动,无数人在无偿地、自愿地付出时间和精力去做共享。

大多开源是为了交流和单纯的分享,想给其他人看看怎么样,也许社区会有反馈,也去其他人可以帮忙完善一部分等等。

另一部分原因是为了名声,如果一个开源作品得到很多关注,可以给自己增光不少。如果一个开源项目被大公司用了,通常会怎样?作者会把大公司的名称列到 README 的用户列表中。开发者可能内心会希望大公司多少能捐赠些,但其实大公司白嫖也能给项目带来曝光度和知名度。

公司为什么要开源

公司是否开源是个很复杂的问题。很多公司开源是为了形成社区和生态,比如 VSCode,要是不开放源肯定没有现在的几乎垄断的态势。比如 TiDB、TDEngine,他们巴不得各位来学习、研究他们的代码,这样会渐渐形成开发生态。用户一看关注度这么高,用的信心也增强了。但你说这源码都给用户了,该怎么挣钱啊。事实上他们总会有付费的功能不会在社区版本,然后用户中只要有一小部分能赚钱就可以了。

我理解这是行业发展到一定程度必然出现的结果,就是先让大家用起来,然后再通过技术支持和付费功能收费。开源软件的商业化也不好走,比如 Docker 影响力这么大的开源项目也难以找到合适的盈利模式。

开源是否拉低了行业门槛

半佛仙人提到其他行业的聪明人,比如律师、医生都在提高行业门槛,为什么 IT 行业的傻傻程序员在免费分享,降低行业门槛?

现实确实如此,现在学习编程的资料多如牛毛、唾手可得,任何想学编程的都可以面对电脑开始学。开源的、可复用的代码太多,任何人稍微学学可能就能弄出一个产品。比如搭网站,在二十年前可能需要一个专业的程序员,耗费好几天才可以搞定。现在既然有了这么多代码可以参考,这么多现有的框架可以用,可能一个学了一个月的初级程序员花上一天就能搞定。

那这到底是门槛低了还是生产率提高了?

我认为都有。但我不认为这是这个行业内卷的原因,内卷化的本质是生存与发展问题,国内很多人涌进来学 IT 本身因为这个行业相对好找工作、工资高点。开源提高了程序员生产力,同时也加速了各行各业的数字化进程,蛋糕越来越大了。中国 IT 行业内卷是因为年轻人多,而公司做的都是业务型工作多,导致老人容易被新人替代。你看腐朽的资本主义国家,IT 行业还是处于极度缺人状态,行业从业人员也不用 996。


有人说:开源软件是程序员的自媒体。

我觉得这种说法很恰当,作为开发者你可以开个自媒体,也可以不跟这个风气。现状是有小部分人因为自媒体富了起来,绝大部分在用爱发电。

假如,作为一个自媒体的作者,我一直说我的东西是免费的,结果 10 年后进入币圈觉得自己穷,高呼你们这些粉丝和读者都是白嫖党,看了我的文章的都该给我钱,没多少人给钱我就把老文章给删了。

这,就很诡异!

所以我觉得这事件的结论是:币圈容易让人黑化。

公号同步更新,欢迎关注👻