這篇是有關上一篇 Google vs Oracle的判決書 的回應。
因為有些朋友看完那篇後,覺得筆者寫得太爛不夠清楚,提了一些意見,我就把回應跟上一篇的回應一齊整理在這裡,大家可以…呃…參考參考:

強者我同學Bonoshi對中文整理意見:

其實我不大能接受這個作者的論述但自己又還提不出有力的反駁,他很顯然是在為專利和法律這兩個既存的實體辯護,然後藉著說外國媒體全都錯了表現自己相當冷靜客觀,因為一切只不過都按照規則來……
所以這個作者對法律本身沒有什麼反省,然後一會兒拿菜單一會兒又拿文學這些和程式設計不能相比的東西去比喻為自己的立場辯護,讓我覺得非常可疑

答案是:是的,因為這是判決書;事實上圖書館與文學的例子都是判決所提,圖書館的例子是地方法院所採用的比喻。
在新觀念出現的時候,法律可能會套用舊觀念來推衍新觀念適用的法條;著作權本來是要保護作者創作的事物而生的權利,無疑今天我拿筆寫下的文章無疑是有著作權的保護,那我用鍵盤打出來的文章是否類推?打出來的原始碼呢?
實務上被認定為有,軟體著作權是這樣一步一步推上來的,我相信這個問題在法學界跟過去的訴訟一定有被討論過:這部分可能要看早一點的案子 Computer Assocs. Int’l v.s Altai,裡面可能有討論。

當然不無網路和軟體改變法學認定的例子:例如我買了軟體,但我沒有取得所有權而是軟體授權,所以我是不能讓賣書一樣轉賣軟體;blog 放 mp3 我的確沒有營利,但仍可能侵犯著作權。
法律之解釋可能隨新事物的出現而有所變化,Michael Crichton所著的危基當前,就是對於基因被申請為專利現象的反思;但軟體的著作權,目前是個已定論的概念,本案更進一步確認即使是API,譔寫人仍擁有著作權。


關於「但Oracle在創作Java 時,並非只有有限種譔寫API的方式:Math.max 可以寫為Math.maximum。」
這並不成立,max和maximum都是歷史悠久的單字,後者至少18世紀出現,前者19世紀。如果API必須以有意義的單詞(自然語言、高階語言)作為組合,那就是有限種,而且種類相當的少,不能和旋律、音符或文學作品相比。
再加上程序編程又有所謂coding style和convention,max(x, y)顯然比bigger(x, y)還被廣為接受,而且我相信這也不是Java的發明。

這裡應該是我舉例不足,實際上不止是這樣。
因為命名的選擇性跟編排有極大的彈性,為何是Java.lang.Math.max,而不是Java.Math.max?

Oracle方的證詞顯示這些Java library在譔寫時,是經過數年的討論與測試,選擇出最佳的命名方式和class間的依序方式, 而google直接複製了這個編排過的命名(包括函式、物件、套件),也是本次討論中的重點。

關於「google在android中逐字的複製37個API, 7000行程式碼」37個API指的是API的命名(xxx.yyy.zzz),我查到的資料說Java API有168個package,不過我去算新版的又更多。
以比例來說,這樣還不算太糟不是嗎?如果有人說抄了一個API的命名就算抄,那接下來變數和函式的名稱是不是都要像公司商標和行號一樣有版權來保護了XD

我覺得這邊只能透過個案討論認定,抄了一個max也許會被認定為合理使用,但google被認定為抄了套件、物件、函式整體架構的所有命名, 如果我寫了一本書,有人抄了1/5的內容,這樣嚴不嚴重?抄了全本呢?只抄一行呢?抄了全本但把內容做random shuffle呢?
著作權的「合理」認定本身就是模糊的,所以才會說是「整部著作權法裡最大的麻煩」,但這類有點比例原則的問題,最簡單的判斷方式就是台語「謀郎安內」。
要把變數跟函式名稱要變做保護標的,被抄後要被認定是不合理,幾乎就跟我寫一篇小說設定女主角為「一個高中女生叫沈珈儀」然後要賠九把刀一樣困難。

