美国最高法院终审判决谷歌胜诉|判决书正文(1/5)

2021-04-07 21:31:00

【编者按】2021年4月5日,美国最高法院在甲骨文诉谷歌版权侵权一案中推翻了联邦巡回法院的判决,裁定谷歌的安卓移动操作系统使用甲骨文Java API源代码构成“合理使用”,不构成版权侵权。这场旷日持久的诉讼案历经十年多次反转至此落槌。下文为开放原子开源基金会对判决书正文的翻译,本判决书翻译我们将分为五期陆续发布,本文是判决书全文翻译之一。后续,我们还将对本案提到的重要法律问题进行评述,敬请期待。

 

谷歌诉甲骨文判决书全文双语比照版

司法案例翻译/英译中-Google LLC v. Oracle America Inc. 2021.pdf · master · Contransus · AtomGit

 

前文:

 


判决意见书

注:该判决意见书在《美国报告》首次刊印前将进行正式修订。请读者将任何印刷或其他形式上的错误告知美国最高法院判例报道员(华盛顿特区20543),以便在首次刊印前更正。

美利坚合众国最高法院

No.18–956

谷歌公司 v. 甲骨文美国公司

移审至美国联邦上诉法院的法庭令

【2021年4月5日】

BREYER法官发布了本院判决意见书。

 

甲骨文美国公司(Oracle America, Inc),为计算机平台Java SE的当前版权人,该Java SE使用的是流行的Java计算机编程语言。谷歌(Google)未经许可复制了该程序的一部分,此部分使得程序员能够在自身的程序中调用预写的计算任务,并可与计算机硬件一起执行大量的特定任务。下级法院已经考虑:(1)Java SE所有人是否可对从API中复制的代码段享有版权;及(2)如是,谷歌的复制行为是否构成对该代码段的“合理使用”从而免于承担版权侵权责任。联邦巡回法院支持甲骨文(即,该复制部分可受版权保护且谷歌的复制行为并不构成“合理使用”)。在复审该裁定时,本院基于各方抗辩认为涉案代码段是可受版权保护的。但本院裁定涉案复制行为仍然构成合理使用。因此,谷歌的复制行为并未违反版权法。

I

2005年,谷歌收购了一家名为安卓公司(Android, Inc.)的初创公司并希望能够涉足智能手机软件。谷歌试图通过安卓系统为智能手机等移动设备开发软件平台【886 F.3d 1179, 1187 (CA Fed.2018) ; App. 137-138, 242-243】。该平台为计算机程序员提供了开发新程序和应用程序的必要基础设施。人们可以把软件平台想像成类似一个工厂车间,计算机程序员(类似于汽车制造商、设计师或制造商)来这里后,可以使用从中找到的工具仓,并创建用于例如智能手机的新应用程序。(您可以查询随后附录A中资料,获取有关“平台”和其他某些计算机相关专业术语的直观解释。)

谷歌设想了一个免费且开放的安卓平台,以便软件开发人员可以免费使用平台上的工具。其理念是,越来越多的开发人员使用其安卓平台,便会产生更多的基于安卓系统开发的应用程序,如此一来谷歌基于安卓的智能手机将对终端消费者产生更大的吸引力。那么,消费者将更多购买并使用该智能手机【 Oracle America, Inc. v. Google Inc., 872 F. Supp. 2d 974, 978 (ND Cal. 2012); App. 111, 464.】。该愿景需要吸引大量有熟练技能的程序员。

当时,很多软件开发人员都使用甲骨文前身太阳微系统公司(Sun Microsystems)开发的Java编程语言来理解并编写程序【872 F. Supp. 2d, at 975, 977】。大约有600万程序员花费了大量时间来学习并使用Java语言【App. 228】。也有很多程序员使用太阳公司的Java SE平台来开发主要用于台式机和笔记本电脑的新程序【同上, 151-152, 200】。该平台使得开发人员无需考虑底层硬件设备,便能够使用Java语言编写可在所有台式机及便携式计算机上运行的程序(即,这些程序很大部分是“可互操作的”)【872 F. Supp. 2d, at 977】。的确,太阳公司的口号之一即“一次编程,随处运行”【886 F. 3d, at 1186】。

收购安卓公司后不久,谷歌就开始与太阳公司磋商可否许可其新智能手机技术使用整个Java平台【Oracle, 872F. 2d, at 978】。但谷歌并不坚持要求所有在安卓平台上编写的程序均可以互操作【886 F. 3d, at 1187】。正如安卓的创始人所解释的那样,“关于开源[平台]的整个设想是对人们的操作方式几乎没有任何限制”【App. 659】,但太阳公司的互操作性政策将破坏这种自由开放的业务模式。显然,由于此意见分歧,谷歌与太阳公司的谈判破裂了。随后,谷歌建立了自己的平台。

