关于GPL和BSD的讨论 来源: Linux论坛  日期: 2008.09.08 10:39 (共有0条评论) 我要评论 开源业界有两个著名的License:GPL和BSD。引用一段别人的介绍:


GPL BSD license区别
2008-04-16 16:38
GPL(GNU General Public License)

我们很熟悉的Linux就是采用了GPL。GPL协议和BSD, Apache Licence等鼓励代码重用的许可很不一样。GPL的出发点是代码的开源/免费使用和引用/修改/衍生代码的开源/免费使用,但不允许修改后和衍生的代 码做为闭源的商业软件发布和销售。这也就是为什么我们能用免费的各种linux,包括商业公司的linux和linux上各种各样的由个人,组织,以及商 业软件公司开发的免费软件了。

GPL协议的主要内容是只要在一个软件中使用('使用'指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。这就是所谓的'传染性'。GPL协议的产品作为一个单独的产品使用没有任何问题, 还可以享受免费的优势。

由于GPL严格要求使用了GPL类库的软件产品必须使用GPL协议,对于使用GPL协议的开源代码,商业软件或者对代码有保密要求的部门就不适合集成/采用作为类库和二次开发的基础。

GPL 的重点在于 OpenSource ,也就是开放原始程序代码。GPL不适用于复制、发布与修改以外的行为;这些行为不在本授权范围内。执行本程序的行为并不受限制,而本程序的输出只有在其 內容构成基于本程序所生的著作(而非只是因为执行本程序所造成)时,始受本授权拘束。至于程序的输出內容是否构成本程序的衍生著作,体用途。因此使用 GPL下的Linux,MySQL并没有任何问题。

其它细节如再发布的时候需要伴随GPL协议等和BSD/Apache等类似。

BSD开源协议(original BSD license、FreeBSD license、Original BSD license)

BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以'为所欲为',可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。

但'为所欲为'的前提当你发布使用了BSD协议的代码,或则以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:

如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD 代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销售,因此是对 商业集成很友好的协议。而很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者二次开发。 BSDLicense 相较于 GPL 的严格,BSD License 就宽松许多了,一样是需要附上 license的宣告文件,却不需要提供原始程序代码,可以只以执行文件或二进制文件(binary form)提供给别人,感觉有点像前面提到的 freeware一样,只是多了个 license,不过比较有趣的是,它还要求将所有程序发展者的版权资料放上去,所以拿到以 BSD License发行的软件可能会遇到一个小状况 -license
占的空间比程序还大- :p 所以,有改变过的 BSD License ,如 FreeBSD 所用的 FreeBSD License ,跟 BSD License 一样,只是少了那些广告条约。



在我看来,GPL太严格了,他的传染性限制了很多商业公司的使用;BSD又有些宽松,开源的项目,自然会集合很多默默无闻的提供代码者,哪怕一个函数的实现,以及很多人的捉虫和代码的改写优化等,一旦开放就不局限于作者一个人的工作了。

不知道他们是否能稍稍改动一下,最后能融合为一体?我再叽歪一下:

对以GPL协议发布的项目,允许商业软件使用其代码,但是对使用模块的改动要求开放;对以BSD协议发布的项目,虽然代码作者有著作权,面对引用其代码而 不声明的有控告的权利,但是一旦开源,集成了那么多人的工作之后,就不能完全被他支配,特别是针对现在很多开源最后变成闭源的情形,要有一个比较合理的对 原作者的约束,俺的建议:如果作者在后继发展中变成了闭源,对已开源的部分就自动的放弃了其著作权。

不管什么开源协议,不知道加上这样一条是否合适:商业软件对其代码的引用,不放弃索要他那部分代码产生的收益的权利,并且商业软件公司有义务对其收益合理的分一部分给该开源项目。

这里改动的几点,有个地方不好分辨,就是商业软件的引用,涉及到的模块的界限,在这里具体范围很难界定,但是至少是引用代码的超集,这样的模糊地带就像阴阳的交界,就让他有,开源和闭源,就像阴和阳,利用好了会互生,谁也别想把谁吃掉。