然後我很好奇7000行代碼到底是怎麼分佈的,是連續的7000行全抄,還是散落在各處?還有Java那方的實做總共有幾行?什麼樣就一致,是整行當中扣掉空白和tab之後的字串一模一樣嗎?(我假設是這樣) 我沒有看過code我不知道,但是我覺得如果所有的程式碼當中,零零總總加起來不過只有7000行一致, 要是我是Google我可以看過Java的實做然後把所有的變數名稱全部換掉、順序盡量改得不一樣(想一下資結如果A作不出來,拿B的來交,就會作相同的事), 或是有些地方讀懂之後改成自己的方法,總之code改得很髒(也搞不好改得超乾淨,人家是Google耶……),最後比對之後沒有半行一致,可是這樣有意義嗎?

就我對Java的了解,應該是散落在各個java file裡面,google複製了前面的import, class name, class function declaration這些。
google在實作上是自行實作,所以應該可以預期google換掉大部分的變數名稱,判決書中有不少口語證詞跟文件證詞的部分,這裡我沒有細看。
而當然,爭議是在宣告的部分。

目前法院對軟體著作權並沒有任何界線,但有一套認定的程序在多次判決中被採用:(至少是non-literal code):abstraction – filtration – comparison。

  • Abstraction: break down the allegedly infringed program into its constituent structural parts.
  • Filtration: sift out all non-protectable material.
  • Comparison: compares the remaining creative expression with the allegedly infringing program.

詳細的內容我就不清楚了,但literal code中,法院會專注在filtration step (Mitel, Inc. v.s Iqtel, Inc.)

要認真抓,應該要分析每一行的敘述結構(比如說int a = max(b, c)和int d = max(e, f)等價)和整個函式的結構分析,但如果用了敘述結構和結構分析,那問題就變成一個程式如果不是演算法,他的執行步驟到底能不能被保護。 還有敘述結構這種可以和自然語言的句型相比的東西,根本不能被保護。 所以我很堅持,智慧財產權法必須重新檢討過,法院拿圖書館和菜單來有點落伍又避重就輕。

這個問題有點複雜,我留到下面跟戰神Milk大大的問題一起回覆。

7000行程式碼一致很顯然Google是可以避開的。 它沒有避開,那麼很可能代表它寧可不要創造出開發者完全不熟悉、但卻可以完全避開法律問題的東西(我們可以想想如果是微軟,它又會怎麼作XD)。 在信仰上,Google可能自始自終就相信最後自己不會因為這件事件產生嚴重的法律問題。

我認為:是。因為重新訓練使用者比抄襲合解難上太多。

至於google信仰上是不是真的無惡意的這麼做?我這裡就不臆測了,但有評論認為,google遲早會以同樣的API抄襲理由來阻止三星發佈Tizen 平台。


接著是戰神Milk大大的質疑:

是不是所有開發 C library 或實做部份 std function 的都應該要付授權金給標準制定協會?

不是,語言並不是著作權的部分

那麼一個 function 的API制定出來之後,是不是就可以 prevent 別人使用一樣的API,除非你付錢?

以本案的判決來看,是的,除非你的API只有一種制定方式(就實務上來看幾不可能),或是使用某語言所必須,此時你的API可能會因此喪失著作權。
的確不諱言,是否可能出現一些垃圾開發者先寫出一些程式碼,鼓勵所有人儘量使用;接著抽回授權開始一個一個控告?
因此我認為,所有的軟體授權都應開始正視這次訴訟的結果,修改軟體授權不溯及既往,發展不可否認的時間戳記。
事實上也有人認為這次判決能遏止大公司抄襲小公司發展的API,不過我個人對這樣成效是存疑,反而可能造成未來自由軟體授權更難推展,而是偏向保留著作權授權的後果。