记录显示,大约有100位谷歌工程师用了三年多的时间创造了谷歌的安卓平台软件【同上,45, 117, 212】。如此一来,谷歌专门针对智能手机技术量身定制了安卓平台,该技术在一些重要方面均不同于台式机和笔记本电脑。例如,智能手机可以基于更加受限的电池运行,或者利用GPS技术【同上,197-198】。安卓平台为程序员提供了针对该环境进行编程的能力。为了建立该平台,谷歌编写了数百万行新代码。由于谷歌希望数百万熟悉Java语言的程序员能够轻松地使用其新的安卓平台,因而它还从Java SE程序中复制了大约11,500 行代码【886 F. 3d, at 1187】。复制的代码段是称作应用程序编程接口(或API)的工具的一部分。

什么是API?联邦巡回法院将API描述为“使得程序员能够通过使用预先编写的代码将某些功能构建到自己的程序中的工具……,而不用从头开始编写自己的代码来执行这些功能。” 【 Oracle America, Inc. v. Google, Inc., 750 F. 3d 1339, 1349 (2014)】。通过API,程序员可以利用庞大的预编写的代码库来执行复杂任务。对本说明的一些详细阐述对于包括法官、陪审团和许多其他人在内的非专业人员可能是有用的。

进一步详细考虑API的作用。一台计算机可以执行程序员可能想使用的数千个、甚至数百万个不同任务。这些任务范围可以从最基础到极端复杂。例如,要求计算机告诉您两个数字中哪个数字较大,或者以升序对一千个数字进行排序,计算机可立即提供正确答案。API以特定方式划分和组织计算任务。随后,程序员可以使用API选择其程序所需的特定任务。在太阳公司的API(即“Sun Java API”)中,每一单独的任务均被称为一个“方法”。API将有些相似的方法分组为更大的“类”,并将某些相似的类分组为更大的“程序包(package)”。这种“方法- 类-程序包”的组织结构称为Sun Java API的“结构、序列和组织”或SSO。

对于每个任务而言,都有其计算机代码,称作“实现代码”,其实际上可以告诉计算机如何执行您要求它执行的特定任务(例如,告诉您两个数字哪个较大)【 Oracle , 872 F. Supp. 2d, at 979-980】。本案中并不讨论实现代码(其由谷歌独立编写)。单个任务的实现代码可能长达数百行。对于程序员而言,如果不依靠预写的任务执行程序来执行离散任务,就很难创建复杂的软件程序。

但是,您作为程序员该如何告诉计算机应选择哪种实现代码程序,即应执行哪个任务呢?为此,您可以在您自己的程序中输入与特定任务相对应的命令并对其进行调用。这些命令称作“方法调用”,通过选择以实现代码编写的可以做到这一点的程序来帮助您执行任务,即,该程序将指导计算机,以便您的程序可以找到两个数字中的较大数字。如果一台特定的计算机可以执行一百万个不同的任务,则不同的方法调用将告诉计算机要选择哪些任务。那些熟悉Java语言的人已经知道无数的方法调用来为他们调用无数的任务。

那么(由程序员键入的)该方法调用如何实际定位和调用指示计算机执行特定任务所需的特定实现代码呢?它是通过另一类被业界称作“声明代码”的代码来实现的。声明代码是API的一部分。对于每个任务而言,程序员输入的特定命令与API内的特定声明代码相匹配。该声明代码既提供了每个任务的名称,又提供了每个任务在整个API组织系统中的位置(即,方法在特定类中的位置以及类在特定程序包中的位置)。从这个意义上说,声明代码和方法调用形成一个链,从而使程序员可以利用以实现代码编写的成千上万个预先编写的任务【同上,979-980】。没有该声明代码,程序员输入的方法调用将无法调用实现代码。

因此,声明代码在Sun Java API中至少有两个重要功能。其一且较明显的功能是,声明代码为程序员提供了一组快捷方式。通过将复杂的实现代码与方法调用相连接,声明代码使程序员仅需学习简单指令即可从API的任务库中选择特定任务。例如,某程序员为个人银行业务创建一款新应用程序,通过使用各种任务来计算用户余额或验证密码。为此,她只需学习与该等任务有关的方法调用即可。如此,声明代码的快捷功能类似于汽车中指示汽车加速行驶的油门踏板,或者您按特定键会调用特定字母的打字机键盘。由此类比可知,人们可以将声明代码视为人与机器之间接口的组成部分。

