動機

因為授權的緣故讓我以為我做了一個禮拜的白工, 到之後再花一個禮拜生出替代方案, 最後發現其實最初的方案可以用,不過這時最初的code已經不知道跑到哪裡去了QwQ

所以整理一下常見的開源授權,讓自己下次不要再被婊了QQ

如何使用、如何修改、如何釋出

  1. 使用
  • 引用(動態連結)
  • 整包使用
  1. 修改
  • 改一部分的code
  • 擴充code(衍生)
  1. 發布
  • source code
  • binary
  • 使用權(像PaaS或SaaS,code都是在自己的機器上跑,其實不算一般的發布)

授權會要求的是?

  • 開放原始碼
  • 保留copyright(在code最上面的那一大串)
  • 保留License
  • 附上修改聲明

看看有什麼授權

下面提到的授權都要求

  • 保留copyright(在code最上面的那一大串)
  • 保留License

但寫出來的code要不要

  • 開放原始碼
  • 用同一個授權(感染)
  • 附上修改聲明 (這就GPL系列與Apache要) 是有變化的

開放原始碼

Apache, BSD, MPL, MIT

  1. 使用
  • 引用(動態連結) => X
  • 整包使用 => X
  1. 修改
  • 改一部分的code => X
  • 擴充code(衍生) => X
  1. 發布
  • source code => X
  • binary => X
  • 使用權 => X

GPL

  1. 使用
  • 引用(動態連結) => O
  • 整包使用 => O
  1. 修改
  • 改一部分的code => O
  • 擴充code(衍生) => O
  1. 發布
  • source code => O
  • binary => O
  • 使用權 => X

LGPL

  1. 使用
  • 引用(動態連結) => X
  • 整包使用 => O
  1. 修改
  • 改一部分的code => O
  • 擴充code(衍生) => O
  1. 發布
  • source code => O
  • binary => O
  • 使用權 => X

AGPL

  1. 使用
  • 引用(動態連結) => O
  • 整包使用 => O
  1. 修改
  • 改一部分的code => O
  • 擴充code(衍生) => O
  1. 發布
  • source code => O
  • binary => O
  • 使用權 => O

寫出來的code要不要用同一個授權(感染)

這邊基本上是與code有關,所以下面列出的使用情境會把發布省略掉

BSD, Apache, MIT

  1. 使用
  • 引用(動態連結) => X
  • 整包使用 => X
  1. 修改
  • 改一部分的code => X
  • 擴充code(衍生) => X

MPL

  1. 使用
  • 引用(動態連結) => X
  • 整包使用 => X
  1. 修改
  • 改一部分的code => O
  • 擴充code(衍生) => O

GPL, AGPL

  1. 使用
  • 引用(動態連結) => O
  • 整包使用 => O
  1. 修改
  • 改一部分的code => O
  • 擴充code(衍生) => O

LGPL

  1. 使用
  • 引用(動態連結) => X
  • 整包使用 => O
  1. 修改
  • 改一部分的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) [開源教]教我正確選擇軟體授權