以下章节是对开源定义 (OSD) 的注释,并非 OSD 的一部分。不带注释的 OSD 纯文本版本可以在这里找到。
简介
开源不仅仅意味着可以访问源代码。开源软件的分发条款必须符合以下标准
1. 自由再分发
许可证不得限制任何一方出售或赠送该软件,作为包含来自多个不同来源的程序的聚合软件分发包的一部分。许可证不得要求对此类销售收取版税或其他费用。
理由: 通过约束许可证要求自由再分发,我们消除了许可方为了获得短期利益而抛弃长期收益的诱惑。如果我们不这样做,合作者就会有很多变节的压力。
2. 源代码
程序必须包含源代码,并且必须允许以源代码以及编译形式分发。如果某种形式的产品没有与源代码一起分发,则必须有公开的方式以不超过合理的复制成本获得源代码,最好是通过互联网免费下载。源代码必须是程序员修改程序时首选的形式。故意混淆的源代码是不允许的。中间形式,例如预处理器或翻译器的输出,是不允许的。
理由: 我们要求访问未混淆的源代码,因为不修改程序就无法改进程序。由于我们的目的是使改进变得容易,因此我们要求修改必须变得容易。
3. 衍生作品
许可证必须允许修改和衍生作品,并且必须允许它们以与原始软件许可证相同的条款分发。
理由: 仅仅能够阅读源代码不足以支持独立的同行评审和快速的进化选择。为了实现快速进化,人们需要能够试验和再分发修改。
4. 作者源代码的完整性
许可证可以限制以修改形式分发源代码,仅当许可证允许分发带有源代码的“补丁文件”,以便在构建时修改程序。许可证必须明确允许分发从修改后的源代码构建的软件。许可证可以要求衍生作品使用与原始软件不同的名称或版本号。
理由: 鼓励大量改进是件好事,但是用户有权知道谁对他们正在使用的软件负责。作者和维护者有相应的权利知道他们被要求支持什么,并保护他们的声誉。
因此,开源许可证必须保证源代码易于获得,但可以要求将其作为原始基本源代码加上补丁进行分发。这样,“非官方”的更改可以被提供,但可以很容易地与基本源代码区分开来。
5. 不歧视个人或群体
许可证不得歧视任何个人或群体。
理由: 为了从该过程中获得最大收益,应平等地允许最大程度的不同个人和群体为开源做出贡献。因此,我们禁止任何开源许可证将任何人排除在该过程之外。
包括美国在内的一些国家/地区对某些类型的软件有出口限制。符合 OSD 的许可证可以警告被许可人适用的限制,并提醒他们有义务遵守法律;但是,许可证本身可能不包含此类限制。
6. 不歧视应用领域
许可证不得限制任何人在特定应用领域中使用该程序。例如,许可证不得限制该程序在商业中使用,或用于基因研究。
理由: 此条款的主要目的是禁止阻止开源用于商业用途的许可证陷阱。我们希望商业用户加入我们的社区,而不是感到被排除在外。
7. 许可证的分发
附加到程序的权利必须适用于所有重新分发该程序的人,而无需这些方执行额外的许可证。
理由: 此条款旨在禁止通过间接手段(例如要求签订保密协议)来封闭软件。
8. 许可证不得特定于产品
附加到程序的权利不得取决于程序是否是特定软件分发包的一部分。如果程序从该分发包中提取出来,并在程序许可证的条款范围内使用或分发,则所有重新分发该程序的人都应享有与原始软件分发相关的权利相同的权利。
理由: 此条款排除了另一类许可证陷阱。
9. 许可证不得限制其他软件
许可证不得对与许可软件一起分发的其他软件施加限制。例如,许可证不得坚持要求在同一介质上分发的所有其他程序都必须是开源软件。
理由: 开源软件的分发者有权对他们自己的软件做出自己的选择。
是的,GPL v2 和 v3 符合此要求。与 GPL 许可的库链接的软件只有在形成单个作品时才继承 GPL,而不是与其仅仅一起分发的任何软件。
10. 许可证必须是技术中立的
许可证的任何条款均不得以任何个人技术或界面风格为前提。
理由: 此条款专门针对需要明确同意姿态才能在许可方和被许可方之间建立合同的许可证。强制执行所谓的“点击包装”的条款可能与重要的软件分发方法(例如 FTP 下载、CD-ROM 合集和 Web 镜像)相冲突;此类条款也可能阻碍代码重用。符合标准的许可证必须允许以下可能性:(a) 软件的重新分发将通过不支持下载点击包装的非 Web 渠道进行,以及 (b) 覆盖的代码(或重用的覆盖代码部分)可能在不支持弹出对话框的非 GUI 环境中运行。
开源定义最初源自Debian 自由软件指南 (DFSG)。
版本 1.9,上次修改于 2007-03-22