其二且不那么明显的功能是,声明代码反映了Java的创建者将不同任务的潜在世界划分为现实世界的具体方式,确切来说,声明代码反映了我们希望基于Java的计算机系统如何执行几百万个潜在不同任务以及我们如何将这些任务进行安排和分组。在此意义上,声明代码执行一种组织性的功能。它确定了Java创建者决定构建的任务库的结构。要了解这种组织性系统,可以考虑将图书归类为可访问系统的杜威十进制图书分类法(Dewey Decimal System),或将城市景点划分为不同类别的旅行指南。语言本身对声明代码的组织性功能提供了大致的类比,因为语言本身将概念集划分为一个世界,其他语言在某些方面可能进行不同划分。例如,Java开发人员决定在将名为“画图”的方法放入一个名为“图形”的类中。

举一个尽管牵强但全面的例子,来说明程序员实际上如何使用API。可以想象,您可通过某些按键指示机器人移至特定的文件柜,打开特定的抽屉并挑选特定的菜谱。机器人拿着合适的菜谱移动到您的厨房,并将其交给做饭的厨师。此示例反映了API与任务相关的组织系统。即通过您的简单指令,机器人便可找到正确的食谱并将其交给厨师。同样的,键入方法调用会促使API找到正确的实现代码并将其交由您的计算机。重要的是,正如您在选择用餐菜肴时无需知道菜谱内容,使用API的程序员在使用API时同样无需学习其实现代码。在前述两种情况下,学习简单的指令绰绰有余。

现在我们一起来看一下地区法院用以解释本案具体技术的示例【同上,980-981】。某程序员希望她的一部分程序可以确定两个整数的较大值。为此,她将首先使用Java语言编写 java.lang ,这些词(以粗体显示)指的是“程序包”(或类比文件柜)。然后,她将写 Math ,该词代表“类”(或类比抽屉)。随后,她将写 max ,该词代表“方法”(或类比菜谱)。随后,她将写入两个括号(),并在括号内键入两个她希望比较的整数,例如4和6。整个表达式(即方法调用)将表示如下:“java.lang.Math.max(4, 6)”。使用该表达式即可通过API调用一个确定较大数据的任务实现程序。

在编写此程序时,程序员将对我们粗体标识的符号进行精确排序。但是这些符号本身并无作用。她还必须使用将前述符号与对应文件柜、抽屉和文件连接的软件。该软件即API。它既包括将方法调用的各个部分连接到特定任务实现程序的声明代码,又包括实际调用其的实现代码。(有关该技术的说明,详见下文附录B)

现在,我们可以返回讨论本案争议的复制行为。谷歌并未从Sun Java API复制任务实现程序或实现代码。谷歌编写了自己的任务实现程序,例如那些可以确定两个整数哪个较大或执行任何其他所需(通常要复杂得多)的任务的程序。绝大部分的Sun Java API及谷歌为安卓创建的API 均由这类实现代码构成【App. 212】。针对新API中的大多数程序包,谷歌还编写了自己的声明代码。但是,有37个程序包,是谷歌从Sun Java API复制的声明代码【同上,106-107】。如前所阐述,这意味着对于这37个程序包而言,谷歌将必须同时复制指定的特定任务名称以及这些任务在类和程序包中的分组。

为此,谷歌从Sun Java API复制了使得Java编程语言的程序员专家能够使用他们已经学习过的“任务调用”系统的部分。正如谷歌所见,存在争议的37个程序包包括了那些对从事移动设备应用程序开发的程序员可能最有用的任务。实际上,“其中三个程序包是……使用Java语言的基础”【 Oracle, 872 F. Supp. 2d, at 982】。通过对那些程序包使用相同的声明代码,使用安卓平台的程序员可以依靠他们已经熟悉的方法调用来调用特定任务(例如,确定两个整数哪个较大);但是谷歌拥有调用这些任务的实现代码。如果没有这种复制行为,程序员将需要学习一个全新的系统来调用相同的任务。

我们补充说,安卓平台已经大获成功。基于安卓的设备在2007年发布的五年内占据了美国市场的很大份额【同上,978】。截至2015年,安卓的销售量产生了超过达420亿美元的收入【886 F. 3d, at1187】。

2010年,甲骨文公司收购了太阳公司。此后不久,甲骨文在美国加州北区地区法院提起了该诉讼。

 

II

此案的历史复杂而漫长。从一开始,甲骨文就指控谷歌对Sun Java API的使用行为同时违反版权法和专利法。针对其版权侵权主张,甲骨文指控谷歌复制了37个程序包的API的文字表达的声明代码及非文字表达的组织结构(或SSO)(即将某些方法划分为类,并将某些类划分为程序包),从而侵犯了其版权。出于审判目的,地区法院组织了三个诉讼流程。其一涉及版权问题,其二涉及专利问题,其三(如有必要)涉及损害赔偿的计算【 Oracle , 872F. 2d, at 975】。地区法院还裁定,应由法官确定版权法是否可以保护API,并由陪审团确定谷歌使用甲骨文API的行为是否侵犯了其版权;如是,合理使用抗辩是否适用【同上】。

