常见开源协议总结

[摘自:胡东东-常用开源协议总结](http://www.hudongdong.com/talk/209.html

常用开源协议总结

基本概念

1.Contributors 和 Recipients

Contributors(贡献者) ——指的是对某个开源软件或项目提供了代码(包括最初的或者修改过)的人或实体(退队、公司、组织等)。

按照贡献的先后可分为"创始人"(an initial Contributor)和"参与者"(subsequent Contributors)。

Recipients(获取者) ——指的是开源软件或项目的使用者。

显然,subsequent Contributors也属于Recipients之列。

2.Source Code 和 Object Code

Source Code ——指的是由各种语言写成的源代码 。

Object Code ——指的是Source Code经过编译后,生成的类似“类库”一样的,提供了各种接口供他人使用的目标代码 (就如,DLL、JAR等)。

3.Derivative Module 和 Separate Module

Derivative Module(衍生模块) ——指的是,依托或包含“最初的”或者“从别人处获取的”开源代码而产生的代码,是对“源代码模块”的增强、改善和延续。

Separate Module(独立模块) ——指的是,参考或借助“源代码”开发出来的独立的,不包含、不依赖于原“源代码模块”的功能模块。

BSD开源协议

original BSD license、FreeBSD license、Original BSD license

自由地修改,将修改后的代码作为开源或者商业软件再发布

对商业集成很友好

要求

  • 包含原来代码的BSD协议

    再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。

    再发布

    的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。

  • 免责

    不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。

Apache Licence 2.0

和BSD类似,修改,再发布(作为开源或商业软件)

要求

  • 给代码的用户一份Apache Licence

  • 修改需要注明

    如果你修改了代码,需要在被修改的文件中说明。

  • 包含原来的声明等

    在延伸的代码中(修改和由源代码衍生的代码中)需要带有原来代码中的协议商标,专利声明和其他原来作者规定需要包含的说明

  • notice文件

    如果再发布的产品中包含一个Notice文件,则在Notice文件中需要带有Apache Licence。

    可以在Notice中增加自己的许可,但不可以表现为对Apache Licence构成更改。

GPL(GNU General Public License)

Linux就是采用了GPL

  • 传染性

    只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。

LGPL(GNU Lesser General Public License)

允许商业软件通过类库引用(link)方式使用LGPL类库而不需要开源商业软件的代码。

但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。

MIT(MIT)

MIT是和BSD一样宽范的许可协议,作者只想保留版权,而无任何其他的限制。

你必须在你的发行版里包含原许可协议的声明,无论你是以二进制发布的还是以源代码发布的。

MPL ( Mozilla Public License 1.1 )

免费重发布、免费修改,但要求修改后的代码版权归软件的发起者 。

维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。这样,围绕该软件的所有代码的版权都集中在发起开发人的手中。

posted @ 2016-12-21 11:40  jcuan  阅读(261)  评论(0编辑  收藏  举报