最近更新: 2011-01-24

Google Android 涉嫌違反 GNU GPL

我今天看到《Android source code, Java, and copyright infringement: what's going on?》(中譯版)的新聞。心頭一驚,這還真是個大新聞。於是多花了些時間把相關的討論文章都看過。內容很多,但法律焦點其實只有一個,我稍候解釋。我先說我的結論吧。我的結論是:Google 錯了。

Engadget 這篇新聞引述 Florian Mueller 發佈的《New evidence supports Oracle's case against Google》。文中指出 Google Android 有部份程式碼侵害了 Oracle 所擁有的專利與著作權。這新聞引起很多回應,連 ZDNet 也有作者發文《Oops: No copied Java code or weapons of mass destruction found in Android》為 Google 辯護。但是那些辯護內容,在我看來並不能支持 Google 的立場,頂多是作為 Google "減刑"的依據罷了。

在這整個事件中,我注意到的只有一點,也是以自由軟體的立場而言真正重要的法律焦點,即 Google took Oracle's code, replaced the GPL language with the incompatible Apache Open Source License, and distributed the code under that license publicly.。不論 Google 嘴上如何說他們支持開放源碼軟體,僅憑這一點,Google Android 就違反 GNU GPL 的意旨,涉嫌侵害著作權所有人 Oracle 的權利。

在替 Google 辯護的回應內容中,論點主要有二:一、Java 是 GPL 的開放源碼軟體;二、那些程式碼只是測試用,不隨正式產品釋出。這類論點佔了絕大部份的回應內容。遺憾的是,他們對 GPL 一知半解,他們的看法錯了。許多人對自由軟體與開放源碼軟體的認知僅止於「我可以免費取得程式源碼,並且修改與使用」。他們不知道「自由軟體」(Free Software)與「開放源碼軟體(OpenSource Software)有什麼不同;更不知道 GPL, Apache License 的差異。也就不能理解為什麼 Google Android 錯了。

我摘錄一些對 GPL 理解錯誤的網友回應。

Simon's comment: 一部份是所謂的單元測試程式碼,這種程式碼僅供測試用,不會跟隨正式產品發佈出去。如果我想寫出確保跟 Sun Java 一樣功能的程式,直接採用 Sun Java 的單元測試程式碼來進行測試,應該是最快的測試及驗證的方式。雖然測試程式碼不屬於正式產品的一部份,但是在道德上還真的是有點瑕疵。

Ray's comment: 不明白耶,JAVA 不是早就以 GPL 授權釋出原始碼了嗎? 難道 GPL 授權還可以出爾反耳?

GNU GPL 的授權範圍係規範使用者對程式源碼的使用方式,而非目的用途。GPL 只管你怎麼使用程式源碼,而不管你要用程式幹什麼。GPL 要求「自由取得、修改程式源碼,並依 GPL 再散佈程式源碼」。你必能自由取得與修改程式源碼,且你也必須用 GPL 再散佈你修改過的程式(含源碼)。

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

GNU GENERAL PUBLIC LICENSE Version 2

你在使用程式源碼的過程中,不能違反上述內容。一但逾越,就是侵害著作權人的權利。至於你是拿源碼來做測試或是包在正式產品中賣,對 GPL 而言都沒有差別GPL 都不關心。並不是說因為我沒有包在產品中賣,所以我刪掉源碼的 GNU GPL 宣告的行為就不算過錯。

如果 Florian Mueller 敘述的內容屬實,那麼 Google 錯就錯在它把源碼中的 GNU GPL 宣告標頭刪掉了;換成 Apache license 也不行。此一舉措明顯違反 GNU GPL 的授權範圍。其他事不是重點。

按照 GNU GPL 宣告標頭的文字說明,一但你發現你拿到的屬於 GNU GPL 散佈的程式源碼沒有包含 GNU GPL 的文件時,你可以寫信通知 Free Software Foundation,FSF 將會提供著作權人相關的法律協助。不過此案的事主 Oracle 家大業大,而且他們的律師團已經出手了,我想 FSF 不會再插一腳。

在眾多回應中,我特別注意 Arash 的回應內容,他說:

And its funny that Apache is clearly disowning those codes, They need to, Because Android is the most harmful piece of software for Open Source Software community, ...

@Mike10010100 Nilay has been a copyright attorney and he made it clear why it doesn't matter if the code has been shipped in any sample handset or not.

Arash's comment

我曾說過我不喜歡 Google Android 嗎?我說的可不是手機介面的喜好問題。從一個自由軟體支持者立場來看,我不喜歡 Google Android 的作法。自從 Android 與 Linux 分家之後,我的態度就更堅定了。看到 Arash 的發言後,我知道世界上還有許多自由軟體與開放源碼軟體的支持者,抱持與我相同的態度看待 Google Android 。

相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/14996669.html

