关于开源的一些个人想法

最近推上又看到了一些对于开源的错误认知，让我哭笑不得。2024 年了，有那么多哪怕是在 IT 行业的人依然搞不清开源是个什么。

当然，对于现状如何解释，是区分一个人是否有带来进步的意愿的关键。

比如在开源领域中，log4j 等项目的漏洞产生的巨大影响表现出了现状是 “人类比想象的要贪婪和愚蠢”。使用这些开源项目的大大小小的公司，通过开源项目获得了极大的利润，但却不愿意掏出哪怕一个硬币来捐助这些项目（log4j 漏洞事件前一共只收到三笔捐助），导致其缺乏维护，最终给自己带来了极大的损失。

那么：
1，对于此现状，将其解释为 “人类就是这样” 的想法没什么帮助。上面的大大小小的公司差不多也是这么想的 -- 这些公司自然也知道自己使用的开源项目无人捐助，但想着 “没有我捐助总有其他人捐助吧？”“别人也是不捐助就直接使用，我这么做有什么问题？”。
排除掉道德审判，仅仅从 “投入 -> 产出” 来考察，一个有点规模的公司，对于一个自己严重依赖的项目，每年几百～上千刀的捐助投入，就有可能带来自己使用的组件稳定性的极大提高，以及免去它们不再更新导致需要更换组件实现等工数上的消耗。
（题外话：当然，我觉得能够真正从自己内心完全排除道德审判的，全都是人渣。人类社会的稳定在于法律，良性的发展则在于道德。“如果一直都是土匪赢，那我们应该还活在石器时代” by @ksintmelody 。)

2，对于此现状，将其解释为 “所以我们更要注重对大众认知的宣传，对法律的完善，对贪婪的人加以约束”，则明显表现出对于开源更加关注的态度和愿意改善现状的意愿。
事实上开源领域一直有人在推动如何让这个环境良性运转起来，各种许可证的诞生就是其中最重要的一环。
许可证规范化了各种行为，不光规定了使用者不能对于开源项目为所欲为，同时也让开源软件盈利有了一个坚实的基础 -- 当然，这一切都建立在有法律支持以及严格切实的法律执行的情况下，要是去朝鲜之类的国家给开源维权自然得不到什么好结果。
（题外话 2：知识和艺术共享同样有许可证，如著名的 CC-BY 系列，很多人可能以为这个只适用于图片，不管文字，但实际上两者都管。所以不是任何公开平台上的文字类知识和图片都能被拿来随便用。）

然而在新的时代，开源的现状非常不乐观。

据统计（*2）：
自 2011 年以来，代码行数的增长就开始持续放缓；2015 年之后，代码行数则完全停止增长。同时，commit 的数量也在随时间的增长而下降。2015 年之后，commit 量进入自由落体状态，跌回了 2007 年时的水平。这和 2015 之后开始的云以及 AI 的欣欣向荣形成强烈反差。

有些人可能会说，这里主要统计的是开源项目，但有很多项目因为不再被需要所以不被更新了，新的项目状况要好很多。
的确有这种可能性，但另一个对于当时流行的开源项目的统计表示 (*3)：
"超过 50% 的项目是红色的：它们无法让维护者维持在贫困线以上。31% 的项目是橙色的，这些项目的开发者愿意为低薪工作，而这些薪水在我们这个行业内是令人难以接受的。12% 是绿色的，只有 3% 是蓝色的：Webpack 和 Vue.js。"--50% 的项目是字面意义上饭都吃不起的。

"对所有的维护者来说，投入到开源上的总资金是不够的。如果我们把数据集中的这些项目的年收入加在一起，就是 250 万美元。工资中位数约为 $9k，低于贫困线。如果将这笔钱平均分配，大约是 $22k，仍然低于行业标准。"-- 即使平均分配，也只有 2w2 美刀一年。而这并不是只简单的看 github 上获得的捐助，同样也尽可能统计了项目在如 patreon 平台上所获得的资金。

开源趋势整体触目惊心。

