关注科技圈的差友,前段时间应该听过这么一个事情。
开源项目 faker.js 和 color.js 的开发者 Marak,一夜之间清空了所有项目,并塞进一些恶意代码。
虽说 Marak 名声不大,但这两项目可是在开源界极其火爆。
Faker.js 可以帮开发者生成伪数据,Color.js 可以帮助网页着色。它俩在 NPM ( 组件库网站 )上每周下载量加一起近乎 2700 万。
所以 Marak 这通操作,让很多用户突然无法工作,引起了不小的混乱。用户应用输出乱码 ▼
当然,Marak 这么做可不是因为中午多喝了 2 杯。
而是作品一直被各大公司白嫖的同时,经济上还遇到了困难,心里不平衡引发的。
这故事里细节还挺多的,差评君简单给大家讲讲。
2020 年 10 月,Marak 发推特说它的公寓失火,家当都烧没了。希望大家走过路过,多少意思一下。
但看这寥寥无几的转发和点赞数,我估摸他是没收到多少钱。
接着,他又从小道消息得知,不少大公司都在大量使用他的项目。
而他作为作者,不仅没捞到啥钱,甚至现在都要流浪街头了。
换做是谁,可能心里都有点不爽。
于是 Marak 就发了一个通告说,不想搞免费了。
你们这些白嫖怪要么给个 6 位数的合同,要么 Fork ( 类似于复刻 )一份代码自己研究去。
然而,理他的人并不多。
后来为了生存,他基于 Faker.js 做了一个网页版的应用 Faker Cloud。
但没多久他发现别的公司也开发了一款类似的,服务正是基于 Faker.js,于是他向那个公司发邮件,问要不收购 Faker Cloud 算了。
但是对方只是敷衍了一下,没有再回应。
最后,这个拥有顶级开源项目的老哥,由于一穷,二赚不到钱,三总被白嫖,选择了删库。。
关于这件事,网友观点也不太一致。
有人说他不守规则:你都开源了,别人再怎么白嫖你,也是按规矩来的。
但也有很多的人认为“ 为众人抱薪者,不可使其冻毙于风雪 ”。
意思就是这些开发者是为大家提供便利,在他们遇到困难时,那些白嫖他们成果的公司,理应提供点支持。
不知道各位差友怎么看,差评君先就事论事:老哥删库可以,但他想法不对,推送恶意代码更不对。另外那些公司白嫖 Faker.js 在法律上没啥毛病。
看到这可能有的差友急了,你这是公开支持白嫖怪?当然不是,看看文章结尾的点赞和在看,你就知道差评君向来不鼓励大家白嫖。
在解释观点之前,大伙儿不妨先认识一下开源这个玩意。
为了更好的理解,我们把代码比喻成菜谱。
你擅长做一个菜,并为此写下一份菜谱。
开源呢,就是你把这份菜谱公开出来,用的原材料和配方,别人都能看到,也能复制一份。
当然,别人也可以根据自己口味,在你的菜谱上做点改动。
这就是开源。
但通常来讲,为了维护开源社区,代码不被滥用,大家开源时还会加一份开源协议。
大大小小的开源协议有上百个,非常复杂。目前主流的有:MIT、GPL、BSD、Apache。
它们主要区别就是,别人修改代码后是否可以闭源( 私藏起来 ),是否要遵循同样的开源协议。
图源阮一峰博客 ▼
比如你选了 GPL 协议,那别人改动你的菜谱之后,他也要公开出来,不能藏着掖着。
但如果你选了宽松点的 MIT 协议,别人改动菜谱后就无需公开,还能把它作为“ 秘方 ”,开个排档赚点钱啥的。删库这件事中的老哥 Marak,选的是 MIT 协议。
这个协议里可没规定别的公司不能用 Faker.js 赚钱,也没规定使用 Faker.js 后要付钱给 Marak。
所以人家白嫖,在法律上,确实是没啥毛病。那为什么说 Marak 想法不对呢。
首先啊,一个项目开源了,相当于给别人提供了自己的结晶,方便了大家。
第二,项目开源后,参与的人自然变多了。那大家一起改善优化,技术也会进步得快。
所以,开源本质是给大家提供便利,促进技术发展。
但 Marak 呢?他选择了 MIT 协议,就理应做好会被别人“ 白嫖 ”的准备。却因别人用他项目赚钱,自己没赚到钱,一怒之下删库甚至放入恶意代码。
这,恐怕有点违背了开源精神吧。如果每个开源维护者都像 Marak 这样,不全乱套了么。Marak 真想赚钱,其实办法挺多的。
就凭这 2 个火爆的开源项目,我想他不难找到一份好工作吧?
或者,他也可以像 Redhat 一样,提供免费版产品,当用户遇到技术问题,再提供付费支持。
要实在不行,就想躺平,也可以和之前一样,每个平台都放上赞助码。只不过人家帮你是情分,不帮是本分。
当然了,差评君写这篇文章并不是要背刺一下 Marak,而是因为这件事映射出了开源界的现状:
绝大多数开发者们和 Marak 一样,在开源项目上几乎就没啥回报。美国有一家公司叫 Tidelift,他们的产品可以帮别人管理开源项目,所以平时会和大量优秀的开发者打交道。
去年,他们做了一份《 开源维护者现状调查 》报告,有 400 人参与了调查。调查发现,46% 的开源维护者在开源项目里赚不到 1 分钱。
我们假设 1 万美元可以供一个人吃住行 1 年,那只有 13% ( 7%+1%+5% )的开发者能达标。
也就是说,10 个开发者中,仅有 1 个人能靠开源生活。真实情况可能更惨。
差评君写文章时采访了一个 7 年程序员同学,他说开源是好的,利于互联网发展。但当我问到他,开源就是用爱发电吗,如何赚钱呢。他说:我不太懂其中的商业模式。
事实上,大部分开发者和他一样。他们没有商业思维,开源时就没太考虑要怎么赚钱。关于开源带给自己的物质利益,他们能想到的,除了是把它作为个人简历,好找一份得当的工作,最多也就是放上一个收款码赚点零花钱( 收入全靠他人自愿 )。
他们想法都很纯粹,就是要促进技术发展。当然,大家都是普通人,谁会不爱钱呢?如果开源能多赚点钱,那肯定开心。
但,赚不到钱,他们也不会怎么样。当初选择开源,就已经决定用爱发电了,该更新的还会更新,该修补的漏洞还会去修补。
前段时间 log4J2 漏洞事件大家都知道吧。出事之后,有人追责甩锅,有人担心漏洞影响,却很少有人关心 log4J2 的维护者。
说出来你不信,Log4J2 这么大一个开源项目,只有 3、4 个程序员在业余时间来管理和维护。曝出漏洞后,他们第一时间就在努力修复,他们有问别人要过回报么?
虽然吃力不讨好,但他们依然坚持着。。这样的事情,这样的开源维护者,还有很多很多。我知道,我们没有赞助他们的义务,但差评君还是希望,大家可以在力所能及的地方,多给给这些人一些关注和支持。
他们把工具和知识分享出来,为别人带来便利,也加快了技术进步。他们为互联网发展带来了很大的贡献,他们在做一件非常有意义的事。
如果真要问,是什么让他们选择开源,是什么让他们坚持下来。也许 Tidelift 上的投票会给你答案。
71% 的开发者选择了 Making a positive impact on the world。——为世界创造积极的影响。