原標題:木遙:谷歌VS甲骨文十年版權案了結,版權保護的終極目標是公衆利益和創新

文丨木遙(軟件工程師)

4月5日,美國最高法院裁定,谷歌(Google)在開發安卓系統時使用的甲骨文(Oracle)Java API代碼,屬於“合理使用”,並不違反版權法。這案子纏訟十年,標的88億美元,歷經三次判決反轉,這一終審裁定被廣泛認爲是科技業影響深遠的一個案例。

作爲一名工程師,我將從技術而非法律角度談下自己的感想。

其起因非常簡單:Java 是一種在程序員中有非常高人氣的語言,掌握在甲骨文手裏。谷歌在推出安卓系統的時候爲了能讓更多給安卓寫第三方 APP 的程序員儘快上手,直接在安卓 APP 開發工具裏複用了大量 Java 的函數接口(API),但自己重新實現了函數本身。甲骨文據此告谷歌侵權。

這裏的問題的核心是:一個語言的接口是否受到版權保護?對它的複用是否侵權?

甲骨文的論點非常直接(而且對非業內人士來說其實很有說服力):軟件是否受到版權保護?當然。接口是不是軟件的重要組成部分?當然。那麼接口顯然應該受到版權保護。

谷歌的論點就有點複雜,它需要詳細辨析接口的含義——對大多數法律界人士和公衆來說,API 這個詞本身就很陌生。最高法院判決的主筆是82歲的 Breyer 法官,他這輩子很可能一行代碼都沒寫過。但從判決看,他是精確理解 API 的功能和內涵的。

被判決採納的論點是:API 是一個發送指令的界面,像是汽車的加油踏板(這個例子在第一巡迴法院之前關於 Lotus vs. Bortland 的判例裏出現過),或者電腦的 QWERTY 鍵盤。——這兩個例子不是隨便舉的,因爲它們都正好反映出這個案子的實質:谷歌是利用了現成的 Java 接口以吸引程序員能夠迅速上手。這種“利用前人現成的知識節省學習成本”是應該受到保護還是懲罰?加油踏板就是這樣一個類似的情況。第一個設計汽車的人已經把加油踏板設計成這樣了,如果這種設計本身受到版權保護,每個後來的新的造車廠就都會面臨一種兩難,它要麼繼承這種設計但需要支付高昂的版權費用,要麼另起爐竈但不會有用戶買它的車,因爲沒人願意買輛新車還要形成一套新的肌肉記憶。 API 也是這樣,判決指出:它的價值很大程度上體現爲程序員羣體對它的熟練掌握,以及複用這個 API 所能導致的學習成本節省。

因此,這個判決的核心就是宣佈:這種搭便車的做法屬於合理應用(fair use),不應該被懲罰。其中最核心的(也是大部分評論最關注的)是這樣一段論述:

“我們必須考量的是:對版權的保護是否促進了公衆利益,是否促進了創新。”(第31頁)

“考慮到程序員在學習 Java API 上的投資,如果把這個接口本身保護起來,會有害公衆利益,因爲這會迫使程序員不得不付出額外的努力去適應新的接口。新的創造就會被鎖起來,而鑰匙掌握在甲骨文一家手裏。這能讓甲骨文獲得不菲的利潤,但這些利潤本來可以流向大量掌握了這些接口的人能創造出的新的應用之中。因此這種鎖定是和版權的本意相違背的。”(第34頁)

可以想像,這些論述(特別是關於公衆利益的部分)的影響會非常深遠。

以上是關於這個判決本身。但我還有一些其他的感想。

在這個具體的例子裏,判決是和業界的常識(common sense )站在一起的。拷貝 Java 的接口(只佔 Java 總代碼量的極小比例)和拷貝 Java 的具體功能實現是兩碼事,不可同日而語。

但這裏沒有觸及的問題是,對一個系統而言,設計接口並不是一項無足輕重的工作。在某種意義上來說,一個平臺的接口和它背後的實現同樣重要。接口有點像程序員世界裏的“用戶界面”,一個好的接口可以決定性地讓一個平臺取得優勢。在某些極端的情況下,一個平臺的價值可以主要就體現在接口上。比如機器學習最流行的平臺之一 Keras,你可以說它整個就是一個 API ——它把具體實現全都交給後臺的 Tensorflow 或者 Theanos 來做了。(後來 Keras 被整合進了 Tensorflow,這裏說的是最初版本的情形。)

法律依賴於比喻,而比喻永遠是不精確的。如果把接口和實現的關係想象成一臺巨大的機器外殼上的幾個插頭和內部豐富的實際功能組件,谷歌的做法就相當於爲了兼容性照搬外殼上幾個插頭的設計而內部完全自己另起爐竈。但現代軟件工程並不是簡單的機器,你很難清晰拆分出外殼和內部。大多數情況下,你看到的是一層層功能的封裝,大量的智慧都投入在接口的設計上,而最底層的實現很可能只是瑣碎的細節工作而已。

區塊鏈是一個極端的情形。2016年,聯合廣場投資的分析師 Joel Monegro 寫了一篇極爲著名的文章: fat-protocols。他指出,和傳統網絡領域裏協議很輕而應用很重的情形相反,在區塊鏈的世界裏,協議是“胖的”,而應用無足輕重。投資於應用遠不如投資協議回報豐厚。例如以太坊是一個偉大的協議,它的價值遠遠勝過在運行在以太坊上的具體應用本身。——協議(protocol)當然和接口(API)不完全是同一個概念,但它們是強烈相關聯的。複製以太坊的全部接口差不多就相當於複製了以太坊本身。這件事又應該如何被比喻到現實世界之中呢?

當然,這並不意味着今天的判決表示你可以直接複製一整個 Keras 或者以太坊。在谷歌的案例裏還有許多別的因素需要考量(其中很重要的一點是 transformative use,也就是說,谷歌並不是打算創造一個 Java 的等價競品出來,安卓和 Java 是兩個不同領域的東西)。但這個判決畢竟在比喻的邊界處劃了一條明確的界限。——從今天業界的反應來看,這個界限得到了幾乎一面倒(除了甲骨文以外)的業內支持。

但其長遠影響有待分曉。

相關文章