对于开源个体，自然可以有很多建议，如不要再进行开源项目，而是直接构建产品。
但对于开源本身呢？

“开源可持续性的斗争是将人类从奴役、殖民和剥削中解放出来的千年斗争。勤劳诚实的人们付出了自己的一切，换来的却是不公平的报酬，这已经不是第一次了。”(*3)

这种开发开源的人连饭都吃不上但利用开源的人赚的很多的循环是没法长期持续下去的，最终开源只能凋零。
而可笑的是，一些用开源吃饭的人还不知道开源都差不多要被饿死了 -- 当然，可能他们知道了也不关心，毕竟人类远比想象的贪婪和愚蠢。

毫无疑问，开源所面对的困境是困难而长期的，解决这些问题也要足够的时间和付出。
“贫困线下的软件”（*3）一文在最后提出了一些措施，如：

只接受那些将很大一部分利润（至少 0.5% ）捐赠给开源的公司，或者那些根本不依赖开源的公司的工作
如果你有足够的薪水，捐赠给开源
不要放弃加入工会（我在芬兰写这篇文章，那里 65% 的工人都加入了工会）
不要放弃新项目的替代许可证
向微软施压，要求其向开源项目捐赠数百万美元
通过发布这类数据研究，揭露企业行为的真相
个人觉得可以补充一些：
1，严格审视自己项目的许可证，不要动不动就无脑 MIT。
2，对于侵权，勇敢的揭露和维权，善用社交媒体和法律的力量。
3，法律走不通的地方就别讲法，学习一些安全相关，保留对等报复的能力。就算是真菩萨，佛家也讲金刚怒目。

附。对于开源一些典型的认知错误：
例 0：开源开源，你源代码都给我了我为啥不能随便用？
典中典。严格来讲，不是把 Source 给 Open 了就一定叫做开源。此外，开源是有许可证规定其使用范围的。关于各种许可证的详细，见参考文献。
例 1：开源就不应该赚钱，凭什么要捐助？
解析：开源和赚钱不矛盾，从来没有开源项目就不应该赚钱的规定。至于捐助的确是自愿，更多的上文已经讨论过，不再赘述。
例 2：真正想开源的不会因为 xx 原因不开源，所以吧啦吧啦（多半是些不用太守规矩啊之类的言论）。
解析：试图捧杀给自己的行为开脱。开源领域自然多的是菩萨心肠的，但和你不守规矩有什么关系？
例 3：我使用了开源项目后还帮它做了宣传，帮助了扩散，所以吧啦吧啦（多半是些不用太守规矩啊之类的言论）。
解析：试图用自己也提供了贡献来给自己的行为开脱。感谢帮忙宣传，但功过不相抵，其他行为请遵守该项目的许可证。
例 4：开源捐助要很多钱吧？我又没那么多钱，捐太少被人笑话，不捐了吧。
解析：哪怕捐 1cent 对于开源项目都是帮助，从来没有笑话捐的少的，捐了钱的都是菩萨，这事情就讲究一个聚沙成塔。而且不少开源作者并不是完全依靠开源项目活命，对于他们来说金额可能是其次，但任何一笔捐助都都是对他们极大的鼓舞。

以此文致敬我所认识的（以及不认识的）中文开源项目作者们，请大家多支持他们。

最后给我的 https://github.com/cryptonerdcn/wasm-cairo 打个广告：这是一个为 StarkWare 的通用 ZK 语言 Cairo 建立 WASM 运行时的开发套件。

你可以通过 Onlydus 来参与或捐助这个项目。Onlydust 是一个 web3 的开源项目协作平台:
https://app.onlydust.com/p/wasm-cairo

参考文献：
1，Github 对于开源许可证的说明：https://docs.github.com/zh/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/licensing-a-repository
2，开源已死：https://www.oschina.net/news/118100/open-source-is-not-growing-anymore
3，贫困线下的软件：https://github.com/xitu/gold-miner/blob/master/TODO1/software-below-the-poverty-line.md