整个自由软件社区,弥漫着一种不信任的气氛:不信任大公司,不信任 ZF ,不信任专有软件。
这些不信任的根源在于,自由软件社区不信任集中化,更喜欢去中心的设计。-- 《去中心化的迷思》

www.ruanyifeng.com/blog/2022/04/weekly-issue-201.html
在 2022 年看这句话就觉得很讽刺。
事实上前段时间的两起 NPM 库的事件恰恰说明自由软件社区也不值得信任,甚至比大公司更不值得信任。
大公司有 PR 的负担,很多第三方库都是由个人维护,并不需要为自己的行为付多大责任。
这个时代又要回到 C++程序员的信条:只有自己写的代码最可靠(重复造轮子)。
Q05NIOeahCBTQiDml7bku6M=

把所有开源项目去掉 你看看还有哪个商业软件 /硬件能够运行起来的

node_modules 宇宙中最重的东西,nodejs 什么权限都有,也能运行二进制,里面的源码你 99%都不会看。但是能跑这么长不是一个奇迹吗?

这边倒是建议公司把所有开源软件都移除。

你看看哪个大公司能 run 起来,可能也就微软痛苦下估计可以吧

在我理解看来,开源社区的良性运转,依托的就是信任。
一旦有人打破了信任平衡,且没有受到任何的损失。整个整个社区就会进入信任滑坡,最终沦为粪坑。

所以 github 临时封禁了 Marak Squires 的登录权限。
开源社区则把其踢出局,成立了一个由 8 位参与者组成的团队来维护:faker-js/faker

所以楼主多虑了,开源社区的信任问题有很强的自我纠正性。

正向来讲,信任是开源社区存在意义的基石,所以大家都会努力维护。
反过来说,即便出现了恶意制造的危机,因为其便利的副本操作( Fork ),自愈性也很强。

这有啥问题吗,你不要把“不信任”看成贬义词
至于说谁比谁更不值得信任,这都是萝卜白菜各有所爱
另外你以为大公司用开源软件堆积成的基础是基于信任?错,是基于“他们也给这个开源项目贡献了代码,他们会从头到尾审查一遍这个项目的代码,才决定用它”。这确实是一种不信任,没有贬义。

不用因噎废食吧,部分学术造假也没有撼动科学共同体啊

开源社区真正信任的是大家的能力,如果整个社区都不值得信任了,说明这个社区的成员已经没有能力价值了,作为行业相关人员的我们也就可以回家种田了。v 站也可以关门了。

讲道理,这么做大公司还真可以 run 起来,首先很多开源项目都是大公司做的,第二大公司有足够的人力来重新造轮子。最难受的其实是中小公司。之前 Log4j 的 0-day 出来后,Google 就没咋受影响,因为用的是自己内部的库。

问题是这纠错都是在事后发生,而且一颗老鼠屎坏了一锅汤。当年扶老人被讹也是个例,但结果就是大家都不愿意扶。信任的建立需要数年,而毁掉它只要一天。

影响范围不一样。哪怕生物科学那几个造假的大牛,最多就是骗了经费。一个受欢迎的开源库能影响几千万的用户和开发。

嗯,表现形式有差。科学的正负影响是缓慢而长远的。开源的问题会立马显现,但也很快被发现和修复。

比如,你看到了 Log4j 没对 Google 造成负面影响,但你也应该看到,如果没有 Google 公开发表的大数据三篇论文,整个行业的大数据进度可能会迟滞很多年。

如果没有 Google 公开发表的大数据三篇论文,和后来的 Hadoop 的开源项目,整个行业的大数据进度可能会迟滞很多年。

#10
这个问题我认为可以用更严苛的执行力来实现一定程度的规避。

1 、生产环境中,可以沿袭过去的传统,使用更成熟的旧版本。
2 、自己 Fork ,自己编译。

当你便利的在项目中引用一个远程的、第三方编译的、新版本的库时,其实你就已经失去了对你项目最基本的控制了。

我从来都很珍惜开源软件运动,所以才想吐槽现在的状况。之前的两起投毒让人恶心。

这两种方案消灭了问题,没有解决信任问题。而且长期使用旧版本和 fork 后不 merge 都只是另一种形式的重复造轮子。

我觉得一部分原因是这些开源软件的维护人没能得到应有的物质奖励,如果他们的工资来自维护代码库,那我觉得主动投毒可能性应该会更低。

楼主忽略了一个重点,开源社区的 自愈 能力很强!

  1. 没有完美的体系,如果整个世界不搞开源,都搞闭源,就不怕投毒了吗?显然不行啊。

由 1 推导出 2. 开源不是完美的,但没有更好的方案,转向闭源无法解决开源的问题。

  1. 投毒就投毒吧,怕啥?世界照常运作,有问题就解决问题,并且下一个问题必然会出现,这就是现实世界。
  2. 大公司自己写一切代码,能解决问题吗?也不能,因为代码是人写的,大公司里写代码的人可能有几千人,如果你认为开源世界有投毒风险,那么大公司里的人也有可能投毒,这怎么防?

开源,一个代码的使用者越多,发现问题就越容易,相当于有超级多的测试员。而闭源代码,测试员就少多了,更难发现问题。

“自由软件社区不信任集中化,更喜欢去中心的设计。” 投毒的发生不就是因为代码发布权限的集中化、中心化吗?

因为开源并不是用来解决信任问题的,需要的是代码审阅。

中心化:一个绝对的中心
去中心化:多个可选的中心
原子化:没有中心

#17 学习了

#9 但是你看苹果就寄了,Big Tech 并不意味着就脱离了开源啊

个人理解,开源相对于闭源,多了大家的监督,出现问题可以快速发现问题,至于是否解决问题、如何解决问题是开源社区和开源作者主导的,这个要另说了,即使他们不想解决或者没有及时解决,那早点发现问题避免错误不也是更好的选择么

额,阮老师的博客,打开后再直接关闭,对不起了

本来就是基于自由、去中心,不会信任哪个中心的

哇.看到你这个帖子我才想起来好久不看这个周刊了