動機
因為授權的緣故讓我以為我做了一個禮拜的白工, 到之後再花一個禮拜生出替代方案, 最後發現其實最初的方案可以用,不過這時最初的code已經不知道跑到哪裡去了QwQ
所以整理一下常見的開源授權,讓自己下次不要再被婊了QQ
如何使用、如何修改、如何釋出
- 使用
- 引用(動態連結)
- 整包使用
- 修改
- 改一部分的code
- 擴充code(衍生)
- 發布
- source code
- binary
- 使用權(像PaaS或SaaS,code都是在自己的機器上跑,其實不算一般的發布)
授權會要求的是?
- 開放原始碼
- 保留copyright(在code最上面的那一大串)
- 保留License
- 附上修改聲明
看看有什麼授權
下面提到的授權都要求
- 保留copyright(在code最上面的那一大串)
- 保留License
但寫出來的code要不要
- 開放原始碼
- 用同一個授權(感染)
- 附上修改聲明 (這就GPL系列與Apache要) 是有變化的
開放原始碼
Apache, BSD, MPL, MIT
- 使用
- 引用(動態連結) => X
- 整包使用 => X
- 修改
- 改一部分的code => X
- 擴充code(衍生) => X
- 發布
- source code => X
- binary => X
- 使用權 => X
GPL
- 使用
- 引用(動態連結) => O
- 整包使用 => O
- 修改
- 改一部分的code => O
- 擴充code(衍生) => O
- 發布
- source code => O
- binary => O
- 使用權 => X
LGPL
- 使用
- 引用(動態連結) => X
- 整包使用 => O
- 修改
- 改一部分的code => O
- 擴充code(衍生) => O
- 發布
- source code => O
- binary => O
- 使用權 => X
AGPL
- 使用
- 引用(動態連結) => O
- 整包使用 => O
- 修改
- 改一部分的code => O
- 擴充code(衍生) => O
- 發布
- source code => O
- binary => O
- 使用權 => O
寫出來的code要不要用同一個授權(感染)
這邊基本上是與code有關,所以下面列出的使用情境會把發布省略掉
BSD, Apache, MIT
- 使用
- 引用(動態連結) => X
- 整包使用 => X
- 修改
- 改一部分的code => X
- 擴充code(衍生) => X
MPL
- 使用
- 引用(動態連結) => X
- 整包使用 => X
- 修改
- 改一部分的code => O
- 擴充code(衍生) => O
GPL, AGPL
- 使用
- 引用(動態連結) => O
- 整包使用 => O
- 修改
- 改一部分的code => O
- 擴充code(衍生) => O
LGPL
- 使用
- 引用(動態連結) => X
- 整包使用 => O
- 修改
- 改一部分的code => O
- 擴充code(衍生) => O
等等,MIT,BSD與Apache差在哪裡?
Apache把所有授權範圍都寫得好好的,但BSD只有三句話(還有兩句話)
MIT更少只有一句話
MIT與BSD的兩句話版本 只要求
- 保留copyright
- 保留License
BSD的三句話版本 要求
- 保留copyright
- 保留License
- 不要用作者的名字做行銷
Apache寫了很多,需要注意的(與code有關的)是附上修改聲明,註明改過的地方
Ref
開放源碼授權概觀(上) 開放源碼授權概觀(下) Open Source授權條款整理 Choose an open source license 常見的五個開源專案授權條款,使用軟體更自由 在開源時代的興起下,如何透過License共享並保有權益 開放原始碼(開源)授權(Open Source License)比較:GPL, LGPL, BSD, Apache, MIT 五種開源授權規範的比較 (BSD, Apache, GPL, LGPL, MIT) [開源教]教我正確選擇軟體授權