GPL源碼感染的問題

GPL 的傳染可以被兩道邊界阻止(但是很不幸,這兩道邊界都很模糊,所以你必須用最保守的方式「自我審查」):
  1. 證明你的產品不是 derived work;或者
  2. 證明你滿足 system exception。

如何證明不是 Derived Work
唯一被認可的方式是建立 address space boundary。被承認的 ASD 包括:
  1. 基於 MMU 的內存空間隔離(進程隔離,用戶態,內核態隔離)。
  2. 程序、數據隔離。比如 GCC 不會感染被編譯的源文件。
  3. 虛擬機隔離。兩種語言並不使用同樣的 IP(instruction counter)。比如 Lua 虛擬機和其上的 Lua 代碼,JVM 和 Java byte code。VM 使用硬件的 IP,而 byte code 採用 VM 提供的虛擬 IP。Byte code 到 VM 之間的控制權切換並不是簡單的 IP 附值。

如何證明滿足 System Exception
這個比較少見。比如說,GCC 是運行在 Linux 上的。如果 Sun 把 GCC 移植到 Solaris 上,也不會感染 Solaris。必須證明你的系統是 GPL 軟件的潛在目標平臺。比如說,如果有人給 Photoshop 開發 GPL 許可證的 plug-in,也不可能感染 Photoshop。

後話
FSF 是一個意識形態很濃的組織。它們在不斷試圖增強感染性,而不是控制它。比如對於 ASD,FSF 就非常不滿,甚至針對 Web service 開始提出能越過 ASD 的許可證。所以最好的方法是遠離 FSF。Linus 在早期爲 Linux kernel 採用 GPL,不過 kernel 社區穩定之後,Linus 對 FSF 的行爲越發反對,決定永久停留在 GPLv2。而且很多類型的開源軟件都有更商業友好的版本。

針對你的案例
如果我在發佈軟件的時候不同時發佈使用到的 GPL 軟件,而是讓用戶自己安裝這些GPL軟件,那麼是否可以私有?
發佈方式無關緊要。取決於 ASD 是否存在。
如果我使用了某種 GPL 的編程語言開發程序,而這個程序也必須在安裝了此編程語言運行環境時才能使用,那麼我發佈這個程序是否必須用GPL? 這個應該不必吧?
屬於 ASD。
如果我以 GPL 協議發佈了某種軟件,我是否可以再使用其它協議發佈同一款軟件?
可以。但是要保證其中沒有其他人的 GPL 代碼。或者集成其他人的代碼需要要求其作者放棄 copyright。
最後確定一點,如果我不發佈我的軟件,而只是做爲一個web site運行,那麼不管是否使用GPL軟件,都可以私有?
沒有發佈行爲,不違法。但是你的知識產權很危險。因爲你的整個 site 從法律上說是 GPL 的。任何人以任何手段拿到,都可以自由公開。(當然你可以懲罰簽署了 NDA 的員工,但是僅此而已。如果你沒有實證是哪個員工的行爲,連這點也沒法懲罰了。)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章