常见开源协议总结
[摘自:胡东东-常用开源协议总结](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 )
免费重发布、免费修改,但要求修改后的代码版权归软件的发起者 。
维护了商业软件的利益,它要求基于这种软件的修改无偿贡献版权给该软件。这样,围绕该软件的所有代码的版权都集中在发起开发人的手中。