薛先生您好,
LGPL-2.1 是在授權拘束性方面「弱化」了的 GPL-2.0,使用這類函式庫時、如果是單純的使用關係,則呼叫其提供資訊的其他程式,並不會受到 LGPL-2.1 授權拘束特性的限制。例如、該 LGPL-2.1 函式庫如果本來就有既成介面 (interface),則透過其既成介面來呼叫這個 LGPL-2.1 函式庫,就是一種單純的使用關係;但是即使如此、一經散布後,該 LGPL-2.1 授權元件的程式源碼還是要同時或是嗣後提供,並且、除了該函式庫本身的程式源碼之外,其他非 LGPL-2.1 元件與此函式庫之間的互動資訊,也需要一併進行說明,以讓使用者以後可以將更新版本的 LGPL-2.1 函式庫,置換到該整合程式裡。
您的問題為「可否將 LGPL-2.1 授權的函式庫以 .so 的方式放入 Android 平台下適用的 APK 安裝檔,在安裝之後、此 APP 是以動態的方式呼叫這個 .so 檔的功能,但使用者無法自行更換此一 LGPL-2.1 的函式庫,這種狀況之下、在散布 APK 檔時,是僅需要公開 .so 的程式源碼,還是與 .so 相關聯的檔案都要一併公布?」
那麼、針對這個問題,我簡要的說明是:必須「提供」該 .so 函式庫的程式源碼,以及該 .so 相關聯的「必要資訊(associated interface definition files)」。
1、該 .so 檔案在散布時,授權狀態仍為 LGPL-2.1,故必須在散布行動的「同時或是其後應使用者要求後」,提供該 .so 的程式源碼給使用者,但特別提醒的是、「提供」程式源碼的義務,不完全等同於「公開」程式源碼,所以、您可以自主的在網站上不限定對象的公開程式源碼,但亦可以限定從您網站上或其他來源下載到 APK 安裝檔的使用者,才得以檢具相關資訊向您要求提供此程式源碼。一般來說常見到的作法是,如該 APK 是透過網路讓使用者下載,那便可以在同一個下載網站頁面,或是安裝互動介面裡,提供 .so 程式源碼的下載連結,而若使用者想要透過實體 CD 或其他載體的方式取得此一 .so 檔的程式源碼,則您可以進一步向其要求燒錄光碟、郵遞方面的工本費用。
2、該 .so 檔案的完整程式源碼,必須包括原始函式庫的程式源碼,以及該 APK 其他元件如何與此函式庫互動溝通的「必要資訊」。進一步來說、並不是說 APK 裡面其他的 java 檔都要列入程式源碼的範圍,而是這些 java 檔是怎麼與 .so 互動的資訊,必須做一個基本的說明與介紹。實務上的常見標準就是,如果該 LGPL-2.1 授權的 .so 檔,本來是以該函式庫專案 2.0 版本的檔案嵌入 ARK 安裝檔,則您所提供的「必要資訊」,應該要讓該 ARK 安裝檔的使用者、能夠將該函式庫專案 2.5 版本或是 3.0 版本的 .so 檔,重行置入到 ARK 檔案裡面,置換到舊版 2.0 版的 .so 檔,便可以了。
LGPL-2.1 這部份的相關規定如右所列:“Source code” for a work means the preferred form of the work for making modifications to it. For a library, <html><font color=“red”>complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.</font></html>
之所以會有這樣的要求,是自由軟體基金會認為以 LGPL-2.1 授權釋出的函式庫,可以在授權拘束的擴張性方面妥協,但函式庫本身仍然必須是自由的,故如果取用者提供的「associated interface definition、compilation scripts」不足,則該 LGPL-2.1 的函式庫在本身升級改版後,仍然不能移入到原取用專案裡,去取代舊版的 LGPL-2.1 函式庫,這樣就造成該函式庫「實質上的不自由」。
大致的狀況略如上述,如果後續還有衍生的問題,歡迎您隨時來信討論,不要客氣。
:)
敬祝 順心健康、事事如意
20120707 2045 自由軟體鑄造場 林誠夏
林先生,你好
不好意思在打擾您一次,這次一樣是關於LGPL-2.1授權的問題:
LGPL-2.1允許我們使用動態連結取用LGPL-2.1的函式庫來使用,那以在Android平台上為例子,我們是否可以把LGPL-2.1授權的函式庫以.so檔的方式放入APK(安裝性質的完整程式)中,當然是以動態連結,但使用者不能自行更換此LGPL的函式庫
如果以上這種情況,我們是只需要公開.so的程式碼,還是需要把跟.so有關連的檔案(例如:apk中其他的java檔)都要公布
若還須要更多資訊的話,我們會再提供給你
麻煩你撥冗解答了
謝謝
Best regard,
薛浩哲
