前陣子跟許多人討論時發現,不少人認為 GPLv2 與 GPLv3 是相容的,其實不然:Is GPLv3 compatible with GPLv2?。
某些使用 GPLv2 的軟體能夠與新的 GPLv3 相容的原因,是因為當初開發時以 "version 2 or later" 的方式宣告,這時候軟體本身可以採用 GPLv3 與其他的 GPLv3 程式碼相容。
對於新開發的軟體來說,只要小心檢查 Software license 就可以了。但對於舊的軟體,以及 package system 來說,是惡夢一場。
有兩套舊的軟體,一套是 GPLv2 only,另外一套是 GPLv2 or later,兩套都是有上百個人參與過的計畫,而且都用到一個 GPLv2 or later 的 library。現在這個 library 宣佈下一個版本開始變成 GPLv3,但因為沒有 API 改變,所以不打算增加 shared library 的 magic number。這時候 GPLv2 only 的軟體因為不相容而需要改寫 (或是把舊版的 library 放入 src 裡維護),package system 也因此不能產生 binary。
也因此很多人對 RMS 自稱的「自由」相當不以為然:他利用 "version 2 or later" 大力推廣而產生壟斷後,再利用優勢將他個人自認為的自由放入 GPLv3。相同的,Wikipedia 所使用的 "GFDL 1.2 or later" 轉成 CC 的步驟也是相同的道理。
權力使人腐化,不管是在商業公司還是在 Open Source Community 都一樣讓人噁心。