今天群里面正好有朋友問起這個問題,就簡單的解答下,如果有問題的話,歡迎大家留言批評指正。
常用的源代碼授權協議主要分為以
下兩類,商業協議和開源協議。今天主要討論一下開源協議。首先需要明確的是,既然是許可,就一定會具備法律效力。如果你的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協議的產品,也要看清楚,你是否具有發布第三方源代碼的權利。當然如果僅僅發布你撰寫的程序,是不會有問題的。