一分鐘理解 GNU LGPL:函式庫專用授權,動態連結與靜態連結怎麼算?

一分鐘理解 GNU LGPL:函式庫專用授權,動態連結與靜態連結怎麼算?

GNU Lesser General Public License(LGPL,GNU 較寬鬆通用公共授權條款)是自由軟體基金會為函式庫設計的授權。它保留了 GPL 對函式庫本身的 Copyleft 要求,但允許閉源程式透過連結的方式使用這個函式庫,因此被廣泛用於系統函式庫與 GUI 框架。

LGPL 一句話重點

修改 LGPL 函式庫本身要開源;只是「呼叫」這個函式庫的應用程式,可以維持閉源。

使用 LGPL 函式庫時的義務

  • 函式庫的修改要開源:改了 LGPL 函式庫本身,散布時要以 LGPL 提供修改後的原始碼
  • 讓使用者可以替換函式庫:使用者必須能把程式中的 LGPL 函式庫換成自己修改的版本
  • 保留授權聲明:散布時須附上 LGPL 授權文字與版權資訊
  • 不得禁止逆向工程:為了除錯這些修改,授權條款不能禁止使用者進行逆向工程

動態連結與靜態連結的差別

連結方式閉源程式可以嗎?要注意什麼
動態連結(.so / .dll)可以最常見也最省事的做法,使用者可以直接替換函式庫檔案
靜態連結可以,但較麻煩須提供目的檔(object files)等材料,讓使用者能與修改後的函式庫重新連結

實務上,閉源商業軟體使用 LGPL 函式庫時,大多選擇動態連結來降低授權風險。

LGPL 與 GPL 怎麼選?

FSF 官方的建議是:如果你的函式庫提供的是獨特功能,用 GPL 可以讓自由軟體保有優勢;如果市面上已有同類的閉源替代品,用 LGPL 讓更多人採用反而更有利於自由軟體的推廣。

採用 LGPL 的知名專案

  • GNU C Library(glibc)
  • GTK
  • Qt(提供 LGPLv3 與商業授權雙授權)
  • FFmpeg(預設 LGPL,啟用部分元件後為 GPL)

GPL、LGPL、MPL、MIT 比較

授權Copyleft 強度修改後要開源的範圍可否與閉源程式結合代表專案
GPL強整個衍生作品不行(散布時整體須採 GPL)Linux 核心、Git、WordPress
LGPL弱(函式庫層級)函式庫本身可以,透過連結使用glibc、GTK、Qt(LGPLv3 選項)
MPL 2.0弱(檔案層級)被修改的 MPL 檔案可以,以檔案為界Firefox、Thunderbird、LibreOffice
MIT無(寬鬆授權)不需開源,保留版權聲明即可可以React、jQuery、Node.js

延伸閱讀

本文僅為授權概念的入門整理,不構成法律意見。實際條款請以官方英文版全文為準,商業產品涉及授權問題建議諮詢專業法律人士。

You may also like