最近更新: 2011-03-29

Google Android 又涉嫌違反 GNU GPL

記者沒有人「請問您對微軟控告邦諾的 Nook 中的 Android 侵犯專利一事,有何看法?」

石頭成表示:又在告專利,來點新鮮事吧。等等,你說被告的對象是 Android?這是件好事,我很高興看到 Android 又被告了。Oracle 告完,微軟告。後面還有開放源碼界的法律專家在等著。活該啊。

繼 Oracle 狀告 Google Android 之後,微軟也出手了。這還不止,就連涉足開放源碼界的法律專家也在質疑 Google Android 違反 GNU GPLv2 的內容。在更早一些時候(3/17),LinuxDevices 報導《Google accused of violating GPLv2 licensing in Android》,文中摘要了多位法律專家的見解。在這則新聞中,人們討論的對象,不是 Oracle 告 Android 的 Dalvik 虛擬機,而是 Linux 核心與 bionic 函數庫。Edward Naughton 嚴正地指出: If that is the case, Google has found a way to take Linux away from the open source community and privatize it.(Google's Android Contains Legal Landmines for Developers and Device Manufacturers).

在《Google accused of violating GPLv2 licensing in Android》一文中,質疑的焦點在與 C 源碼有關的標頭檔來源,主要就集中在 bionic 這套精簡版 C 函數庫。按照文中所揭露的資訊,Google 是用工具讀取 Linux kernel 與 glibc 源碼,將相關的結構、巨集與符號定義等內容,從那些源碼中擷取出來。擷取的結果移除了原有的註解內容,當然也移除了 Copyleft 授權宣告。在中文維基的 Android 條目中,亦有相關的敘述指出 Android 的標頭檔是用工具從 Linux kernel 標頭檔所產生的。有趣的是,在英文維基的頁面中並沒有提及這些內容。

如果上述內容屬實,那麼 Google Android 不僅違反 LGPL 的內容,也違反了基礎的著作權法。

在我的經驗中,在不侵犯著作權的條件下實作他人的軟體函數庫的替代品時,工作有三。 其一,按照目標函數庫的規格書內容,重新輸入符號與結構的宣告。其二,使用逆向工程找出目標函數庫未於規格書中明文闡述的內容。最後也最重要的一點是,要在「潔淨室」中實作函數的內容。在這之中,不存在用工具去擷取目標函數庫源碼內容的選項。就我所知,與軟體程式有關的著作權案例中,不依上述方式實作的廠商,皆敗訴收場。

再以 Linux C 函數庫為例。由於 Linux C 函數庫主要遵循 ANSI C, POSIX 等標準規格實作。所以實作一個 Linux C 函數庫時,應該是看著 ANSI C, POSIX 等書籍的內容,重新輸入符號與結構的宣告。然後再於潔淨室中實作內容。如果 bionic 函數庫是按照這種方式實作出來的,那就可以隨擁有者之意決定授權書內容。但若文章所說 Google 使用工具擷取產生的方式屬實,那麼 bionic 就有很大的著作權侵權嫌疑。

再看到 LGPL 的處置內容。這部份的違反理由,我在《Google Android 涉嫌違反 GNU GPL》就曾說明過。

Google 在這件事中最投機取巧的一點就在於他們擷取的內容,到底算不算是被著作權保護的內容。通常軟體規格書中所定義的符號與結構,並不被著作權保護(但是可以申請專利保護)。所以某乙拿著某甲的規格書重新輸入那些符號與結構的做法,通常不侵犯某甲的著作權。但 Google 是用工具去讀取其他軟體源碼的內容產生那些符號與結構,似乎不是看著規格書來的。另一方面我也很懷疑 Google 用的工具是否足夠聰明,可將它擷取出來的內容,濾掉規格書中沒提的部份。

我記得有過一個案例,原作者在源碼中定義了一個自定符號,例如 MY_ASS_SIZE=99。而這個符號在規格書中根本沒提到。於是原作者就靠著這個自定符號,贏了程式碼抄襲的官司。

Google Android 一再以促進商業化為理由,解釋它們修改架構、改變授權書的理由。但我們看看 bionic 對應的 glibc 。依 glibc 所採用的 LGPL 授權書之內容,只要你的應用程式僅僅是連結 glibc 函數庫,就不會因此關係而被要求延用 LGPL。換言之,你就算想寫私有授權的應用程式,一樣可以調用 glibc 函數庫,不會因此侵權。附帶一提,Stallman 曾解釋過引入(#include)標頭檔這動作,並不算使用 glibc 程式碼,所以也不會因此被 LGPL 感染。事實上,一般應用程式根本就不會直接使用 glibc 的程式碼,都是透過連結形式去調用。既然如此,bionic 也可採用 LGPL。所謂商業化而需採用其他授權書的理由站不住腳。

再說既然 bionic 是混合 BSD C 函數庫的內容而來,何不幹脆一點全部都用 BSD C 函數庫的源碼來修改。為何還用工具往 LGPL 授權的程式碼中撈內容。手腳如此不乾不淨,如何不出問題? 更極端一點的說法,既然 Google Android 不想要成為 GNU/Linux 的一份子,那何不幹脆用 NetBSD 實作。它也是開放源碼的作業系統,支援 ARM 架構,授權書還是更利於推廣商業化的 BSD 授權書。

到目前為止,我對 Google Android 的看法有二種。

其一,它是魔鬼代言人,用甜言蜜語誘惑其他廠商使用它。把廠商養肥之後,再祭出智慧財產權的官司宰來吃。

其二,它是智慧財產權流氓。老子財大氣粗、小弟多(一大票的行動設備廠商)。所謂法不責眾,誰要用智慧財產權來告我,我就派出一票小弟圍事。看你要告到幾時。

自由軟體基金會早在去年 Oracle 告 Google 時,就曾發表聲明《FSF responds to Oracle v. Google and the threat of software patents》。在聲明中,自由軟體基金會一方面譴責 Oracle,另一方面也抱怨 Google 的態度,The company still has not taken any clear position or action against software patents

看到 Google Android 被告,我真的很高興。希望這能逼迫 Google 早點採取更明確的態度處理軟體專利的事。當然啦,那些偷吃自由軟體豆腐的行為,也應通通戒掉。我看了就厭煩。

樂多舊網址: http://blog.roodo.com/rocksaying/archives/15453185.html

樂多舊回應
cmchao@gmail.com(cmchao) (#comment-21687891)
Tue, 29 Mar 2011 16:45:37 +0800
Linus 不認為header 檔是GPL 的一部份

我也很不喜歡google 在android open source 的態度,source 是release 了,commit log 砍光光,今天又看到honeycomb 要晚一點release,哀...
未留名 (#comment-21688015)
Tue, 29 Mar 2011 18:22:23 +0800
我記得我之前也有看到一篇 Linus 的專訪,就像 cmchao 說的,他已經跳出來說過他不認為使用 headers 會構成 derivative work。

甚至連 Richard Stallman 也承認在 GPL 2 的規則下,headers file 並沒有感染力:http://0rz.tw/u096f

只是我也不喜歡 Google 在 Android 上表現出的態度就是了……
lungzenoopen@gmail.com(LungZeno) (#comment-21688405)
Tue, 29 Mar 2011 23:38:41 +0800
雖然如果 Google 敗訴的話,眾多的優質軟體會變成自由軟體,這一點很吸引人,但我要「補充」這 blog 文的說話,(以我不濟的英文理解,那篇英文文章及其引自的另一篇英文文章的意思是指)Google 用自製程式抄寫的是 Linux kernel 的標頭檔,而要避免 Android 生態圈瓦解的風險,可能必須把 Bionic library 替換為 GPL'd library (GPL'd 為「以 GPL 授權的」之意),很可能是 glibc (不過準確地說它是 LGPL'd )。

引用原文:
http : // www . linuxfordevices . com/c/a/News/legal-experts-address-Android-GPL-issues/
「By copying "2.5 megabytes of code from more than 700 Linux kernel header files with a homemade program that drops source code comments and some other elements," and then claiming the information is not copyrightable,」
「To avoid this potential "collapse of the Android ecosystem," Google may have to replace the Bionic library with a GPL'd library. This would pretty much narrow it down to Glibc (GNU C library),」

http://fosspatents.blogspot.com/2011/03/googles-android-faces-serious-linux.html
「Google copied 2.5 megabytes of code from more than 700 Linux kernel header files with a homemade program that drops source code comments and some other elements, and daringly claims (in a notice at the start of each generated file) that the extracted material constitutes "no copyrightable information".」
「The only real viable alternative is a library called glibc (GNU C library).」

用程式生程式,很程式師。面對 700 多個檔案, 2.5MB 代碼,用程式處理很工程。

繼之前在《Google Android 涉嫌違反 GNU GPL》的回覆:
我對 GNU/GPL 主張的自由軟體的自由的看法很簡單,就是整體自由最大化,既不只得作者的自由最大,也不只得第一手被授權者的自由最大。
未留名 (#comment-21688821)
Wed, 30 Mar 2011 10:37:43 +0800
在處理標頭檔的手法上,Google 正在做一項最壞的示範。

我在正文中就已經指出,在著作權法中,基本上不保護軟體規格的符號與結構。所以 Stallman 及其法律顧問才會表示 "just using structure definitions, typedefs, enumeration constants, macros with simple bodies, etc., is NOT enough to make a derivative work." 但 Stallman 說的這句話,也隱隱指出這是有條件的,例如 macros with simple bodies.

我說明一下,標頭檔本身還是受著作權保護的著作,但是標頭檔中的部份內容不受著作權保護,自然也不受 GPL/LGPL 約束。因此僅僅使用那部份內容並不侵權。所以我們去看 linux kernel 或 glibc 的標頭檔,它開頭還是明確地宣告 GPL/LGPL,因為他們要保護標頭檔中那些仍然受到著作權保護的其他內容。

這也是為何 Google 不敢直接搬標頭檔來用,而要用自家的工具去撈部份內容。我也在正文中提出我的質疑,它們自家工具的手腳真有這麼乾淨嗎?

再來回到著作權的基本範圍,標頭檔中受到著作權保護的內容又是哪些?例如作著寫的註解說明,這些內容就是作者的著作,受到保護的。偏偏 Google 自家工具去掉的就是這些註解內容。事實上, Google 的工具必須去掉那些內容。因為不去掉它們,就會受到 GPL/LGPL 的約束。但去掉之後,又有忽視作者著作的問題。這問題可大可小,大處來說是道德問題,小處來說就是法律問題。

事實上並不是所有軟體的作者(不管是否為自由軟體),都像 Stallman 和 Linus 這麼想。也許其他作者的標頭檔中有一堆受保護的程式碼。例如複雜的 macro、非規格中的符號,又如 C++ 的標頭檔也是包含了許多 inline 的程式碼。這些都是受著作權保護的。Google 如今處理 Linux/glibc 標頭檔的方式,只能說是特例。

有多少程序員清楚知道這些法律問題?就我所知,不到一成。從著作權通識觀點來看,Google Android 的粗暴手法簡直是負面教材。讓程序員以為對待其他自由軟體的源碼時,也可以這麼做。

正文最後我也明確地說明 Google 還有很多自由選擇。例如他們可用 NetBSD 為基礎去開發 Anrdoid。NetBSD所採用的 BSD 授權書完全與 Android 主要採用的 Apache 授權書相容。為什麼 Google 不用?在整件事中,我只看到 Google 為了自家的策略與方便,不斷地在佔自由軟體的便宜。
lungzenoopen@gmail.com(LungZeno) (#comment-21690135)
Thu, 31 Mar 2011 09:50:34 +0800
這是否一項最壞的示範?我覺得有好有壞。

與其說「真有這麼乾淨嗎?」,我認為是「踩界」。

這樣現在大家在網路上討論起來、辯論起來,很多人都上了著作權通識課。

雖然如果 Google 的做法在法律上被承認沒有問題的話,未能成功把自由感染開去,但能明確化著作權灰色地帶,把著作權限縮回去,也未嘗不是一件好事。

那些簡單而制式化的東西 _變相_ 進入公有領域,是好事。現代著作權法中是有「合理使用」的概念,過份依賴授權條款會擴張「授權市場」,從而 _變相_ 限縮合理使用,因為合理使用的定義是基於「潛在市場」的概念。

雖然這不是 copyleft 式的自由,但只要這樣做是不犯法,整體自由還是有增加,不過以 copyleft 的角度,是會恐怕這只是理論上的自由而非實質上的自由,因為別人不把這些原始碼發放出來也同樣不犯法,又不過,因為沒有授權條款相容性的問題,所以在另一角度,比使用了授權條款的東西還自由。
未留名 (#comment-21697793)
Wed, 06 Apr 2011 10:42:53 +0800
"The premise of a true open software platform may be where Android started, but it's not where Android is going," says Nokia Chief Executive Stephen Elop.
- http://www.businessweek.com/magazine/content/11_15/b4223041200216_page_2.htm

Google 當初要涉足行動設備作業系統時,在整個開放源碼領域中大有其他選擇。
例如 Google 若是用 NetBSD 為基礎發展出今日的 Android,那我不會在著作權上多置一語。
我實在找不出 Google Android 「踩界」的理由。
更何況它踩的方向,是把自由軟體的內容拉到私有領域。這我可不樂見。

自由軟體與開放源碼運動發展至今,已經有很多的內容覆蓋在源碼著作權的使用領域上。
copyright, fair use, copyleft, BSD license, public domain.
自由軟體界目前焦點已逐漸轉移到軟體專利領域。
Google Android 真有心為自由軟體與開放源碼運動開拓新的使用領域,應該去踩踩軟體專利。
不過 FSF 一直在抱怨 Google Android 未積極地處理這些事。