Android遍地花開 背后是API抄襲的十年之訴

2021年6月7日 吳新

將近10年的甲骨文控告Google侵權使用Java SE API的官司在4月份落下了最后的結果——Google使用Java API并未違反著作權法。這樁官司起于2012年Java持有者甲骨文控告Google集中在Android系統中,侵權使用37項Java API程序代碼的“結構、串行和組織”,要求賠償88億美元。后來并提高到200至300億美元。最高法院以6:2的大法官判決結果,推翻了2018年10月聯邦上訴巡回法院的判決,認定Google對Java API屬于合理使用,軟件從業者們也卸下了心中的大石。

Android遍地花開,背后是API抄襲的十年之訴

1.Android抄襲的歷史問題


時間回到2005年,當時還是諾基亞、黑莓機等“半智能手機”橫行的時代。智能手機山雨欲來,但尚未呱呱落地,具有代表性之作蘋果iPhone要2年后才會問世,許多公司正緊鑼密鼓地秘密開發智能手機。


其中一家公司便是Google,Google僅花5000萬美元便并購了新創公司Android。Android 團隊決定以Java語言為核心,建造新一代的手機操作系統。當時 Java 主要用于電腦與服務器。而團隊負責人安迪·魯賓指出Java已有眾多的開發者與詳盡的文件,是發展智能手機系統最好的起點。


問題在于Google需取得Java的擁有者昇陽(Sun Microsystems)的授權。Sun Microsystems是IT及互聯網技術服務公司,創建于1982年,主要產品是工作站及服務器。1995年Sun Microsystems開發了Java第一個通用軟件平臺,在1997年Sun Microsystems開始推出其新的64位元服務器家族Sun Enterprise 10000,同年又開發出Java 2。


然而與昇陽的合作始終無法談成,最終安迪·魯賓在一封內部信中留下兩個選項:


(1)放棄并改用微軟的 CLR VM 與 C# 語言;


(2)硬做Java,然后捍衛決定,豎立更多敵人。


后來的進度表明Google選擇了(2),其采用了一個巧妙的作法:它沒有照抄Java所有的程序碼,而是只抄襲了Java的應用程序介面(Application Programming Interface, API)。


2.“拿來主義”伸向Jave API


API翻譯過來為“應用程序編程接口”,是一些預先定義的函數,目的是提供應用程序與開發人員基于某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節。


比如研發人員A開發了軟件A,研發人員B正在研發軟件B。有一天,研發人員B想要調用軟件A的部分功能來用,但是他又不想從頭看一遍軟件A的源碼和功能實現過程,怎么辦呢?研發人員A想了一個好主意:我把軟件A里你需要的功能打包好,寫成一個函數;你按照我說的流程,把這個函數放在軟件B里,就能直接用我的功能了!其中,API就是研發人員A說的那個函數。


Google重新寫了實際制作部分的程序代碼,主要是為了配合手機的特性,這部分稱之為執行碼(implementing code)。但 Google照抄Java 共 37 大項,11500 行的部分,稱之為屬性宣告碼(declaring code),然后還照抄了其組織方式(如下圖)。

Android遍地花開,背后是API抄襲的十年之訴

抄的好處當然多,當Java的工程師轉過來工作時,就不用重新學習 API 架構,只要使用已知的指令呼叫方式(method call)就能上手。


Google的策略成功了,Android 免費、開源,迅速席卷市場,成為市占率最高的手機操作系統。相對的,昇陽卻日落西山,于 2010 年被甲骨文并購。


甲骨文于2010 年控告 Google 侵犯其著作權,此案纏訟 10 年,不僅影響數百億美金的手機市場,也牽動軟件業的運行方式,被稱為“十年來最重要的著作權案”。


而今年這一曠日持久的官司蓋棺論定:Google 勝訴,推翻之前要求Google賠償88億美元的大法官斯蒂芬·布雷爾表示,允許甲骨文在其程程序碼上執行著作權,將使其成為限制科技未來創造力的枷鎖,從而損害公眾利益。


3.Google勝訴對軟件業的影響


為何Google擺明是抄襲,而且還挖角別家的開發者,卻可以勝訴?


首先要理解著作權是一種手段,不是結果本身。著作權的存在是為了鼓勵創作,特別是鼓勵創作那些易于復制的東西,例如電影、書、音樂等。如果沒有著作權保護,作品可以任意復制,作者無法從作品中獲利,那就沒有人進行原始創作了。如此來看,著作權是激發科學與藝術綻放的“催化劑”。


從某種意義來說,著作權的保護不是絕對的,著作權本質上是為了一個人(著作權人)的利益,限制整個社會的行為。所以一些國家也設下許多限制,限縮著作權的涵蓋范圍。例如若一個領域就算沒有著作權保護,可以蓬勃發展,那么著作權就不需要過度的伸張。


