查看原文
其他

Oracle 复制 AWS 的 API:这侵犯了版权吗 ?

云头条 Java面试那些事儿 2020-10-08

作者:CharlesDuan
本文表达的观点不代表本号观点

观点:想在软件行业参与竞争,复制API很关键。

今年初,美国最高法院将审理一起重要案子,该案子将根据版权法确定应用编程接口(API)的法律地位。如果最高法院在Oracle对谷歌的Android平台提起的数十亿美元诉讼中判Oracle胜诉,可能会遏制竞争,并巩固主导性技术公司的地位,可能包括谷歌本身。

Oracle之前指控谷歌复制Java编程语言的API,因此侵犯了版权。API本质上是一种指导计算机执行何种操作的语言。它包括与语法结构有关的一整套命名的命令,语法结构明确了如何使用那些命令。为了使Java软件可以执行预定义的任务,比如计算正弦函数或加密消息,程序员必须精确地使用那些命名的命令和语法结构,就像Waffle House餐馆传达精确的烹饪用语“摊开、焖煮、切块”,才能确保土豆煎饼订单正确。

谷歌的Android旨在与Java API兼容,以便已经熟悉Java的程序员可以轻松地将其软件和知识带到这个新的移动设备平台。为此,Android必须精确复制相关的Java API命令和语法结构。Oracle的观点是,这种“重新实现”Java API的做法好比编写未经授权的《哈利•波特》小说,因此侵犯了Oracle在JavaAPI命令名称和语法结构方面持有的版权。

但Java API并不是唯一的API,Android也不是唯一的重新实现。API在现代技术中随处可见,而重新实现是确保在计算机行业参与竞争、防止大公司锁定现象的一个重要手段。

# Oracle复制亚马逊的S3 API是否侵犯了版权?


不妨以亚马逊流行的数据存储平台S3为例。为了让程序员在S3上存储和检索文件,亚马逊构建了一套全面而详细的API,以便与该服务进行交互。比如说,想获取已存储文件的列表,程序员可发送文件夹名称作为语法对象的命令名称GET,并附带隐式标记的信息,比如encoding-type、continuation-token和­x-amz-date。软件必须使用这些确切而隐秘的术语以及大量其他用语,才能使用亚马逊S3。

随后涌现出众多竞争对手,与亚马逊领先市场的云服务一较高下,这不足为奇。为了说服程序员放弃使用亚马逊的产品,这些竞争对手重新实现了S3的API。这么一来,竞争对手就要模仿命令名称、参数标签、“x-amz”短语、语法结构以及S3 API的整体组织——换句话说,这正是Oracle认为受版权保护的那些东西。

当然,竞争对手使用的编程语言可能与亚马逊使用的不同,因此内部软件代码可能看起来不像一字不差的复制。但是用另一种计算机语言实现API就是一种翻译行为,而将受版权保护的作品翻译成另一种语言被明确认为是侵犯版权。

提供亚马逊S3的一份API的公司当中就有Oracle本身。为了与S3兼容,Oracle的“亚马逊S3兼容性API”(AmazonS3 Compatibility API)复制了亚马逊API的众多元素,连x-amz标签都复制了。

Oracle在这里侵犯了亚马逊的版权吗?IT外媒Ars Technica联系上Oracle,询问他们有没有复制亚马逊S3 API的许可。Oracle发言人表示,S3 API采用了Apache 2.0许可证。她向我们指出Amazon SDK for Java确实附带Apache 2.0许可证。

然而,Amazon SDK是使用S3 API的代码,而不是实现S3 API的代码——这就是订购土豆煎饼的客户与阐明订单的Waffle House厨师之间的区别。使用API的代码其组织方式与实现API的代码将全然不同,它甚至可能不包含整套API。而Oracle多年来一直认为,使用API与重新实现无关,也不侵犯版权(否则,所有使用Java的应用程序开发人员都将侵权)。Oracle不能一边认为使用API的代码并不包含来自API的版权内容,另一边又认为使用API的代码包含API中让Oracle有权重新实现S3所必需的全部版权。

即使Apache许可证果真适用,Oracle似乎也不遵守该许可证的条款。Apache许可证的第4款要求附上与衍生作品有关的通告和归属声明。不过我在Oracle的说明文档或其官网上任何地方都没有看到归属亚马逊或提到Apache许可证的任何说明。

# API版权会带来法律雷区

重新实现像亚马逊S3这种API的公司绝非Oracle这一家,少数云存储系统也在这么做。整个技术行业还有许多其他API和重新实现。确保信息经济高度互联的Wi-Fi和Internet协议等技术标准都涉及API,使用任何现代通信技术的每一台计算机和设备势必都重新实现API。Oracle所持的版权论会将你用计算机所做的几乎任何事情(从阅读在线文档到观看视频)都变成法律雷区。

为了避免这些深远的影响,Oracle和支持Oracle观点的上诉法院已试图将版权侵权行为限制于部分重新实现与原始API“不兼容”的API。但是部分重新实现司空见惯,而且常常在预料之中。连Oracle的S3兼容性API都指出它与亚马逊API的众多“差异”和不兼容之处。

Oracle提起版权诉讼的危险在于,它可能阻止小型科技公司构建主导性软件平台的兼容版。如果没有这种兼容性,熟悉主导公司的API的软件程序员实际上将被这家公司的产品牢牢锁定。当然,竞争对手可以请求使用API的许可,但通过版权法为公司赋予看门人的权力以监管竞争对手,这对于竞争激烈的软件市场而言不是好兆头。

最新消息:Oracle向Ars Technica发来了以下声明

Apache许可证是一种宽松的开源许可证,任何针对特定使用场景的理由(比如“SDK与非SDK”)都改变不了许可证的可用性或性质。它允许下游用户复制和修改代码,并将该代码用在自己的项目中,基本上没有多少限制。这就是为什么使用Apache许可证的代码在商业产品中广泛使用。AWS明白这一点,并显然有意选择使用一种更宽松而不是更严格的许可证(比如GPLv.2)。
热文推荐

重构代码花 1 年!程序员血泪史:千万不要重写代码!

说实话,你工作5年,不知道什么是Java agent技术,让我很吃惊...

如何在IntelliJ IDEA 中使用 Git ?你会没...



觉得不错,请给个「在看」

分享给你的朋友!


点我,查看更多精彩文章。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存