开源中的 “胖虎效应”

今天我们来聊一个非常有意思的现象:“胖虎效应”。

胖虎是经典动漫《哆啦 A 梦》中的 “反派角色”,常年对主角大雄实施校园霸凌,一副猪皮恶霸的形象深入人心,是很多小朋友厌恶的对象。然而在一些《哆啦 A 梦》剧场版的作品中,胖虎偶然间做了一件好事,就会给人一种 “这小子其实也不是那么坏” 的感觉,使得观众对其好感直线上升。

反之,一个平日里一直做好事的正人君子,突然被曝出做了一件坏事,那么这个人在人们心中 “坏” 的形象则会倍增,甚至会把他此前做过的所有好事全盘否定,给人一种 “这个人一直以来的好都是装出来的” 感觉。也就是俗话说的,“伪君子比真小人更可怕”。

“胖虎效应” 最初出自漫画《银魂》的一句恶搞台词,虽然该定律并没有什么靠谱的理论依据,但通过胖虎这个简单的例子,直观地反映了一种常见心理现象。这种现象映射到现实生活中,我们能看到很多例子与之相符,其中开源领域尤为契合。

开源中的 “胖虎效应”
“胖虎效应” 在开源领域最经典的例子就是微软的转变。

众所周知,微软曾是开源世界最大的敌人,这个专有软件巨头在 20 年前公然宣称以 Linux 为代表的开源软件是业界毒瘤,并通过媒体舆论、法律威胁等手段对开源社区进行了长达十余年的无情打压:开源经历了什么样的打压?

在很长一段时间里,微软在开源社区中的风评是这样的:

微软之所以(名声)那么臭,历史原因。可见,坏事不能做多了,做多了坏事,想做好事都很难。—— 2012-10-02

微软、开源这两个词怎么可能放在一起。—— 2014-06-11

M$ 啥时候会对开源有好感?应该说从来没有过。—— 2014-06-12
而在 2014 年更换 CEO 以后,微软顺应市场潮流转向支持开源,并将旗下 .NET 技术栈中的大量技术开源出来,积极投身开源社区建设,赢得了开源业界的诸多好感。哪怕其背后的核心逻辑仍然是从商业利益考量,通过开源来开拓开发者市场。如今,微软在开源界的一举一动都受到社区朋友们的广泛关注,开源的 .NET 技术体系也在国内外获得了大量的支持者,积累了不错的口碑。

微软这次走对了,转向 .NET —— 2014-11-13

建议去看看去年的 Linux 内核源码企业贡献榜,微软已经在前二十,还癌症…… 早就是陈芝麻烂谷子的事了。—— 2014-11-15

微软我爱你。—— 2014-11-16

微软总算是开放些了,转性了 —— 2015-02-04
“胖虎效应” 在开源领域的反面案例则更为常见。

去年我们曾报道了 Qt 从 5.15 版本开始将 LTS 转入商业化运营模式,即 Qt 官方长期支持的 LTS 稳定版二进制文件需要用户付费才可下载使用。此举一出 Qt 官方立刻遭到社区用户的强烈抗议,这个受众广泛的开源跨平台开发工具似乎在一夜之间口碑崩塌。

Qt 已死,不会再用了。—— 2021-01-06

向逐渐闭源走商业化的 Qt 说再见,期待社区版 Qt 面世。——2021-01-06
与之类似的还有红帽公司停止维护 CentOS,转而推出滚动更新的 CentOS Stream 的事件。

之前市场大,可以通过开源扩大影响力,现在竞品都死差不多了,开始要准备收割,商业化公司来主导这个事情,特别是上市公司,必然会以盈利为目的。大家都散了吧,白嫖之路越走越窄。—— 2020-12-10

我最厌恶的就是 Stream 这个单词 —— 2020-12-10

稳定版变成滚动更新版,这样看,在服务器领域 CentOS 的确是要死了。—— 2020-12-10
虽然这些开源项目曾在很长一段时间里为无数用户提供了优质、免费的服务,但当其背后的决策者最终 “图穷匕见”,迈出商业化的一步时,被社区 “正义的” 舆论吞噬似乎是一种必然的结果。

近来比较典型的案例就是在前端圈子闹得沸沸扬扬的 “开源投毒事件”。

