GPL2與GPL3的code確實是不能夠「直接抄寫」在一起,不過關於如何互用Richard Stallman也有提供他自己的看法,原文可以參照這個連結:
https://gplv3.fsf.org/rms-why.html,或是可以參考我很久之前試翻的不負責中譯版本:
https://lucien.cc/index.php?option=com_content&task=view&id=141&Itemid=57。
最重要的一段截錄如下:
Fortunately, license incompatibility only matters when you want to link, merge or combine code from two different programs into a single program. There is no problem in having GPLv3-covered and GPLv2-covered programs side by side in an operating system. For instance, the TeX license and the Apache license are incompatible with GPLv2, but that doesn't stop us from running TeX and Apache in the same system with Linux, Bash and GCC. This is because they are all separate programs. Likewise, if Bash and GCC move to GPLv3, while Linux remains under GPLv2, there is no conflict.
但幸運的是、「GNU公眾授權條款」2版與3版間相容性的問題,只有在不同版本「GNU公眾授權條款」軟體間發生結合的關係時才會發生,意即軟體程式碼取用關係密切的「連結、融合或組合」等運用方式的範疇下,才會發生「GNU公眾授權條款」版本間相容性衝突的問題;但如果僅是將「GNU公眾授權條款」2版及3版的軟體程式併置於同一個作業系統下發揮作用,是不會產生相容性衝突的。舉例來說、TeX公眾授權條款與Apache授權條款都和「GNU公眾授權條款」2版的規定不相容,但這並不影響以TeX與Apache授權的軟體在 Linux、Bash、與GCC的作業平台上運行,只要這些以TeX及Apache授權的軟體能夠主張其保有獨立運作的可能性,就不會在授權條款的選擇上受到「GNU公眾授權條款」的拘束。同理可証、假如原以「GNU公眾授權條款」2版條款授權的Bash與GCC嗣後都升級到3版的規定,但Linux仍維持在以2版進行授權的狀態,這並不會致使3版的Bash與GCC與2版的Linux無法置於同一個作業環境下發揮作用,因為只要這些不同授權條件的軟體程式具有運作上的獨立性,只是與「GNU公眾授權條款」授權的程式在功能運作上有所交涉,「GNU公眾授權條款」的授權攫取性並不會直接強加其上,要求其日後授權關係亦受「GNU公眾授權條款」的拘束。
不過簡單來說,對!GPL2與GPL3的code抄在一起真的會衝突,只是利用上還有些彈性的空間。
至於第二個問題,「哪些不同的license的code是不能一同抄寫在一起的」,這是一個大哉問,但原則上只要是Copyleft性質的授權條款,它的程式碼就不能與其他同屬Copyleft類別的程式碼抄寫在一起,常見的授權條款分類如附圖,原則上任一GPL類的程式碼都不能和另一類GPL類的程式碼抄在一起,GPL類的程式碼只能去抄下表中BSD類的授權條款,然後最後整個作品的授權條款該為該GPL類的授權方式,這是一個大原則,細項還有很多要討論的,我今年有打算好好的把自由軟體授權的衝突列表整理出來,並套用到新版的
License Wizard,但目前還在編寫中,不知道你是不是有想優先了解哪部份?這個我們可以接續繼續討論。
祝 好
20090226 1720 自由軟體鑄造場 林誠夏