Post
开源软件不是可随时关闭的服务
把开源软件和依赖授权的商业服务混为一谈,会夸大“被卡脖子”时的风险判断;开源代码的分发和使用,天然比封闭服务更难被一纸行政命令直接掐断。
很多人讨论技术封锁时,喜欢把开源软件和商业服务混在一起讲,仿佛只要某家公司被制裁,Android、TensorFlow、MySQL、Hadoop 这类东西也会一起被“关掉”。
我一直觉得,这里面有个很根本的概念混淆:
开源软件不是一种随时可以被后台关停的托管服务。
以 Android 为例,真正需要授权的,主要是 Google 的那套商业服务和生态能力,比如 Gmail、Map、搜索以及相关移动服务框架。而 Android 作为开源系统本身,并不是说某个行政机构一句话就能让源码突然失效。
这两件事差别非常大。
- 服务可以被停止提供
- 授权可以被取消
- 但开源代码不会因此从世界上消失
源码一旦公开,它本质上就是一种文本。历史上关于 PGP 出口限制的诉讼,已经把这件事推到过很高的法律层面:代码不仅是软件,也是一种表达形式。
所以你可以卡某些商业发行渠道,卡某些二进制分发方式,卡某些品牌授权,但很难像关停一个云服务那样,直接把一个开源软件“从世界上关掉”。
哪怕退一步说,真限制了某个官方二进制版本的分发,用代码重新构建、重新打包、重新分发,在技术上也根本不是同一难度级别的问题。
所以我会觉得,真正应该区分的是:
- 哪些是开源基础设施
- 哪些是附着在开源之上的商业服务
- 哪些是你真正会在业务上被依赖锁死的环节
如果这三层不分开,大家就很容易把对商业服务依赖的风险,错误地外推成“所有开源软件都可能一夜之间不能用”。
这会把问题说得过于戏剧化,反而不利于做准确判断。