今天群里面正好有朋友问起这个问题,就简单的解答下,如果有问题的话,欢迎大家留言批评指正。
常用的源代码授权协议主要分为以
下两类,商业协议和开源协议。今天主要讨论一下开源协议。首先需要明确的是,既然是许可,就一定会具备法律效力。如果你的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协议的产品,也要看清楚,你是否具有发布第三方源代码的权利。当然如果仅仅发布你撰写的程序,是不会有问题的。