经过六周的听证,陪审团驳回了甲骨文的专利权诉求(此后从该案撤回)。陪审团还认定版权侵权是有限的侵权。陪审团在谷歌是否能够成功主张合理使用抗辩上陷入僵局【同上,976】。地区法官随后裁定,无论如何,API的声明代码并非可扩大版权法保护范围的一种创作。法院指出,谷歌API绝大部分由其自身编写的实现代码构成。地区法官写道,“根据《版权法案》,任何人都可以自由编写自己的代码来调用完全相同的”由Sun Java API挑选或指定的任务【同上】。谷歌仅复制了受Java训练的程序员可激活其熟悉任务所必需的声明代码和组织结构(同时,如前所述,编写其自己的实现代码)。因此,在法官看来,复制的代码段是版权法明确指出不能受版权保护的“操作的系统或方法”【同上,977(引用 17 U.S.C.§102(b)】。

上诉中,联邦巡回法院推翻了地区法院的判决。联邦巡回法院认为,API的声明代码及其组织结构均可受版权保护【 Oracle , 750 F. 3d, at 1354】。联邦巡回法院指出谷歌可以像编写其自身的实现代码一样来编写自己的声明代码。而且由于原则上谷歌能够创建一个可由程序员调用的全新划分和标记任务的系统,因此构成Sun Java API的声明代码(和系统)可受版权保护【同上,1361】。

针对谷歌是否可基于其使用行为系“合理使用”而有权使用Sun Java API,联邦巡回法院也驳回了甲骨文的诉求,谷歌免于承担版权侵权责任。巡回法院写道,合理使用“既允许并要求‘法院避免在可能激发法律旨在培养的创造力的情况下严格地适用版权法”【同上,1372-1373】。但是,巡回法院补充道,这“并非记录中包含了足够事实调查结果的情况,基于此我们可以对谷歌合理使用的正面辩护进行重新评估。”【同上,1377】。巡回法院针对此问题将此案发回重审。谷歌向本院申诉,请求对联邦巡回法院的可版权性裁定进行复审。本院驳回了该申诉【 Google, Inc. v. Oracle America, Inc., 576 U.S. 1071 (2015)】。

在案件发回重审时,地区法院随同陪审团一起,进行了为期一周的听证。地区法院指示陪审团回答一个问题:谷歌是否“通过大量证据表明其在安卓中的使用行为”即其复制37个Sun Java API程序包的声明代码及其组织结构“构成了《版权法案》规定的‘合理使用’”【App. 294】?经过三天的审议,陪审团对该问题的作出肯定答复【同上,295】。谷歌已经证明了其系合理使用。

甲骨文再次向联邦巡回法院上诉。巡回法院再次推翻了地方法院的判决。巡回法院在所有事实问题认定上均支持谷歌。但是,巡回法院称,这些事实是否构成“合理使用”的问题是一个法律问题【886 F. 3d, at 1193】。在认定前述问题为法律问题后,巡回法院认为谷歌对Sun Java API的使用并非“合理使用”。巡回法院写道:“将一个受版权保护的作品逐字复制并将其用于与原作品具有相同目的和功能的竞争性平台上,绝不合理”【同上,1210】。针对损害赔偿的审判,巡回法院再次将案件发回重审。

谷歌随后向本最高法院提出了移审该案的诉请。谷歌请求本院复审联邦巡回法院关于可版权性及合理使用的裁定。本院批准了谷歌的复审诉请。

 

(未完待续)

 

 

 

译者:刘伟  郭雪雯

图片

判决摘要|美国最高法院终审判决谷歌胜诉,10年甲骨文谷歌版权诉讼落槌

2021-04-06 15:05:59

【编者按】2021年4月5日,美国最高法院在甲骨文诉谷歌版权侵权一案中推翻了联邦巡回法院的判决,裁定谷歌的安卓移动操作系统使用甲骨文Java API源代码构成“合理使用”,不构成版权侵权。这场旷日持久的诉讼案历经十年多次反转至此落槌。

上一篇

美国最高法院终审判决谷歌胜诉|判决书正文(2/5)

2021-04-09 03:19:00

2021年4月5日,美国最高法院在甲骨文诉谷歌版权侵权一案中推翻了联邦巡回法院的判决,裁定谷歌的安卓移动操作系统使用甲骨文Java API源代码构成“合理使用”,不构成版权侵权。

下一篇
Goto Top