开源的概念(狭义定义和广义定义)

定义

  1. 狭义定义:即软件的源代码是可以看到的。

可以理解为只能看到软件的源代码,即除了可以看到源代码以外,基本上没有任何其它权利:不能向第三方透露源代码,也不能修改再发布源代码,更不可以销售源代码,而且必须花钱购买软件才可以看到源代码等等。

在此定义范围下,软件是否免费是不确定的。

  1. 广义定义:开源的广义定义包括下面几个要素:

  • 开放源代码

  • 开源协议

  • 开放标准

  • 开放文档格式

这四个要素加在一起,导致了开源的快速发展。

通过开源软件所附带的开源协议,软件的开发者赋予大众更多的权利,而且权利十分明确。比如可以无条件取得源代码,可以修改源代码,可以将源代码用于商业环境和商业目的等等。

不同的开源协议,赋予了使用者不同的权利。比如商业友好且自由度高的BSD协议,或者使用广泛的GPL协议等。通过开源协议明确权利以后,开源软件开始蓬勃发展。我们今天所使用的开源软件,主要得益于开源协议,它从法律角度明确了权利与责任的界线,让所有人都有章可循。

开放标准和开放文档格式,使开发者可以更高效的利用不同的开源产品,构成开源发展的“生态”。(后面会详细阐述)

提示

Y 驿窗注:开源不仅限于软件,还延伸到硬件领域,例如 RISC-V开源指令集架构

所以,开放标准 这个要素在硬件上的意义更明显一些。

是否免费的纠结

很多人会听到这样一个说法:开源不等于免费。其实,这个解释本身没有任何问题,因为它是对外来词“开源(open source)”的拷贝式翻译。但由于我们的思维与老外有一些差异,所以我们更关心是否免费的问题。

软件这东西,是纯粹的外来词,因为计算机是老外发明的,软件也是老外发明的,中国人很长一段时间都是在翻译和引进。而2000年以前,中国很多人心中只有正版软件和盗版软件的概念,没有开源软件的概念:正版软件要花钱买,盗版软件基本不需要花钱。这个时代的特点导致很多人会通过“是否免费”来定义开源软件。但事实是,那个时候在国外已经有开源软件和开源协议了,只不过在中国并没有流行起来,不像现在,在很多地方尤其是服务器领域,到处都是开源软件的身影。

实际上,我们可以更深入的思考 开源 在中国的环境中可能需要承担的意义,然后再做解读,甚至可以进一步为开源概念赋予更多的意义。

例如,免费的技术文档共享,这也是一种开源,或者叫开源共享,这在某种程度上甚至超过了广义上的开源概念。

如果想让中国本土的开源项目能够可持续发展,那么在对开源项目进行设计时,着重考虑一下免费的角度,可能也是一个途径。

国外有一个很流行的GNU项目,它推崇的是“自由软件”。自由软件与开源软件在很多地方是相同的。从层次上来说,“自由软件”的含义在某些方向的级别比“开源软件”更高,从而为用户提供的自由度也更宽。有兴趣的话,可以参考下面的内容:

提示

Y 驿窗注:自由软件一定是开源软件,但开源软件不一定是自由软件。换句话说,开源软件的定义要更宽泛一些。

自由软件不一定免费。
开源软件不一定免费。