license譯為許可證,也可作為開源協議,它可以將自己創作的東西,授權給他人使用,並約定了使用者可以有的權利和必須遵從的義務。現在很多優秀的開源專案都有設定license,不同的license所約束的條件也不同。因此開源不等於免費,開源也不等於沒有約束。
對於大型的軟體可能都有專門的律師團隊去撰寫軟體協議。可是作為一名開發人員,有時候我們想開源自己的專案,但又不想自己的原始碼被隨意借鑑或者分享到別處。這個時候我們就可以設定license去約束一些行為。
但是協議往往需要具備專業的知識,它涉及到了法律規則,普通人不可能在短時間內就掌握這些知識。這時候我們可以選擇一些流行的開源協議去滿足專案的需求。
快速選擇流行的license
在建立專案的時候,我們可以選擇一個license,可以看到有很多流行的開源協議可以選擇。
下文將以GitHub這份協議做簡單的介紹,給專案快速選擇一個合適的協議。
各協議介紹
協議 | 簡述 |
---|---|
Apache | 允許他人修改原始碼後再閉源,但是必須對每個修改過的檔案做版權說明 |
GPL3 | 無論以何種方式修改或者使用程式碼,都需要開源 |
MIT/BSD2 | 允許他人修改原始碼後再閉源,不用對修改過的檔案做說明,且二次開發的軟體可以使用原作者的名字做營銷 |
BSD3 | 和上面一條類似,但二次開發的軟體不能使用原作者的名字做營銷 |
BSL | 和GPL類似,但不需要複製版權資訊 |
CCZ | 放棄創作的作品版權權益,並將其奉獻給大眾,不對程式碼做任何擔保 |
EPL | 與GPL類似,有權使用、修改、複製與釋出軟體原始版本和修改後版本,但在某些情況下則必須將修改內容一併釋出 |
AGPL | GPL擴充,使用線上網路服務的也需要開源 |
GPL2 | 和GPL3相比,如果使用程式碼作為服務提供,而不分發軟體,則不需要開源 |
LGPL | 和GPL相比,LGPL允許商業軟體通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟體的程式碼 |
Mozilla | 與LGPL類似,但是需要對修改過的原始碼內容做說明 |
Unlicense | 與CCZ相似,且開放商標和所用的專利授權 |
關於BSL和GPL的區別介紹 >> https://www.boost.org/users/license.html
不選擇協議
並不是一定要在專案中新增協議的。但如上文所討論過的優點,如果你想把程式碼分享出來,又想約束一些行為,最好還是選擇一個適合的開源協議。不選擇協議可以讓釋出者保留作品的解釋權,不允許他人分發,複製或二次開發。但是部分網站會有特有的協議,例如當你將程式碼釋出到GitHub上,會預設公開的專案可以自由的檢視和fork。
總結
- MIT可以說是很寬鬆的一個協議了,它是目前很常用的一個開源協議,它允許對程式碼做任何形式的修改和宣傳
- GPL鼓勵免費,著名的Linux使用的就是這個協議,這使得它成為時下熱門的一個協議
- BSD3允許原始碼用於商業用途,如果不介意的話,這也是一個不錯的選擇