API 不應具有版權

2014 年 12 月 16 日

上個月,電子前哨基金會 (EFF) 向美國最高法院提交了一份法庭之友狀,要求法官審查早先下級法院的一項裁決,該裁決允許 API(應用程式介面)具有版權。我是簽署此狀的 77 位軟體專業人士之一,儘管在一個包括 Abelson & Sussman、Aho & Ullman、Josh Bloch、Fred Brooks、Vint Cerf、Peter Deutsch、Mitch Kapor、Alan Kay、Brian Kernighan、Barbara Liskov、Guido van Rossum、Bruce Schneier 和 Ken Thompson 的小組中,我感到相當受寵若驚。

最初的訴訟是由 Oracle 對 Google 提起的,聲稱 Oracle 擁有 Java API 的版權,而 Google 在建構 Android 時侵犯了這些 API。我在此狀中的支持與這兩家科技巨頭之間的爭議細節無關,而是與智慧財產權法應如何適用於軟體,尤其是軟體介面有關。

我不同意認為軟體中不應有任何內容具有智慧財產權的觀點。雖然我確實認為 軟體專利本質上是有缺陷的,但版權是一種良好的機制,讓軟體作者可以在一定程度上控制其辛勤工作的成果。

軟體一直以來都是一種收入來源,因為它很容易複製。版權提供了一個法律基礎來控制至少一些複製行為。沒有類似這樣的機制,人們將很難專注於創作事物,同時還能負擔房貸。雖然我們都喜歡免費的東西,但我認為讓人們有機會從他們所做的工作中賺取生活費是公平的。

但是任何智慧財產權機制都必須在這種好處與過度智慧財產權限制可能阻礙進一步創新的風險之間取得平衡,無論是擴展發明或重新構想創作作品。因此,專利和版權制度都內建了一些形式的限制。其中一項限制是時間:專利和版權會到期(儘管 米老鼠中斷 對此構成威脅)。

介面是事物如何相互連接的方式。來自物理世界的範例是具有可互換鏡頭的相機。許多相機製造商並不鼓勵其他公司為其相機製造鏡頭,但這些第三方公司可以逆向工程介面的運作方式,並建構一個可以安裝在相機上的鏡頭。我們經常看到這發生在第三方零件供應商身上,而這些第三方在提供主公司不支援的更低成本和功能方面發揮了很大的作用。我使用 Sigma 鏡頭搭配我的 Canon 相機,因為 Canon(當時)沒有製造 18-200mm 鏡頭。我購買了相機的第三方電池,因為它們更便宜。同樣地,我又使用第三方零件修理了我的汽車,以降低成本或獲得更符合我需求的音響系統。

軟體介面大多相同,而延伸開放介面或逆向工程介面的能力在軟體系統的進步中扮演了重要的角色。開放介面是讓網際網路成長的關鍵,沒有人需要支付版權費用才能建置 HTTP 伺服器,或連線到伺服器。類 Unix 作業系統的成長很大程度仰賴於 AT&T Unix 的大部分原始碼受版權保護,但介面不受版權保護的事實。這讓 BSD 和 Linux 等分支得以遵循 Unix 的介面,而這有助於這些開放原始碼系統獲得關注,因為這讓建置在 Unix 上的程式更容易與新的實作互動。

SMB 和 Samba 的故事是一個很好的範例,說明了非版權 API 如何激勵競爭。當 Windows 成為主流的桌面作業系統時,其 SMB 協定主導了簡單的網路。如果非 Windows 電腦想要與主流的 Windows 平台有效溝通,它們就需要與 SMB 對話。由於無法與 SMB 溝通是競爭對手的障礙,因此 Microsoft 沒有提供任何文件來協助競爭對手執行此操作。然而,Andrew Tridgell 能夠推論出 SMB 的規格,並為 Unix 建置了一個實作,稱為 Samba。透過使用 Samba,非 Windows 電腦可以在網路中協作,進而鼓勵 Mac 和 Linux 系統的競爭。類似的事件在數年前發生在 IBM BIOS 上,當時 BIOS 已被競爭對手逆向工程。

自由市場系統的力量來自於競爭,這個概念表示,如果我能找到一種比當地麵包店更便宜或更美味的烘焙麵包方法,我就可以開一家麵包店並與他們競爭。隨著時間推移,我的小麵包店可以成長並與最大的麵包店競爭。為了讓這套機制運作,至關重要的是,我們必須建構市場,讓主導市場的既有業者無法建立障礙,以防止新人帶著降低成本或提升品質的創新進入市場。

對於軟體而言,軟體介面是這方面的關鍵點。透過讓介面保持開放,我們鼓勵一個具有競爭力的軟體系統市場,而這個市場鼓勵創新以提供更多功能並降低成本。關閉這個市場將導致不相容的電腦系統孤島,無法溝通。

此類不相容的孤島對新競爭者來說是一個相當大的障礙,而且光是這樣就已經很糟糕了。但對使用者來說也很糟糕。使用者重視可以協同運作的軟體,即使軟體的各種供應商對溝通不感興趣,我們也應該鼓勵其他供應商介入並填補空白。將系統串聯在一起需要開放介面,這樣整合人員才能安全地實作介面以建立通訊連結。我們重視實體世界中的標準連接器,雖然軟體連接通常變化多端,無法將所有東西都標準化,但我們不應該使用著作權法來增加更多障礙。

實作介面的需求也遠遠超過這個層面。作為程式設計人員,我們經常必須實作在我們的程式碼庫外部定義的介面才能完成工作。通常必須修改使用一個程式庫編寫的軟體,才能與另一個程式庫搭配使用 - 執行此項工作的有用方法是撰寫轉接器,透過轉發第二個程式庫來實作第一個程式庫的介面。在測試中實作介面也很重要,因為它允許您建立測試替身

因此,為了我們適當撰寫程式的能力、我們的使用者希望軟體協同運作的渴望,以及社會對刺激競爭的自由市場的渴望 - 不應將著作權用於 API。

附錄:最高法院裁決

此案提交最高法院,最高法院於 2021 年 4 月 5 日裁定支持 Google。在這項裁決中,他們沒有討論 API 是否具有著作權,而是裁定 Google 重新實作 API 的行為屬於合理使用。

我在上述文章中沒有考慮合理使用,但對我來說,這似乎是建構情境的有效方法,而且以這種方式處理 API 可以避免因 API 著作權而產生的問題。

意見書開頭的四頁摘要清楚說明了論點的邏輯。


致謝

Derek Hammer 提出了為轉接器和測試實作介面是程式設計的常規部分。Andy Slocum、Jason Pfetcher、Jonathan Reyes、Josh Bloch 和 Michael Barclay 對本文的草稿提出評論。特別感謝 Josh Bloch 協助組織我們 77 位簽署簡報的人。

重大修訂

2021 年 4 月 8 日:新增附錄

2014 年 12 月 16 日:首次發布