樂多舊回應
未留名 (#comment-21551365)
Tue, 25 Jan 2011 17:00:05 +0800
『把源碼中的 GNU GPL 宣告標頭刪掉了;換成 Apache license 也不行。』這段敘述有例外,在所有著作者同意的情況下,是可以任意改變著作的授權。
未留名 (#comment-21553919)
Wed, 26 Jan 2011 09:56:38 +0800
現在GPL這麼嚴格到沒人可以用了嗎?想像我有一個專案屬於非GPL的案子,開放大家可以貢獻與修改,但是有人commit了一個GPL的程式碼來測試,有人注意到了把它刪除了,所以我違反了GPL的條款。即使我根本未知也即時刪除了!
未留名 (#comment-21556197)
Wed, 26 Jan 2011 17:25:14 +0800
to $4:

請勿斷章取字,整句是「Google 錯就錯在它把源碼中的 GNU GPL 宣告標頭刪掉了」。你把前面的「Google」去掉之後,意思就變成連著作權人都不能這麼做了。和我的原義大不同。

在著作權人同意的狀況下,著作權人自然可以採用另一個許可證授權,即多授權模式(multiing license)。但 Google 不是著作權所有人。就目前所知的消息來看, Google 並沒有取得 Oracle 的許可。


to M Jwo:

有權利就有義務。這並不代表 GPL 嚴格。每一種 Open source license 都有其限制。例如自由度很高的 BSD license 亦不允許不經著作權所有人同意就刪除 BSD license 標頭的行為(BSD License 第一項條款)。如果某人拿了 BSD licensed 程式碼修改,卻把原來的 license 標頭整個刪掉,就算他換成了另一個 Open source license ,這也是錯了。

在早期(大約十年前),BSD License 還保留來源宣傳條款時,我若碰到 BSD 授權的程式碼,都寧可不用。埋著頭自己重新寫一份 GPL 的程式碼。這就是應盡的義務。

就你舉的例子來看,某人 commit GPL 程式碼到非 GPL 的專案中,就責任上來說是該上傳者錯了。因為你的專案是並非 GPL,其授權範圍和 GPL 的授權範圍衝突。某人上傳 GPL 程式碼的行為違反了你的授權範圍。至於專案維護者(通常就是著作權所有人)一般不會擔上關係。再者,只要維護者即時刪除了,通常就不會構成侵權行為。

此外,版本管理工具的控管功能在這時就有法律上的功能了。專案維護者可以從版本管理工具的歷史記錄中舉證責任者是誰。
未留名 (#comment-21571079)
Tue, 01 Feb 2011 09:27:29 +0800
什麼是 GNU GPL 的意旨?

GPL 雖然稱作授權條款(或授權協議),但我的理解是,它的目的是保障自由,而你在這 blog 文中說成好像 GPL 關心的是著作權人向受權人的權利允准,卻非自由。

GPLv2 成於 1991 年,沒有現在面對的一些問題,請看成於 2007 年的 GPLv3 。

根據第 2 條「Basic Permissions.」中的「This License explicitly affirms your unlimited permission to run the unmodified Program.」、第 9 條「Acceptance Not Required for Having Copies.」中的「You are not required to accept this License in order to receive or run a copy of the Program.」就已經明文保障了自由軟體四大自由中的自由之零,聽聞行普通法的美國的著作權法(版權法)越來越成文法,嘆。

而 GPLv2 的第 0 條就寫了「The act of running the Program is not restricted」。

GPL 條文一堆「you may」要如何理解?用台灣法律就是「你得」,香港就是「你可以」,簡單地說,你可以只是自用(包括修改)而不散佈。

「包在正式產品中賣」 GPL 當然關心,因為這就是在散佈。

智慧財產?這就是 RMS 的看法:
http://www.gnu.org/philosophy/no-ip-ethos.html

在這篇 blog 文中,怎麼我覺得是在說開放原始碼軟體,而不是自由軟體的 GPL ?



Google 很有趣,這是一家客製化能力很強,或說 DIY 能力很強的公司。伺服器的作業系統就是改 Linux 的,沒有散佈出來。App Engine 用 Python ,但用 pure Python , 用 Java ,但列了白名單,兩者都要用 Google 開發的 APIs 。瀏覽器在火狐挖人和「培訓」人才,排版引擎用 webkit ,但 javascript 引擎改用自家研發的 V8 ,而一堆開放原始碼/自由程式庫的復用這樣的做法很自由軟體,而一堆 UI 、概念等的自家研發、簡潔中帶點強迫性等做法又很有一般商業公司的味道,而自家維護的分支/版本數量比其他很多自由軟體的還多。 apps script 沒有公佈出來的伺服端 javascript 引擎從測試中測出似乎是個刪除或抑制了一些額外特性的舊版 rhino 。

======

原英文只有 license ,譯造授權條款(license terms)指的是有法律效力的條文,譯造授權協議(license agreement)指的是契約,不論是法律還是契約都是無形的事物,雖然這些事物往往依據有形的東西為要件,例如授權文件,但正如資訊雖然不能脫離載體而存在,卻並非其載體。
未留名 (#comment-21594715)
Mon, 14 Feb 2011 17:57:33 +0800
> 「包在正式產品中賣」 GPL 當然關心,因為這就是在散佈。

我整句話是說「拿源碼來做測試或是包在正式產品中賣,GPL 都不關心」,我指的是 GPL 對於用途的規範內容。對 GPL 而言,這兩種用途都沒有差別待遇,所以我說 GPL 不關心你的「目的用途」。

寫出這一段,是因為有些人以為如果不把源碼包在正式產品中賣的話,刪掉源碼中 GNU GPL 的宣告就不算過錯。

----

GNU GPL 在商業化過程中確實有些阻礙,甚至被認為過於有利著作權所有人。

當初 Oracle 購併 MySQL 時,還勞駕 RMS 出面發言,要求 Oracle 承諾保持 MySQL 的自由性。其結果反應在 Oracle 對 Google 案中,也就如你所言「在這 blog 文中說成好像 GPL 關心的是著作權人向受權人的權利允准,卻非自由」。

Google 不想用 GPL 再散佈它們的碼(涉及侵權內容的碼),但 Oracle 不允許,也就不自由了。