Java在部份 syntax 上等也借鏡了c++ 的 syntax,倘若concept可以受著作權保護,這樣Oracle公司是否應該付費給 C++ 標準委員會或取得授權?

不是,concept在美國著作權法102(b)內有明定:

In no case does copyright protection for an original work of authorship extend to any idea, procedure, process, system, method of operation, concept, principle, or discovery, regardless of the form in which it is described, explained, illustrated, or embodied in such work.

概念是無法受著作權保護的,事實上這點Oracle也承認,任何人都可以使用Java的Package-Class-Method的架構,他們並不擁有架構的著作權,而是36個class,20 subclasses與362個methods的命名和編排著作權。

追問:Java 對既有的 C/C++ syntax 做出 extend 是否會侵害到原本的 C/C++ 可能使用族群的數量?如果有就是侵權行為?

還是否,syntax不是著作權法的保障範圍,你拿另一個語言的syntax怎麼用都是你家的事。
以寫書的比喻來說:我看有人用英文這個syntax寫書大賣,所以我也用英文寫,那個人能告我嗎?


共同提問:

軟體產業是否應該把 API 認定為著作,而法官的行為會對於軟體產業有什麼後果?

我認為這個問題相當複雜,我只好打混說一下。
此例中法官並沒有討論這個問題,他是基於現行著作權法對軟體程式碼(source code, object code)的保護下,對API作出類似的認定。
我認為這個問題軟體原始碼是否受著作權法時就會討論,相關判例見Johnson Controls, Inc. v. Phoenix Control Sys.

我必須說我認為著作權法這個概念本身沒什麼問題,今天我好不容易寫了一本書,別人真的可以全文複製,掛上它的名字然後再出版一次嗎?
但,軟體是一個如此詭異的東西,本質上是一個介在文學與數學的東西,一方面它透過數學的邏輯架構,用嚴謹的定義規範一系列的運算步驟;另一方面它又是人類和電腦溝通的簡化「語言」,能把人類思考的巧思融入其中。

參考著作權的維基 ,因為思考本身是無法申請為著作權的,從而「演算法、數學方法、技術或機器的設計」無法申請為著作,對海龍公式申請著作權會是一件很奇怪的事情。
那表達這式數學公式的軟體原始碼呢?我們為何能對一個演算法的原始碼申請專利呢?如果有最佳的解題步驟,不是應該每個人都寫出同樣的演算程式碼?
但世界不是這麼簡單,程式又融入了每個人的思考、想法,所以寫程式還是被歸入著作權當中,因為除去基本的演算法,把程式一塊一塊堆砌起來,還是需要設計師的巧思與智慧。

「複雜不含糊,嚴謹不簡明」
軟體的專利和原始碼的著作權爭議,相信未來仍會繼續下去。

題外話:

相比這個案例,我會說禁止相容PRM的規定,跟著作權延長、工具生產者入罪的危害大得多。
本案引用的相容性案例,甚至直接指認將自己的東西相容於先行者是可行的做法,我認為有這些判例在先,打造相容環境在判決中是被隱性保障的。

也因此我認為wine跟bumblebee這類利用反工程破解先行者的架構,再自行重建相容環境,法院基本上認為是合理,且無涉原著作權人的著作權行使。
註:google的確有試圖論述這點,但法院認定android是無法與java相容的。
但有了PRM跟工具生產者入罪的規定,現行的這個「判例見解」平衡會被打破,這部分我就不班門弄斧,相關資料請參考:
http://ckhung0.blogspot.tw/2012/02/sopa-acta-tpp.html

附記:

靠回應比判決書長是怎麼回事……拜託別逼我了 T_T,我要寫論文惹,不過最後請大家跟我高呼一聲:「開源碼萬歲,甲骨文去死」(誤)