Java程序员需要了解的几个开源协议
整理:
Ackarlix
今天工作的任务要写一些跟开源协议相关的约定说明,所以在网上搜索了一些资料以供参考,下面列出了几个比较常见的开源协议,如果想要了解其他的协议和详细了解这些协议,我个人推荐这个网址:
http://www.opensource.org/licenses/
Mozilla Public License
MPL License
,允许免费重发布、免费修改,但要求修改后的代码版权归软件的发起者。这种授权维护了商业软件的利益,,它要求基于这种软件得修改无偿贡献版权给该软件。这样,围绕该软件得所有代码得版权都集中在发起开发人得手中。但
MPL
是允许修改,无偿使用得。
MPL
软件对链接没有要求。
BSD
开源协议
BSD
开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。
当你发布使用了
BSD
协议的代码,或则以
BSD
协议代码为基础做二次开发自己的产品时,需要满足三个条件:
1.
如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的
BSD
协议。
2.
如果再发布的只是二进制类库
/
软件,则需要在类库
/
软件的文档和版权声明中包含原来代码中的
BSD
协议。
3.
不可以用开源代码的作者
/
机构名字和原来产品的名字做市场推广。
BSD
代码鼓励代码共享,但需要尊重代码作者的著作权。
BSD
由于允许使用者修改和重新发布代码,也允许使用或在
BSD
代码上开发商业软件发布和销售,因此是对商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选
BSD
协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。
Apache Licence 2.0
Apache Licence
是著名的非盈利开源组织
Apache
采用的协议。该协议和
BSD
类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布
(
作为开源或商业软件
)
。需要满足的条件:
1.
需要给代码的用户一份
Apache Licence
2.
如果你修改了代码,需要再被修改的文件中说明。
3.
在延伸的代码中
(
修改和有源代码衍生的代码中
)
需要带有原来代码中的协议,商标,专利声明和其他原来作者规定需要包含的说明。
4.
如果再发布的产品中包含一个
Notice
文件,则在
Notice
文件中需要带有
Apache Licence
。你可以在
Notice
中增加自己的许可,但不可以表现为对
Apache Licence
构成更改。
Apache Licence
也是对商业应用友好的许可。使用者也可以在需要的时候修改代码来满足需要并作为开源或商业产品发布
/
销售。
GPL
GPL
许可证是自由软件的应用最广泛的软件许可证,人们可以修改程式的一个或几个副本或程式的任何部分,以此形成基於这些程式的衍生作品。必须在修改过的档案中附有明显的说明:您修改了此一档案及任何修改的日期。
您必须让您发布或出版的作品,包括本程式的全部或一部分,或内含本程式的全部或部分所衍生的作品,允许第三方在此许可证条款下使用,并且不得因为此项授权行为而收费。
LGPL
Linux
就是采用了
GPL
。
GPL
协议和
BSD, Apache Licence
等鼓励代码重用的许可很不一样。
GPL
的出发点是代码的开源
/
免费使用和引用
/
修改
/
衍生代码的开源
/
免费使用,但不允许修改后和衍生的代码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种
linux
,包括商业公司的
linux
和
linux
上各种各样的由个人,组织,以及商业软件公司开发的免费软件了。
GPL
协议的主要内容是只要在一个软件中使用
(“
使用
”
指类库引用,修改后的代码或者衍生代码
)GPL
协议的产品,则该软件产品必须也采用
GPL
协议,既必须也是开源和免费。这就是所谓的
”
传染性
”
。
GPL
协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。
由于
GPL
严格要求使用了
GPL
类库的软件产品必须使用
GPL
协议,对于使用
GPL
协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成
/
采用作为类库和二次开发的基础。
其它细节如再发布的时候需要伴随
GPL
协议等和
BSD/Apache
等类似
Public Domain
公共域授权。将软件授权为公共域,这些软件包没有授权协议,任何人都可以随意使用它。
Artistic
许可
使作者保持对进一步开发的控制。