簡(jiǎn)介
開源軟件(Open source software)對(duì)我們來說越來越不陌生筋量,開源軟件一方面讓我們免費(fèi)享用到了“免費(fèi)的午餐”,另一方面有效的利用和學(xué)習(xí)開源軟件,也能促進(jìn)我們開發(fā)軟件時(shí)的效率拱烁、提升軟件質(zhì)量。但是在使用和借鑒開源軟件的時(shí)候噩翠,我們不得不關(guān)心一下它對(duì)使用者的諸多限制戏自,比較常見的方式即協(xié)議授權(quán)(licence),這些協(xié)議中明確說明了使用者應(yīng)該遵循的原則伤锚。
現(xiàn)在開源協(xié)議眾多擅笔,通過Open Source Initiative組織批準(zhǔn)的開源協(xié)議有50多種,本文提到的五種常見協(xié)議也在其中屯援,而且出現(xiàn)頻率非常頻繁猛们,我們?cè)谑褂瞄_源代碼或者開放自己源代碼的時(shí)候,也應(yīng)該盡量選擇這些協(xié)議狞洋。
五種常見開源協(xié)議
BSD協(xié)議
BSD開源協(xié)議是一個(gè)給予使用者很大自由的協(xié)議弯淘。開發(fā)者可以自由使用和修改源代碼,也可以講修改后的源代碼作為開源或者專有軟件再發(fā)布吉懊。但是有一下幾個(gè)要求:
- 如果再發(fā)布的產(chǎn)品中含有源代碼庐橙,則在源代碼中必須帶有原來代碼中的BSD協(xié)議假勿。
- 如果再發(fā)布的只是二進(jìn)制類庫/軟件,則需要再類庫/軟件的文檔和版權(quán)申明中包含原有代碼中的BSD協(xié)議态鳖。
- 不可以用開源代碼的作者/機(jī)構(gòu)名字和原來產(chǎn)品的名字做市場(chǎng)推廣转培。
BSD 代碼鼓勵(lì)代碼共享,但需要尊重代碼作者的著作權(quán)浆竭。BSD由于允許使用者修改和重新發(fā)布代碼浸须,也允許使用或在BSD代碼上開發(fā)商業(yè)軟件發(fā)布和銷售,因此是對(duì)商業(yè)集成很友好的協(xié)議邦泄。而很多的公司企業(yè)在選用開源產(chǎn)品的時(shí)候都首選BSD協(xié)議羽戒,因?yàn)榭梢酝耆刂七@些第三方的代碼,在必要的時(shí)候可以修改或者二次開發(fā)虎韵。
Apache Licence 2.0
Apache Licence是著名的非盈利開源組織Apache采用的協(xié)議易稠。該協(xié)議和BSD類似,同樣鼓勵(lì)代碼共享和最終原作者的著作權(quán)包蓝,同樣允許源代碼修改和再發(fā)布驶社。但是也需要遵循以下條件:
- 需要給代碼的用戶一份Apache Licence。
- 如果修改了代碼测萎,需要再被修改的文件中說明亡电。
- 在衍生的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議,商標(biāo)硅瞧,專利聲明和其他原來作者規(guī)定需要包含的說明份乒。
- 如果再發(fā)布的產(chǎn)品中包含一個(gè)Notice文件,則在Notice文件中需要帶有Apache Licence腕唧。你可以再Notice中增加自己的許可或辖,但是不可以表現(xiàn)為對(duì)Apache Licence構(gòu)成更改。
Apache Licence也是對(duì)商業(yè)應(yīng)用又好的許可枣接。使用者也可以再需要的時(shí)候修改代碼來滿足并作為開源或商業(yè)產(chǎn)品發(fā)布/銷售颂暇。
GPL
我們很熟悉的Linux就是采用了GPL。GPL協(xié)議和BSD, Apache Licence等鼓勵(lì)代碼重用的許可很不一樣但惶。GPL的出發(fā)點(diǎn)是代碼的開源/免費(fèi)使用和引用/修改/衍生代碼的開源/免費(fèi)使用耳鸯,但不允許修改后和衍生的代碼做為閉源的商業(yè)軟件發(fā)布和銷售。這也就是為什么我們能用免費(fèi)的各種linux膀曾,包括商業(yè)公司的linux和linux上各種各樣的由個(gè)人县爬,組織,以及商業(yè)軟件公司開發(fā)的免費(fèi)軟件了添谊。
GPL協(xié)議的主要內(nèi)容是只要在一個(gè)軟件中使用(“使用”指類庫引用财喳,修改后的代碼或者衍生代碼)GPL 協(xié)議的產(chǎn)品,則該軟件產(chǎn)品必須也采用GPL協(xié)議碉钠,既必須也是開源和免費(fèi)纲缓。這就是所謂的”傳染性”。GPL協(xié)議的產(chǎn)品作為一個(gè)單獨(dú)的產(chǎn)品使用沒有任何問題喊废,還可以享受免費(fèi)的優(yōu)勢(shì)祝高。
由于GPL嚴(yán)格要求使用了GPL類庫的軟件產(chǎn)品必須使用GPL協(xié)議,對(duì)于使用GPL協(xié)議的開源代碼污筷,商業(yè)軟件或者對(duì)代碼有保密要求的部門就不適合集成/采用作為類庫和二次開發(fā)的基礎(chǔ)工闺。
其它細(xì)節(jié)如再發(fā)布的時(shí)候需要伴隨GPL協(xié)議等和BSD/Apache等類似。
LGPL
LGPL是GPL的一個(gè)為主要為類庫使用設(shè)計(jì)的開源協(xié)議瓣蛀。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須采用GPL協(xié)議不同陆蟆。LGPL允許商業(yè)軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼。這使得采用LGPL協(xié)議的開源代碼可以被商業(yè)軟件作為類庫引用并發(fā)布和銷售惋增。
但是如果修改LGPL協(xié)議的代碼或者衍生叠殷,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協(xié)議诈皿。因此LGPL協(xié)議的開源代碼很適合作為第三方類庫被商業(yè)軟件引用林束,但不適合希望以LGPL協(xié)議代碼為基礎(chǔ),通過修改和衍生的方式做二次開發(fā)的商業(yè)軟件采用稽亏。
GPL/LGPL都保障原作者的知識(shí)產(chǎn)權(quán)壶冒,避免有人利用開源代碼復(fù)制并開發(fā)類似的產(chǎn)品
MIT
MIT是和BSD一樣寬范的許可協(xié)議,作者只想保留版權(quán),而無任何其他了限制。也就是說,你必須在你的發(fā)行版里包含原許可協(xié)議的聲明,無論你是以二進(jìn)制發(fā)布的還是以源代碼發(fā)布的.