而美國最高法院本次判決的核心,就是認為允許Google抄襲Java的API反而有助于創造更活絡的軟件環境。不過這是跳到結論,我們先倒回去,討論個別的論點,Google 在上訴中提出了兩個主要辯護論點。


第一,Google主張API不受著作權保護,就像物理課本里的地心引力公式,或是字典的索引不應該受著作權保護一樣。


相反的,甲骨文則主張設計 API 是需要高度創造力。因為設計一套直覺、易記的 API 并不簡單,跟寫出《哈利波特》一樣需要創意。而且 API 有許多種設計方式,微軟與蘋果后來都開發出自己的 API,因此甲骨文所選的設計當然應該享有著作權的保護。


這其實是本案最重要的爭執點,也是軟件業最關心的部分。很可惜最高法院回避了此一問題,只說“為了方便討論,我們假設 API 具有著作權保護”,并直接跳到下一個論點。


第二,Google主張其是合理使用Java的 API。


如前述,著作權的保護不是絕對,會受到其他權利的限制。例如美國憲法第一修正案保證言論自由,因此雖然電視新聞享有著作權;但如果有人想要抨擊、嘲諷電視新聞,就可以取用其中一小段,拿來制作抨擊內容的材料,這是一種合理使用。


常見的合理使用包括評論、嘲諷、教學、研究、逆向工程等。本案中,法院必須根據 4 個要點來評估是否為合理使用:使用的目的和性質;著作權作品的性質;相對整個有著作權作品相比所使用的內容和數量;以及這種使用對有著作權作品的潛在市場或價值所產生的影響。


而最后判決之前,多數法官認為 4 個考量要點都對 Google 有利。法官首先考慮第 2 要點。他認為被抄的 API 與一般的程序代碼不同,其并不直接執行任務,只是開發者與程式碼之間的介面,且主要價值源自于開發者對于 API 的熟悉度,因此抄襲更可能是合理使用。


在第1要點上,法官認為Google 的抄襲也是一種轉化使用,從電腦應用轉移到手機,因此不會替代原本的使用場景。


在第3要點上,法官認為Google 抄襲的 API 僅佔總程序代碼的 0.4%。而且 Google 不是為了API 的創意抄襲,而是為了讓開發者能更快上手,不算實質性的抄襲。這有點類似我們制作一個同樣使用QWERTY介面的鍵盤,不是因為這樣的排列特別美麗或好用,而是因為大家都習慣了。


在第4要點上,法官認為 Android并不是Java的競爭者,沒有傷害Java的市場。也沒有證據證明如果Android沒有抄襲,甲骨文就能成功地進軍手機市場。事實上法官認為Android帶動更多人熟悉 Java 語法,反而擴大了Java的市場。


基于以上四點,多數法官認為 Google 抄襲 Java 的 API 屬于合理使用。允許其合理使用有助于加快軟件發展,且沒有傷害到甲骨文的原有市場,因此判決 Google 勝訴。


4.松了一口氣的軟件開發業


判決一出,軟件社群大多一片好評,紛紛驚呼:心頭大石終于落地了。因為使用既有的 API,再重新寫執行碼在業界實已是常態,如果甲骨文勝訴,整個軟件業都要重新調整。


然而發表不同意見書的克拉倫斯·托馬斯大法官則指出,多數法官的判決回避了核心的問題——API是否可以享有著作權保護。他認為 Android切實傷害了Java在手機市場的機會。托馬斯指出Java原本是手機領域最普及的程序語言。原本亞馬遜、三星都與甲骨文簽有 Java 的授權協議;但因為Google沒付錢、Android 又是開源的,導致亞馬遜把授權金砍到原本的2.5%,三星的授權金則從4千萬美金掉到1百萬美金。


托馬斯也不認為 Google 的使用方式有什么轉化,兩者 API 的功能根本一模一樣,從電腦到手機也不算真正的跨界。他進一步質疑,如果誰都能抄襲,那么未來誰還愿意投資開發直覺、好記的 API 呢?


從產業的角度來看,挪用API 已是常態,目前看來新 API 前仆后繼地出現,即可看見移動設備產業欣欣向榮的一面。如果判決反過來,變成每次寫新的軟件平臺都要重學 API 或是付授權金,整個產業又將是怎樣的場景呢?


未來軟件之間的 API 會更接近,更相容,也更容易開發,這是趨勢。可以確定的是,法院用了 62 頁判決,其中超過 10 頁解釋何謂軟件平臺、API 與程序代碼,證明了軟件已成為社會的骨干,亟需更多權利義務的定義。