1997年,开放源码促进会(Open Source Initiative, www.opensource.org)正式成立,它给予了开放源码一个官方的、正式的定义。它指出,开放源码并不只是意味着对源码的存取访问,而且还要遵守许多原则,总结为以下几条: 1.允许自由再分发——排除了为了短期的销售额而放弃长期收益的诱惑。 2.允许对源码和已编译的程序一同进行分发——要使程序改进变得容易,首先使修改变得容易。 3.允许修改和衍生该作品——只具有阅读源码的权力,不足以支持独立的同行评价和快速的进化选择。 4.作者源码的完整性——用户有权知道正在使用的软件由谁来负责;作者和维护者也有权利支持和维护声誉。 5.无歧视对待对个人和群体——为了从整个过程中得到最大的收益,禁止把某些人排除在外。 6.不能限制任何人在某一特定领域使用程序——让商业人士加入社区,而不是被排除在外。 7.程序上的权利必须适用于任何再分发的程序——禁止以间接的方式封闭软件。 8.许可证不能特殊对待一个产品——预先防止了其他类型的许可证的陷阱。 9.许可证不能限制其他软件——分发者有对自己的软件进行选择的权利。 10.许可证必须保持技术中立——任何条款都不能根据任何个人技术或者接口的样式来推断。 这就是说,只有基于以上原则的源代码可公开访问的软件才能被称作开放源代码软件,即开源软件。开源软件虽然源自自由软件,但一般而言,自由软件有时更接近于基于哲学思想的理想主义,而开源软件则更注重程序本身的质量提升。
把源代码公开
开源
关于开放源代码的定义(1.7版)
开放源代码并不仅仅意味着对源代码的访问权。开放源代码软件的发布条款必须满足以下条件:
1. 自由地再发布
如果被发布的软件是由不同来源的程序组成的,许可证不得限制任何当事人或组织(party)销售或赠送作为被发布软件成分之一的开放源码软件。
许可证不得从此项销售中索取使用费或其它任何费用。(理由)
2. 源代码
程序必须包括源代码,必须允许以源代码方式发布、还必须允许以编译后的形式发布。如果产品的某个部分没有与源代码一同发布,那么必须提供通行的、不需要支付合理范围之外的任何费用的手段以获得源代码---从网络上免费下载是一种可取的方式。源代码必须是程序员对其进行修改的最佳形式。故意地使源代码变得含混晦涩是不允许的。也不允许给出预处理器或翻译器处理的中间结果。(理由)
3. 派生作品
许可证必须允许修改软件和派生软件,并且必须允许它们按照原软件的许可证的条款进行发布。(理由)
4. 作者的源代码的完整性
只有在许可证允许与源代码一同发布"补丁文件"(该"补丁文件"以在创建时对程序进行修改为目的)时,许可证才能限制对修改形式的源代码的发布。许可证必须明确地允许发布由修改后的源代码生成的程序。许可证可以要求派生的作品采用不同的名称或不同的版本号以区别于原来的软件。(理由)
5. 不得歧视任何个人或团体
许可证不得歧视任何个人或者由多人组成的团体。(理由)
6. 不得歧视任何应用领域(fields of endeavor)
许可证不得限制任何人把程序应用于任何领域。例如,不得规定程序不能应用于商业领域或基因研究领域。(理由)
7. 许可证的发布
与程序有关的权利必须适用于该程序的任何使用者,并且程序的使用者也不需要为了使用该程序而获得其它许可证的许可。(理由)
8. 许可证不能针对于一个产品
与程序有关的权利不能由该程序是否作为某个软件产品的一部分来决定。如果程序从那个发布中被抽出来,并且按照程序的许可证的条款进行使用和发布,那么得到该程序的当事人或组织将获得与得到原程序的使用者相同的权利。(理由)
9. 许可证不能影响其它软件
许可证不得向与采用它的软件一同发布的其它软件提出任何限制。例如,许可证不能坚持要求在同一媒体上发布的其它程序都是开放源代码软件。(理由)
Conformance
(本节不是开放源代码定义的一个部分)
我们认为本开放源代码定义涵盖了由绝大多数软件团体使用的术语"开放源代码"的最初含义和当前含义。然而,该术语被广泛地应用,并且它的含义变得不精确了。OSI Certified标志是某个软件发布许可证是否服从开放源代码定义的OST认证方式。一般的术语"开放源代码"并不提供这种担保,但我们仍然鼓励使用" 开放源代码"这一术语以表明它符合"开放源代码定义"。关于OSI Certified标志的信息,以及已经通过了OSI Certified、符合"开放源代码定义"的许可证,请参见OSI Certified标志与纲要。
开放源代码定义之原理
给出开放源代码的定义的目的是:把我们所确信的、由软件开发团体所公认的"开放源代码"的含义作为一组具体的准则写下来---该准则确保按照开放源代码许可证发布的软件可以得到与其它软件同样认真的评审、使软件可以不断地得到改良和遴选,从而提供非开放软件所难以提供的可靠性与能力。
为了使此项工作持续发展,我们必须抵制人们为了短期利益而中止为软件开发做出贡献。这意味着,许可证的条款必须防止人们藏匿(lock up)源代码从而导致只有很少的人才能够阅读和修改它。
当软件的开发者按照由OSI认证的许可证发布他们的软件时,他们可以在软件中使用"OSI Certified"标志。这种认证标志告知用户,该软件所采用的许可证符合开放源代码定义。关于我们的认证标志的更多信息及其纲要,请参见OSI Certified标志与纲要。
1. 自由地再发布
通过强制要求许可证允许自由地再发布,我们抵制了任何为了获得少量短期销售金额而放弃长期效益的诱惑。如果我们不这样做,就会有很多压力迫使合作者放弃承诺。