先是 vue-cli 的依赖项 node-ipc 包的作者米勒(@RIAEvangelist)为声援乌克兰,在项目最新版本中加入了名为 “Peacenotwar” 的文本文件,此外,如果用户的计算机是俄罗斯或白俄罗斯的 IP 地址,米勒会将恶意代码插入到程序包中以覆盖用户的文件系统。该事件对大量 node-ipc 项目的下游用户造成了恶劣影响,许多服务器和个人电脑在更新到最新代码时出现故障,部分涉及俄罗斯 IP 的用户系统文件受损。

后来又有周下载 60 万的 npm 包 “event-source-polyfill” 作者在新版本中偷偷加入反战代码的事件。一时间导致前端圈人人自危,各行各业开始排查自己的开源项目引用情况。

事件一出,不仅是这些项目的原作者在业界的声誉跌入谷底(哪怕他们曾为开源社区贡献了很多优秀的代码,并兢兢业业地无偿维护数年),更要命的是,这些开源作者在此次事件中的激进做法还连带着让很多企业用户开始对开源软件本身的安全性产生疑虑。

正如 GitHub 上一位开发者的留言所说,“这次事件将导致与俄罗斯或政治完全无关的其他公司意识到,免费和开源软件可以被作为供应链攻击的一种途径来导致他们的业务瘫痪,并开始在他们的公司内禁止自由和开源软件,注意,是所有的自由和开源软件。”

理智看待 “胖虎效应”
无论是前文提到的 Qt、CentOS 的商业化转变,还是 node-ipc 、event-source-polyfill 项目投毒事件,都让很多人对这些开源项目的好感急转直下。究其本质,“胖虎效应” 的产生源自人们原有期望出现落差。

包括 Qt、CentOS 在内的大部分开源软件,在推广阶段通常会以 “开放、自由、共享、免费” 等标签进行包装,在受众群体心中树立了很高的期望,以至于现在仍然有很多人将开源与免费划等号。因此当这些开源软件突然转向商业化时,必然会被冠以 “割韭菜” 之名,遭到众多用户的唾弃。

由 npm 包投毒事件引申出的开源软件供应链安全问题同样如此。“只要眼睛多,BUG 容易捉” 为我们树立了开源软件代码透明、安全、可靠的期望;崇尚奉献、共享精神的大部分优秀开源项目作者也在人们心中树立了可靠的榜样。然而当开源项目作者往一个广泛流行的 npm 包中 “投毒” 的极端个例真的发生时,势必会对开源软件在人们心中积累的美好印象造成剧烈冲击。

另一方面,“胖虎效应” 很容易让人们陷入一种 “非黑即白” 的误区。

事实上,无论是微软、Qt 还是红帽,他们的本质都是以盈利为目的的商业公司,开源则是一种软件推广的手段。从闭源转向开源,或是改变开源的方式以促进收费业务的增长,都是这些公司的决策者在特定时期出于公司利益考量而做出的商业决策 —— 如果开源能让产品吸引更多用户,并且对公司主营业务的盈利没有影响,那我就积极拥抱开源;如果这个产品或功能改为收费能增加公司的营收(只要能承受由此造成的部分用户流失),那我就推出对应的付费服务。

而作为用户的我们,只需要判断这个产品好不好用(值不值得我们花钱用商业版,值不值得我们花时间精力去 rebuild 社区版),再选择继续支持或是潇洒转身即可,顺带感谢他们曾经给我们提供过的免费服务。

延申到 npm “投毒” 事件导致的企业用户对开源软件安全的疑虑。一方面,闭源软件事实上也会存在不同程度的安全性问题,也有被注入恶意代码的可能;另一方面,很多开源软件背后也有基金会、商业公司等组织进行维护(不会凭借某个人意愿轻易作恶)。因此,无论是开源还是闭源软件,代码安全性的审查和测试都是每个企业都需要重视的环节。

所谓的 “胖虎效应” 说到底只是一种图一乐的说法,这提醒我们面对开源时也要保持辩证思维,避免陷入 “非黑即白” 的思维陷阱,开源与否和软件本身的好坏无关。不论是面对开源项目、开源作者还是开源项目背后的商业公司,都无需道德绑架,只要选择能够满足我们自己需求的软件即可。

开源联盟
开源程序联盟,开源程序,开源网站,开源社区,java开源,perl开源,python开源,ruby开源,php开源,开源项目,开源代码 » 开源中的 “胖虎效应”

发表评论

提供最优质的资源集合

立即查看 了解详情