pretty code

2018年10月25日 星期四

GPL 之我見

GPL 對寫程式的人應該都很不陌生

一般來說,用到 GPL 程式碼的後續程式
理論上都會視為 GPL 的感染

那如果開發者只是單純的使用 GPL 的程式呢?
假設說是資料庫好了

比如說 MariaDB 是 GPL 授權
我寫了一個 IoT Gateway 的 message collection system
我使用了 MariaDB 來儲存資料
這時我的整個 system 的程式是否也變成 GPL 呢?

以前曾經聽過一種說法(僅針對 GPLv2)
如果你可以證明你的 system 不需要使用 MariaDB 也可以單獨執行
那就可以不用變成 GPL

故你的 system 需確保這件事
因為 SQLite 是使用 Public Domain 的授權
只要你的 system 沒有 MariaDB 也可以使用 SQLite 正常運作
一般來說就會視為跟 MariaDB 間是獨立的關係

當然如果你選擇在安裝包中包含 MariaDB
你必須準備好 MariaDB 相關的文件與程式碼
2018/10/29 Update
即使你的作品符合上述獨立關係的定義
但當你將 MariaDB 和你的作品一起發佈時
整個作品都會受到 GPL 之約束
GPL 對其他許可獲得者的授權將延伸至整個作品
不論作品是誰寫的
(These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.)

以上是我個人的理解
故最安全的方式應該是將作品和 GPL 的元件分開發佈

今天在林誠夏先生的 "GPL 條款對於衍生程式的判定標準與其授權拘束性的擴散範圍(上)" 這篇文章看到這段

GPL 授權條款也明文表達了一個授權拘束性的例外規定,那就是、具有「獨立性與可區分性(Separate and Independent,註三)」的軟體元件,並不會因為僅與 GPL 授權元件同在一個軟體專案的架構下運作,就被歸類為 GPL 授權元件的衍生著作。所以、若是符合「Separate and Independent」這個例外條件,此時軟體專案便可以被認定為一個統合的聚合作品 (aggregation),此時散布整個聚合的軟體專案時,就只需要提供該 GPL 授權元件的程式源碼,而不一定要將 GPL 元件的授權拘束性擴及到其他自行編寫且獨立運作的個別元件。那麼、接下來的問題就是,所謂的「獨立性與可區分性」,是不是已經有一個公定標準,或是多數 GPL 授權元件的開發者皆已得到共識的參考範圍?

應該有符合我以前聽過的說法吧?

相關連結
http://blog.ez2learn.com/2011/11/25/taiwan-software-lacking-of-open-source/

沒有留言: