姓名:李興宇? 學(xué)號:16030110084
轉(zhuǎn)載自:http://blog.jobbole.com/112716/熔任,有刪節(jié)褒链。
【嵌牛導(dǎo)讀】:作為一個(gè)開發(fā)者,如果你打算開源自己的代碼疑苔,千萬不要忘記甫匹,選擇一種開源許可證(license)。
【嵌牛鼻子】:代碼開源,源協(xié)議兵迅,開源許可證抢韭,
【嵌牛提問】:什么是開源許可證?常見的許可證有哪些恍箭?開源許可證的常見問題有哪些刻恭?
【嵌牛正文】:
許多開發(fā)者對開源許可證了解很少,不清楚有哪些許可證扯夭,應(yīng)該怎么選擇鳍贾。本文介紹開源許可證的基本知識,主要參考了 OpenSource.com (1交洗,2)骑科。
一、什么是開源許可證
開源許可證是一種法律許可构拳。通過它咆爽,版權(quán)擁有人明確允許,用戶可以免費(fèi)地使用置森、修改伍掀、共享版權(quán)軟件。
版權(quán)法默認(rèn)禁止共享暇藏,也就是說,沒有許可證的軟件濒蒋,就等同于保留版權(quán)盐碱,雖然開源了,用戶只能看看源碼沪伙,不能用瓮顽,一用就會(huì)侵犯版權(quán)。所以軟件開源的話围橡,必須明確地授予用戶開源許可證暖混。
二、開源許可證的種類
目前翁授,國際公認(rèn)的開源許可證共有80多種拣播。它們的共同特征是,都允許用戶免費(fèi)地使用收擦、修改贮配、共享源碼,但是都有各自的使用條件塞赂。
如果一種開源許可證沒有任何使用條件泪勒,連保留作者信息都不需要,那么就等同于放棄版權(quán)了。這時(shí)圆存,軟件可以直接聲明進(jìn)入”公共領(lǐng)域”(public domain)叼旋。
根據(jù)使用條件的不同,開源許可證分成兩大類沦辙。
寬松式(permissive)許可證
Copyleft 許可證
三夫植、寬松式許可證
3.1 特點(diǎn)
寬松式許可證(permissive license)是最基本的類型,對用戶幾乎沒有限制怕轿。用戶可以修改代碼后閉源偷崩。
它有三個(gè)基本特點(diǎn)。
(1)沒有使用限制
用戶可以使用代碼撞羽,做任何想做的事情阐斜。
(2)沒有擔(dān)保
不保證代碼質(zhì)量,用戶自擔(dān)風(fēng)險(xiǎn)诀紊。
(3)披露要求(notice requirement)
用戶必須披露原始作者谒出。
3.2 常見許可證
常見的寬松式許可證有四種。它們都允許用戶任意使用代碼邻奠,區(qū)別在于要求用戶遵守的條件不同笤喳。
(1)BSD(二條款版)
分發(fā)軟件時(shí),必須保留原始的許可證聲明碌宴。
(2) BSD(三條款版)
分發(fā)軟件時(shí)杀狡,必須保留原始的許可證聲明。不得使用原始作者的名字為軟件促銷贰镣。
(3)MIT
分發(fā)軟件時(shí)呜象,必須保留原始的許可證聲明,與 BSD(二條款版)基本一致碑隆。
(4)Apache 2
分發(fā)軟件時(shí)恭陡,必須保留原始的許可證聲明。凡是修改過的文件上煤,必須向用戶說明該文件修改過休玩;沒有修改過的文件,必須保持許可證不變劫狠。
四拴疤、Copyleft 許可證
4.1 Copyleft 的含義
Copyleft 是理查德·斯托曼發(fā)明的一個(gè)詞,作為 Copyright (版權(quán))的反義詞独泞。
Copyright 直譯是”復(fù)制權(quán)”遥赚,這是版權(quán)制度的核心,意為不經(jīng)許可阐肤,用戶無權(quán)復(fù)制凫佛。作為反義詞讲坎,Copyleft 的含義是不經(jīng)許可,用戶可以隨意復(fù)制愧薛。
但是晨炕,它帶有前提條件,比寬松式許可證的限制要多毫炉。
如果分發(fā)二進(jìn)制格式瓮栗,必須提供源碼
修改后的源碼,必須與修改前保持許可證一致
不得在原始許可證以外瞄勾,附加其他限制
上面三個(gè)條件的核心就是:修改后的 Copyleft 代碼不得閉源费奸。
4.2 常見許可證
常見的 Copyleft 許可證也有四種(對用戶的限制從最強(qiáng)到最弱排序)。
(1)Affero GPL (AGPL)
如果云服務(wù)(即 SAAS)用到的代碼是該許可證进陡,那么云服務(wù)的代碼也必須開源愿阐。
(2)GPL
如果項(xiàng)目包含了 GPL 許可證的代碼,那么整個(gè)項(xiàng)目都必須使用 GPL 許可證趾疚。
(3)LGPL
如果項(xiàng)目采用動(dòng)態(tài)鏈接調(diào)用該許可證的庫缨历,項(xiàng)目可以不用開源。
(4)Mozilla(MPL)
只要該許可證的代碼在單獨(dú)的文件中糙麦,新增的其他文件可以不用開源辛孵。
五、常見問題
本節(jié)回答一些開源許可證的常見問題赡磅。
5.1 什么叫分發(fā)(distribution)魄缚?
除了 Affero GPL (AGPL) ,其他許可證都規(guī)定只有在”分發(fā)”時(shí)焚廊,才需要遵守許可證鲜滩。換言之,如果不”分發(fā)”节值,就不需要遵守。
簡單說榜聂,分發(fā)就是指將版權(quán)作品從一個(gè)人轉(zhuǎn)移到另一個(gè)人搞疗。這意味著,如果你是自己使用须肆,不提供給他人匿乃,就沒有分發(fā)。另外豌汇,這里的”人”也指”法人”幢炸,因此如果使用方是公司,且只在公司內(nèi)部使用拒贱,也不需要遵守許可證节仿。
云服務(wù)(SaaS)是否構(gòu)成”分發(fā)”呢?答案是不構(gòu)成谴返。所以你使用開源軟件提供云服務(wù)免都,不必提供源碼。但是适袜,Affero GPL (AGPL) 許可證除外,它規(guī)定云服務(wù)也必須提供源碼。
5.2 開源軟件的專利如何處理湾揽?
某些許可證(Apache 2 和 GPL v3)包含明確的條款,授予用戶許可笼吟,使用軟件所包含的所有專利库物。
另一些許可證(BSD、MIT 和 GPL v2)根本沒提到專利贷帮。但是一般認(rèn)為戚揭,它們默認(rèn)給予用戶專利許可,不構(gòu)成侵犯專利皿桑。
總得來說毫目,除非有明確的”保留專利”的條款,使用開源軟件都不會(huì)構(gòu)成侵犯專利诲侮。
5.3 什么是披露要求镀虐?
所有的開源許可證都帶有”披露要求”(notice requirement),即要求軟件的分發(fā)者必須向用戶披露沟绪,軟件里面有開源代碼刮便。
一般來說,你只要在軟件里面提供完整的原始許可證文本绽慈,并且披露原始作者恨旱,就滿足了”披露要求”。
5.4 GPL 病毒是真的嗎坝疼?
GPL 許可證規(guī)定搜贤,只要你的項(xiàng)目包含了 GPL 代碼,整個(gè)項(xiàng)目就都變成了 GPL钝凶。有人把這種傳染性比喻成”GPL 病毒”仪芒。
很多公司希望避開這個(gè)條款,既使用 GPL 軟件耕陷,又不把自己的專有代碼開源掂名。理論上,這是做不到的哟沫。因?yàn)?GPL 的設(shè)計(jì)目的饺蔑,就是為了防止出現(xiàn)這種情況。
但是實(shí)際上嗜诀,不遵守 GPL猾警,最壞情況就是被起訴孔祸。如果你向法院表示無法履行 GPL 的條件,法官只會(huì)判決你停止使用 GPL 代碼(法律上叫做”停止侵害”)肿嘲,而不會(huì)強(qiáng)制要求你將源碼開源融击,因?yàn)椤栋鏅?quán)法》里面的”違約救濟(jì)”沒有提到違約者必須開源,只提到可以停止侵害和賠償損失雳窟。