岁月流转,往昔空明

C++博客 首页 新随笔 联系 聚合 管理
  118 Posts :: 3 Stories :: 413 Comments :: 0 Trackbacks
今天群里面正好有朋友问起这个问题,就简单的解答下,如果有问题的话,欢迎大家留言批评指正。

常用的源代码授权协议主要分为以 下两类,商业协议和开源协议。今天主要讨论一下开源协议。首先需要明确的是,既然是许可,就一定会具备法律效力。如果你的GNU作品被人侵权了的话,去找 GSF(GNU Software Foundation)吧,让他们把你打官司,就像Skype被告了那样的,哈。唔,当然你自己打也是可以的,就是搜集证据方面可能有点难度。

开源协议,都有一个共同的特性,就是开放了源代码(这句话貌似很废话yeah)。他们的区别在于三点:
1.对源代码的修改限制。一些开源协议会告诉你,只能使用已有源代码而不能进行修改。
2.对原有协议许可的修改限制。通常的开源协议都会让使用者在发布的二进制软件或者源代码中,保有被使用的软件的版权信息和协议许可。
3. 对二进制和源代码产品的发布限制。对于GPL协议而言,使用了GPL协议的产品的软件,是不允许单独发行二进制产品的,而必须要将源代码以GPL的协议发 布出来。这就是所谓的“传染性”。这也就意味着,只要你的产品的使用链上有GPL的玩意儿,对不起,你就只能GPL了。
而LGPL协议就要宽松的多。如果你使用了别人LGPL协议的二进制,只需要保有许可并不加修改,就不影响你的产品授权。但是如果你使用、修改了别人LGPL协议的源代码,那么,修改后的源代码就必须要公开,并且一样遵守LGPL协议。

GPL这样的协议,相对是严格的。开源协议里面,还有很宽松的BSD,MIT和BOOST协议。这些协议的被授权方,可以自由修改、散播源代码或者源代码衍生的产品,只需要你产品的授权协议里,将BSD,MIT,BOOST协议一并附上就可以了。
http://www.awflasher.com/blog/archives/939
这里有GPL,LGPL,APACHE,BSD,MIT五种常见开源协议的简单介绍。其他的可以参见baidu/wiki,或者如果你有足够的法律知识,可以去直接看协议条款吧,嘎嘎。

今天朋友的问题是,如果一个东西全部都是他做的,想以GPL的形式公开,同时还想卖钱,可以吗?
答案当然是肯定的。Qt 就是个最好的例子。Qt兼具GPL/LGPL协议和Qt Commercial的商业协议。你完全可以以GPL的的协议将你的产品公开,然后如果有人想用你的东西做商业用途,你就再签一份商业许可就可以了。以上 的几个开源协议,都是经由OSI批准的,强烈建议大家在发布新程序的时候,另可采用多份协议,也不要轻易修改标准协议。
但是注意,如果你的产品里,直接或间接使用了第三方产品(这个太常见了,比方说Image Library啦,boost啦等等),一定要看清楚它的协议。如果你不小心用了GPL协议的组件,那么对不起,你的商业授权就算是废了,因为你的产品只能是GPL协议的了。
所以说,如果制作商业产品,stl,gdi+这样的商业授权是首选(注意一下你有没有发布产品的权利,不是所有的商业授权你都有发布的权利的)。
其次是BSD,MIT一类的自由度非常高的协议,再其次是LGPL这样的二进制可发布的协议。
GPL是一定不能选的。相对的,如果你仅仅制作GPL协议的产品,也要看清楚,你是否具有发布第三方源代码的权利。当然如果仅仅发布你撰写的程序,是不会有问题的。
posted on 2009-10-28 15:23 空明流转 阅读(2288) 评论(5)  编辑 收藏 引用

评论

# re: 如何为软件源码产品选择授权 2009-10-28 16:30 OwnWaterloo
请教一下:
"但是如果你使用、修改了别人LGPL协议的源代码,那么,修改后的源代码就必须要公开,并且一样遵守LGPL协议。"

假设这样一个场景,一个库L,使用LGPL。
某个家伙,比如我吧,对这个库作了一些修改,成为L1,并且使用L1做了一个应用程序,叫A1。

必须公开的部分是L1,还是L1+A1 ?


我觉得后者好像说不过去。
因为我总可以将我做的事情分成2步:
1. 发布一个使用LGPL的L1 // 必须公开L1代码
2. 使用LGPL的L1产生A1 // 貌似不必公开A1代码?

是这样吗? 谢谢~_~

  回复  更多评论
  

# re: 如何为软件源码产品选择授权 2009-10-28 17:39 寻舟
写得很好,通俗易懂。
  回复  更多评论
  

# re: 如何为软件源码产品选择授权 2009-10-28 18:56 空明流转
@OwnWaterloo
1,L1一定是LGPL协议的
2,A1遵循我上面的规则。也就是用二进制就无所谓,不用二进制,就一定是LGPL的。  回复  更多评论
  

# re: 如何为软件源码产品选择授权 2009-10-28 23:44 夜风
这篇文章出现的太及时了!多谢!  回复  更多评论
  

# re: 如何为软件源码产品选择授权 2009-10-29 01:24 OwnWaterloo
@空明流转
谢谢~_~  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理