Marksong您好,
我先整體說明,最後才針對您的問題回答。因為您描述的資訊有限,以下的回答絕大部分是在假設的基礎上來進行,可能不符合您的實際狀況,若您還想進一步討論的話,歡迎直接mail與我聯絡。
一、基本假設
Fedora是GPL[1]授權的,GPL軟體的衍生程式必須要採用GPL授權,而依照GPL規定,只要包含到GPL軟體任一部份的程式碼,就是GPL軟體的衍生程式。因為從您的描述中無法知曉您自己的外掛元件或GUI Portal(以下統稱為「您的程式」)與Fedora之間的運作關係,所以我這邊直接假設您的程式包含有Fedora程式碼,因此必須依照GPL規定提供原始碼。
關於您自己這些特別買的元件,應該就是現行一般不允許原始碼再次散布的專屬軟體吧(以下統稱為「專屬元件」)。因為從您的描述中無法得知專屬元件與您的程式/Fedora的運作關係,所以我直接假設專屬元件是被包在您的程式當中,來做為說明的基礎。也因此,您的程式必須用GPL授權,專屬元件也必須用GPL授權,也因此必須提供專屬元件的原始碼。
二、兩難情況
在以上的假設下,您的程式與專屬元件的原始碼均必須依照GPL的規定提供給他人,此時您面對兩難情況:若您將所有元件與程式裝機販售時,所有機器裡的原始碼必須提供給拿到機器的消費者,此時違反專屬元件不得再散布原始碼的授權規定;若您不提供專屬元件原始碼,則是違反了GPL的規定,侵犯到Linux所有人的著作權。在這樣的情況下,無論您如何做,都一定會違反其中一方的授權規定。
三、避免兩難之道
(一)在自由軟體與專屬元件當中擇一
要嘛棄專屬元件不用,或者棄自由軟體而不用,如此您只需要遵循一方的授權規則即可。這是最終極的解決之道。
(二)您的程式/專屬元件均利用,卻均可不被認定為Fedora衍生程式
若您想要同時利用您的程式與專屬元件,卻又想兩者均不被認定為Fedora衍生程式,目前並沒有相關的法律慣例或判決可以遵循,只有一些曾被討論的判斷標準可供參考,但這些標準都非絕對清晰,常會受到質疑,因此以下兩個標準僅供參考之用:
1. 動態 vs. 靜態連結
在極端的情況下,將您的程式/專屬元件,透過動態連結(dynamic link)的方式與Fedora連結起來運作,這時候您的程式或專屬元件可以不用GPL來授權。另外一個極端的情況是靜態連結(static link),此時因為您的程式/專屬元件的程式碼與Fedora程式碼全部編譯在一起,無法分割,所以必須用GPL來授權您的程式/專屬元件。
2. 定義完備 vs. 不完備的介面
若是在您的程式/專屬元件與Fedora之間有著定義完備的介面(well defined interface),做為區隔,因為這樣的區別可以讓您的程式/專屬元件與Fedora間有一定的區隔,甚至可以完全避免利用到Fedora的程式碼,此時您的程式/專屬元件可以不用GPL來授權。反之,就必須採用GPL來授權。
四、問題回覆
《問題一》那我若要將其整個裝機販售, 那會有什麼自由軟體的侵權或道德問題嗎?
《回覆一》是的。理由如前述說明。
《問題二》若被要求公開? 那我自己寫的外掛元件或GUI Portal也要Open嗎?
《回覆二》是的,除非您的外掛元件/GUI Portal與Fedora的運作關係符合上述兩個標準,或因為其他的一些原因,才有可能主張不適用GPL,可以不用提供原始碼
《問題三》有特別採買的元件應該就不用公開吧?只要告知即可嗎?
《回覆三》這要看這些元件與您的程式/Fedora關係,還有您程式與Fedora的關係而定,若是三者全部都在一起無法區隔,三者當然都必須用GPL授權,必須提供原始碼,光是告知並不符合GPL規定。若是採買元件包在您程式中,而您的程式可以依照上述兩個標準,或因為其他的一些原因,主張不適用GPL授權,此時採買的元件才有可能不用提供原始碼。
五、附帶說明:是「提供」原始碼,而非「公開」
GPL程式的原始碼不需要公開給所有人,只要提供給拿到GPL程式之人即可。GPL規定拿到程式之人均可以修改程式,為了要實現這個修改權,拿到程式之人當然有權利取得原始碼。所以給他人原始碼的目的是為了要實現拿到程式者的修改權,沒有拿到程式者沒有GPL所授與的修改權,也因此沒有取得原始碼的權利。所以散布GPL程式的人「必須提供原始碼給拿到程式之」人,卻「不需要公開原始碼給所有人」。
六、還需要釐清的之處
(一)您的程式與Fedora的運作關係,有可能讓您的程式不會構成Fedora的衍生程式,但這必須對其中的運作方式有詳細的瞭解與分析才可論斷。
(二)您所購買元件的授權內容可能容許您散布原始碼,所以請您閱讀清楚這些元件的授權內容。以上僅為初步地分析與回覆,其中還有許多模糊與無法說明之處,若您還想進一步討論的話,歡迎直接mail與我聯絡,謝謝!
葛冬梅:
tmk2005@iis.sinica.edu.tw。
[1]這裡單指GPL第二版,因為目前Linux Kernel還是用GPL第二版授權。GPL第三版的規定並不相同,因此以上內容無法完全類推至GPL第三版的軟體上。