授權流言終結者#2: The JSON License 的分析與探討
Contents
本篇文章將探討「The JSON License」常見的誤解,以及面對或使用此授權時需要特別注意的事項。
前言
JSON,英文全名為 JavaScript Object Notation,是一種輕量級的資料交換格式。
這裡指的輕量級,通常是與 XML 或 SOAP (Simple Object Access Protocol) 等標準化的資料交換格式比較。因為 JSON 相較於 XML 或 SOAP 擁有易於讓人閱讀及編寫的特性,而且也容易讓電腦程式解析與執行。同時,JSON 資料交換格式屬於 1999 年 JavaScript 程式語言 Standard ECMA-262 第三版中的一個子集合,是標準的一部分。
常見的誤解及探討
1. 「The JSON License」指的不是實作 JSON 規格的授權
目前遇過最多的問題是誤將「The JSON License」與「JSON 規格」(JSON specification)之間劃上了等號。原因出自於 JSON.org 官方網站針對「The JSON License」有一專屬的說明頁面,如下圖,
因為該頁面標示為「The JSON License」又同時刊於 JSON.org 官方網站上,使得很多人誤以為這是「JSON 規格」的授權聲明。
當實作一個功能時,必須先區分何謂「方法」及「目的」。舉個例子,當我們利用 google-gson 函式庫 (提供 Java 程式語言處理 JSON 格式的函式庫) 實作出標準 JSON 規格的應用時,此時的 JSON 規格即為「目的」,而 google-gson 函式庫則是為了該「目的」而實踐的其中一個「方法」。
回到問題本身,上述 JSON.org 官方網站 的授權聲明,指的不是「JSON 規格」本身,而僅是「The JSON License」的授權全文內容。所以當我們實作「JSON 規格」時,並不需要遵守「The JSON License」的規定,而是唯有使用任何依據「The JSON License」聲明散佈的程式時才有遵守的權利及義務。
簡言之,當我們使用 google-gson 函式庫來實作 JSON 時,只需要遵守 google-gson 函式庫的授權要求,而不是因為實作 JSON 而需符合「The JSON License」的規定。
2. 不是所有 JSON.org 官方網站列出的函式庫都必須是「The JSON License」
雖然 JSON.org 官方網站 上有標明著「The JSON License」的頁面,但並不表示所有列在官方網站上的 JSON 函式庫都是使用「The JSON License」的授權條款。
例如其中的 google-gson 使用的是 Apache License 2.0,而不是「The JSON License」的授權條款。我們可以從 google-gson 專案的首頁中可以查證,
因此在使用官方列表中的 JSON 函式庫時,仍然需要視各別函式庫的授權條款而定,並不是所有 JSON.org 官方網站列出的函式庫都必須依據「The JSON License」。
3. 「The JSON License」非自由軟體基金會/開放源碼促進會所定義的「自由/開放源碼軟體」授權條款
「自由軟體基金會」(Free Software Foundation) 提供「自由軟體授權條款」的定義及規範之服務,而「開放源碼促進會」(Open Source Initiative) 則提供審核「開放源碼授權條款」的服務。但是「The JSON License」都不符合兩組織所定義的「自由軟體授權條款」及「開放源碼授權條款」之要求。主要原因是「The JSON License」在其條款內容中有「For Good Not Evil」的要求,如下圖紅色區塊所示,
「The JSON License」全文其實是衍生自「MIT License」,不同之處在於「The JSON License」額外添增了下列的授權聲明,
The Software shall be used for Good, not Evil.
這中文意指「此軟體僅能行善,不得從惡」。意謂著任何使用此軟體(以「The JSON License」為其授權條款)的人,僅能利用該軟體從事任何為善之目的,而不得為惡。可是問題在於「善」與「惡」的範圍要如何界定?這在「The JSON License」中也並未特別說明清楚,這使得每個人可以對於「善」與「惡」進行各自表態。
因此「自由軟體基金會」認為「For Good Not Evil」的要求,違反了自由軟體(Free Software)四大精神中的第 0 條,
The freedom to run the program, for any purpose (freedom 0).
並且在其官方網站上也特別說明「自由軟體基金會」對於「The JSON License」的看法,截圖如下,
同樣地,「For Good Not Evil」的要求,也無法滿足「開放源碼促進會」十大開放源碼定義中的第 6 條,截圖如下,
正因「善」與「惡」可能因地域、文化、風俗、民情等不同而有不一樣的界定,所以「For Good Not Evil」的要求潛藏著過多限制自由的可能,也因此使得無論是「自由軟體基金會」亦或是「開放源碼促進會」都不認為「The JSON License」是個合乎於「自由」或「開放源碼」的授權精神。
面對或使用「The JSON License」的注意事項
無論是授權者 (撰寫程式供他人利用之人),或是被授權者 (利用他人所授權程式之人),在面對或使用「The JSON License」的程式時,都有一些需要特別注意的事項。
1. 需要特別注意各別授權條款中是否有「For Good Not Evil」的聲明
因為「The JSON License」與常見的「MIT License」幾乎類似。見下列的比較圖,
唯獨「The JSON License」多了下列聲明,
The Software shall be used for Good, not Evil.
因為「MIT License」是個常見的授權條款,所以在蒐集與整理專案中各程式及函式庫的授權清單時,很容易遺漏或忽略「The JSON License」額外的「這一行」,而誤將「The JSON License」授權之程式誤判為「MIT License」。這不僅將錯誤資料植入於專案的「第三方程式授權清單列表」,也同時可能會衍生出後續法律遵行上的問題與盲點。所以在整理授權清單時,務必比對各條款中是否有額外「多餘」的聲明。
2. 「The JSON License」的授權相容性問題
實務上,一個專案中存有多種不同授權的程式已是常態,在開發過程中除了要注意第三方程式的授權內容外,還需要分析該授權是否與專案中其它相關程式的授權存有相容性的問題。
授權相容性指的是,彼此授權的要求是否具有衝突。意即,若甲授權要求不得進行某行為,而乙授權要求必須從事該行為時,代表著甲授權與乙授權有衝突性,即不具相容性。此時,甲授權與乙授權的程式很可能不得存在於同一專案或產品中,這也意謂著此產品將不得進行散布或銷售。
然而,從本篇文章前述之探討中,我們已知「The JSON License」並不符合自由軟體基金會/開放源碼促進會所定義的「自由/開放源碼軟體」授權條款。這同時也意謂著「The JSON License」與其它「自由/開放源碼軟體」間可能存在著授權相容性的問題。
舉個例子,由於「The JSON License」不符合「自由軟體基金會」對於自由軟體的定義,因此很可能無法與 GNU General Public License (GPL) 及 GNU Lesser General Public License (LGPL) 類的「自由軟體授權條款」,共同存在於具有互動關係的專案或產品中。
簡言之,如果我們撰寫出一程式,而且使用「The JSON License」聲明散布時,則可能會因為授權相容性的問題,而使得他人無法與此一程式共存於相同專案中,降低了我們程式的推廣及可利用性。反之,當我們專案中欲使用「The JSON License」聲明散布的程式時,需要特別注意該授權是否會與目前專案中其它相關程式的授權,存在著授權相容性的問題。
結語
隨著 JSON 資料交換格式的流行,愈來愈多相關的授權流言浮出檯面。在本篇文章中,整理了目前親自處理過的 JSON 實務問題,以及網路上常見的誤解,並進一步對於「The JSON License」潛藏的陷阱提供見解,希望能夠給予讀者一些參考依據。
最後,建議讀者參閱林珈宏先生於 2010 年所撰寫的『自由軟體授權條款的附加限制-從被 Google 拒絕的「善行條款」談起』一文。該文中所提及的 JSMin-PHP,即是以「The JSON License」為其授權條款的軟體專案,從其面臨的法律問題中,可進一步供我們在實務運作上有所參詢。