狭义的开源软件特指符合开源软件促进会(OSI,Open Source Initiative) 定义的开源软件。
OSI 对开源软件的定义包含 10 项标准:
- 可以自由再发行 Free Redistribution:
开源软件的许可协议不应限制任何个人或团体将包含该开源软件的广义作品进行销售或者赠予。许可协议不能要求收取任何和这种销售相关的版权授权费或其他费用。
- 直接访问源代码 Source Code:
开源软件的程序必须包含源代码,必须允许发布源代码及编译后的程序。如果产品中没有包含源代码,那么必须提供一个公开的获取源代码的方式。这种方式可以收取的费用不能超过对源代码进行一次复制所需要的合理的成本,最好可以通过互联网提供免费下载。源代码的形式必须易于程序员修改,不能故意对源代码进行模糊化处理,也不得以预处理器或转译器输出的中间结果的形式提供源代码。
- 衍生作品 Derived Works:
开源软件的许可协议必须允许修改和产生衍生作品,并且允许使用原有软件的许可协议发布它们。
- 作者源代码的一致性 Integrity ofthe Author’s Source Code:
只有在允许补丁文件和原有源代码一起发布的情况下,开源软件的许可协议才可以限制源代码以修改过的形式发布。许可协议必须明确地允许发布由修改后的源代码构建出的软件。许可协议要求衍生作品使用不同于原有软件的名称或版本号,以区别于原有软件。
- 不歧视任何个人或团体 No Discrimination Against Persons or Groups:
开源软件的许可协议不能歧视任何个人或团体。
- 不歧视任何特定用途 No Discrimination Against Fields of Endeavor:
开源软件的许可协议不能限制任何人把程序使用于某个领域,比如,不得规定软件不能用于商业目的或应用于遗传研究领域。
- 许可协议的分发 Distribution of License:
程序所带的权利必须适用于所有接收方,而这些接收方无须执行 附加的许可协议。
- 许可协议不得限于某个特定产品 License Must Not Be Specific to a Product:
程序所带的权利与程序是否成为特定软件的一部分无关。如果某程序从特定软件中抽取而来并遵守程序本身的许可协议,那么该程序的所有接收方获得的权利与原有特定软件所赋予的对应部分的权利 相同。
- 许可协议不得限制其他软件 License Must Not Restrict Other Software:
开源软件的许可协议不能对同该许可协议下的软件一起发布的其他软件有任何约束。例如,开源软件的许可协议不能要求在同一媒介下发布的其他程序也必须是开源的。
- 许可协议必须保持技术中立 License Must Be Technology-Neutral:
许可协议的条款不应指定任何的技术或接口。