Hi Kurapika,
再請問一下,如果一開始就只有原始碼要釋出,並沒有binary或執行檔要釋出,而且要釋出的原始碼編譯出來會有問題, 在GPL 2.0與3.0都算違反條款嗎?這部份分別對應到GPL 2.0與3.0哪部分的條款呢?
若是只有釋出原始碼,並沒有散布目的碼的話,這樣並沒有違反GPL的規定,因為只要有了原始碼,其他開發者就可以研究與修改這些原始碼。即使這些原始碼編譯起來有問題,但這並不違反GPL,因為GPL的目的在於實踐研究與修改程式的自由,這些開發已經擁有原始碼,並且可以修改原始碼,所以他們可以研究與修改程式,將這些無法編譯的原始碼修改到可以執行的程度。
不過若是之後使用者散布目的碼的話,一樣負有釋出相對應原始碼的義務,否則就是違反GPL的規定。
在GPL3.0,
"Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made."
那麼公司產品的安裝資訊需要有哪些項目?一般公司要怎麼確保使用者所修改的程式可以在它所銷售的機器裝置上運行正常呢?
我引用我的同事林誠夏先生對於這段文字的解釋[1]:
「而『一般性使用商品』的『安裝資訊』,包括了諸如安裝流程、安裝後的授權認證及其他關於程式安裝及使用上所須提供的各式資訊,此等資訊的提供、須使得程式由原始碼格式經過修改後,重新編譯再植入產品內取代原嵌入的舊版軟體,而產品依然能夠運作流暢無誤。質言之、GPL3授權條款對於此等「安裝資訊」的提供要求,在於保證產品內嵌入的自由軟體,不致於經過修改後即無法與產品硬體之間重啟連結運作關係,亦即、不至於任由部份硬體廠商,以硬體設定的方式變相地拑制了GPL3授權之自由軟體的『自由修改性』。亦即、倘若任一硬體機器產品內嵌有GPL3授權程式,其機器生產散布者於產品散布時、亦須提供前述『充足的程式安裝資訊』,而透過此「安裝資訊」提供的配合,此GPL3授權程式在經過修改後仍然能夠於同一硬體產品內運行無誤。」
因此可以知道GPL3這條規定的目的,是為了防止有些公司利用特定技術,阻礙經過修改的原始碼可以載入回原裝置正常運作,例如採取數位加密技術。若所提供的資訊都正確,該公司就已經盡到該盡的責任了,若是使用者自行修改錯誤,而造成無法載入回原裝置正常運作的話,那就自然不是生產產品公司的問題。
[1] 請見:林誠夏,
20071129-GPL3不負責任正體中文化(草稿),
lucien.cc/?p=11,第6條第4項的中文說明。
如果某一個程式,用到很多GPL元件(都為2.0),同時也用到一些third party或者其他條約授權(如BSD)的元件,可以把所有元件的license都放在同一個檔案嗎?
您是要問:將不同授權條款的文字內容,都放在同一檔案之中,是否OK?
另外如果GPL元件有些是2.0,有些是3.0, 在什麼情況放在一起使用會有問題呢?
GPL2規定衍生程式必須採用GPL2規定,GPL3則規定衍生程式必須採用GPL3規定,因此若是這兩者的衍生程式相互重疊,或者彼此為對方的衍生程式的話,這時候自然就產生了授權衝突。 而關於衍生程式究竟應該如何來界定與判斷,則是一個大哉問,會因個案的狀況而定,因此我這邊就您的問題只能做個初步的原則性回覆。
原則上,只要是同一個程式中的所有元件,都必須是要採用同一版本的GPL來授權,因此若一個程式中有的元件採用GPL2授權,有的採用GPL3授權,原則上這樣就有授權衝突的問題。
此外,若GPL2元件與GPL3的元件分別隸屬不同程式,並沒有彼此戶為衍生程式的狀況,可是最後卻編譯成為一個執行檔的話,這時候也會發生衝突的問題,因為GPL2與GPL3都規定所在的執行檔都不可以採用其他的條款授權,這時候自然也產生授權衝突。
不知道您問題所提到的實際狀況如何呢?
冬梅 Florence
20100920 1522