我认为开源也是一种开发模式。我们通过追溯历史,可以看到,不管是 Linux 这种非常成功的操作系统方面的开源项目,还是后来新生代云原生的 K8s 项目,都依赖个人和组织的合作,开发了对合作方以及其他第三方都有益的公用产品。“个人”包括开发者、文档撰写者或社区建设专家;“组织”包括各个公司,比如谷歌、IBM、微软,这些公司都先后投入其中,推动开源开发模式的发展。
为了表示和传统著作权不同,理查德·斯托曼把原来著作权标志里的 C 转成开口往左,表示对原作者某些权利的让渡或者放弃,包括对二次分发软件的分发人的权利限制,从而保证下游所有用户的源码自由。这个保证不是针对特定用户,而是保证所有接收到软件的人,都有获得源码的自由。
著“?”权
随着自由软件运动的不断发展,不少人认为,这种自由虽然保证了下游用户的源码自由,但是对软件开发人、传递人的权利限制过多,或者对公司不够友好。所以大家又把传统的自由软件进一步发展成开源软件运动。同时,开源软件运动也选择了非常有意思的标记——把著作权标志里的 C 往下转,表明自己对权利的限制、让渡没有那么紧。具体而言,分发代码给下游用户不再强制要求分发相关的源码。很多商业公司都比较喜欢这种方式。这种对商业比较友好型的开源软件运动慢慢成为主流,胜过了原来自由软件运动的一些思潮,被更广泛地接受。
谈到从自由软件到开源软件的历史,除了斯托曼和雷蒙德外,还有一个人不得不提,那就是 Linux 之父 Linus。他在整个运动中起到了非常重要的作用。如果我们只有协议和共识,很难推动开源项目的发展。Linus 最大的两个推动作用,一是编写了 Linux 内核,这几十年一直在推动内核不断进展;另一个是开发了 Git 系统,让大家能够通过一种机制更好协作,让系统不断发扬光大。借着这两项创举,他让开源协作(或者说是自由协作)变成了可能。