开源软件与开源协议

要谈开源协议,首先要明确开源定义(Open Source Definition),不仅可以开源软件,也可以是硬件。在绝大多数情况下,我们所说的开源还是指开源软件


我们软件程序员接触最多的就是开源软件,另外,这几年开始兴起的开源硬件风潮,也推动了一些硬件开发者把自己的硬件开源出来。不少开源硬件同样选择了最初为开源软件设计的开源协议。笔者需要时间来学习开源硬件相关的协议信息,并和大家分享。在这里我们只谈开源软件以及相关的开源协议。


开源届最权威的组织莫过于Open Source Initiative(http://opensource.org),简称OSI。它推动了开源软件的发展,也规范管理了开源协议。我们现在所熟知的那些开源协议,如Apache,MIT,GPL等,都是进过OSI批准的开源协议。在OSI的官网上(https://opensource.org/licenses),我们能找到几乎所有的开源协议以及它们的历史版本。


根据OSI的要求,开源协议必须遵从开源定义,简单来讲,就是允许软件能够被自由地使用、修改和分发。OSI网站上的原文如下:

Open source licenses are licenses that comply with the Open Source Definition — in brief, they allow software to be freely used, modified, and shared.


简单的把软件的源代码公布出来并不算开源。严格意义上的开源协议应该遵从OSI网站上对开源的10大定义,原文请见 https://opensource.org/osd

  1. 自由并免费分发
    协议不能限制任何人或组织去销售或分发被许可的软件,即使被许可的软件是和其他软件一起组成的发布版本。

  2. 源代码必须与程序一起分发
    被许可的软件必须包含源代码。如果有些软件无法包含源代码一起发布,则必须将源代码完整公开,并可以从互联网上下载。如果分发过程有生产成本,可以合理收费(比如刻录光盘的费用)。源代码本身必须以合适的形式发布,并便于程序员修改。源代码不得混淆。不得只提供中间代码,如经过预编译或预处理的代码。

  3. 允许修改

    协议必须允许对源代码进行修改或进行衍生开发,并且允许它们以同样的协议分发。

  4. 尊重原作者的代码

    只有当协议允许对源代码在编译过程中打补丁时,协议方可限制对所许可的软件的分发(因为这样分发的软件可能并不是代码原作者的产品)。对于修改后的源代码,协议必须明确允许对它的分发。协议可以要求衍生工作与原始代码使用不同的名称与版本号。

  5. 不得歧视任何人或团体
    协议中不得对任何个人或团体有任何歧视。

  6. 不得歧视任何使用领域
    协议中不得限制任何人在任何领域使用被许可的软件。

  7. 协议在软件的分发过程中自动生效
    被许可的软件在分发过程中,其所携带的协议自动生效,无需额外的授权或许可。

  8. 协议不得与任何特定产品相关

  9. 协议不得限制其他软件

    如果被许可的软件与其他软件一起发布,它的协议不能对其他软件有任何限制。

  10. 协议必须是技术中立的
    协议中的任何条款不得对技术或接口有任何要求。


只有符合了以上的定义,并且通过了OSI的审核,一份协议才能被称为开源协议。

开源软件与开源协议_第1张图片

你可能感兴趣的:(开源软件与开源协议)