源代码开放的软件不一定是开源软件,通常我们把能够自由地获取,修改和发布源代码都软件成为开源软件。其实,开源软件有着严格统一的定义。封闭软件(Closed software),自由软件(Free software)和开源软件(Open source software)之间有着明显的区别。
OSI对于开源软件的定义有十个条款。
- 自由再发布(不应限制任何个人或团体将包含该开源软件的广义作品进行销售或赠与,不应收取任何相关的著作权授权费和其他费用)
- 源代码(开源软件的程序必须包含源代码,必须允许发布源代码及编译后的程序)
- 派生作品(必须允许修改和派生作品,并且允许使用原有软件的许可条款发布)
- 作者源代码的完整性(在一定程序上保证原有软件不会被无限制地篡改,确保人们可以使用非官方补丁,确保区别于原有软件)
- 不能歧视任何个人或团体
- 不能歧视任何领域
- 许可证的发布
- 许可证不能只针对某个产品
- 许可权不能约束其他软件
- 许可权必须独立于技术
这些条款都坚持了以下几个原则:
- 坚持开放,鼓励最大化地参与和协作
- 尊重作者权利,同时保证程序的完整性
- 保持独立和中立,避免任何可能影响这种独立性的事务
“自由软件”是指用户运行,复制,研究,改进软件的自由,更准确地说,是指三种层次的自由:
- 研究程序运行机制,并根据你自己的需要修改它的自由
- 重新分发复制,以使其他人能够共享软件的自由
- 改进程序,为使他人受益而发布它的自由