写点什么

Richard Stallman 谈软件专利对开发社区的影响

  • 2012-11-10
  • 本文字数:2234 字

    阅读完需:约 7 分钟

自由软件基金会(Free Software Foundation)主席 Richard Stallman 最近在杂志上撰文分析了软件专利对开发社区的影响,批评了专利体系的弊端,同时呼吁限制软件专利的效力。

软件专利的官司在今年愈发频繁,最受人关注的莫过于 Oracle 与 Google 走上法庭

Oracle 收购 Sun Microsystems 的一个目的就是控制 Java 语言,而更为重要的则是其专利。在众多的大公司中,Oracle 的一个眼中钉就是 Google,其针对 Android(及其 Dalvik VM)的类 Java 编程语言导致其被 Oracle 指控,控告其违背了 Oracle 的专利与版权,甚至发现 Oracle 测试套件中的测试代码出现在了 Google 的仓库中。这场争论由来已久,从最开始的 132 个声明降到了 3 个,接下来又进一步降到了仅仅 2 个专利,其中一个专利将于今年 12 月到期。

法官 Paul Grewal让这两家公司尝试通过协商来解决问题。如果Oracle 能够证明Google 侵犯了其专利,那么Google 将会支付280 万美金。然而Oracle 拒绝了,认为Google 支付的太少。这个数字是根据到今年底( RE38104 到期日)Android 收益的 0.5% 及到 2018 年 4 月(专利 6061520 的到期日)Android 收益的 0.015% 计算出来的。值得注意的是,USPTO 已经判定 RE38104无效,但 Oracle 还会继续上诉。

最后一个专利(6061520)被 USPTO 判定为有效。由于这两家公司无法达成和解,因此 Oracle 期望证明 Android 违背了该专利,如果证实确实如此,那么 Oracle 会要求法庭确定赔偿额。该专利涉及到静态数组初始化的性能改进:该专利表示了对传统的静态数组初始化的改进,这是通过减少虚拟机执行的代码量以静态地初始化数组来实现的。为了实现代码量的减少,在联合类文件时,预加载器会识别出所有方法并执行这些方法以确定他们所执行的静态初始化。接下来,预加载器会创建出一个表达式以标明方法所执行的静态初始化并将该表达式存储到.mclass 文件中,然后替换掉该方法。这样,该方法的代码(包含了很多指令)就会被一个单独的表达式所替代,该表达式会指示虚拟机执行静态初始化,这样就会节省大量内存。虚拟机会被修改以识别出该表达式并对数组执行恰当的静态初始化。

Richard Stallman 首先指出某些软件专利并不是针对特定的应用程序,而是描述的一些想法、创意:

专利威胁着每一位软件开发人员,如你所见,我们担心已久的专利战争已经爆发。不论是软件开发人员还是软件用户都应该让软件不受专利约束。

威胁我们的专利称为“软件专利”(software patents),但是这个词会让人误解。实际上,这种专利不是针对某一个具体的应用程序,而是描述了一些想法和创意,如果有人未经授权使用了该创意,那么就会被起诉。所以,比较清楚地叫法应该是“计算性想法专利”。

美国的专利体系没有说明哪些是软件专利,哪些不是。软件开发社区应该区分对我们不利的专利,如果有一些物理方面或者化学方面的专利,那么不会威胁到软件领域,但是如果是描述的计算思想,那么可能会影响到开发社区。

Richard Stallman 引用了公共专利基金会 Dan Ravicher 对 Linux 系统的研究数据指出,一个程序不经意间会涉及到大量的专利威胁:

Dan Ravicher 在研究 Linux 时发现,该程序源代码中涉及到的计算思想涉及到 283 项美国专利,而估计 Linux 只占整个 GNU/Linux 系统的 0.25%,所以由此可以看出问题的严重性,该系统收到大约 10 万项专利的威胁。即使其中有半数专利被取消,情况也不会发生根本好转,无论是 10 万还是 5 万,都是噩梦。

他认为应该从整体解决这个问题:

我们需要从根本上解决这个问题。通常的建议是修改专利标准,比如,禁止颁发计算方法和系统方面的专利。但这种方式有两大缺点。
首先,专利律师非常擅长重新描述专利,使其适合任何标准的规定。他们将限制专利实质的任何尝试变成仅仅是形式的需要。例如,许多美国计算想法专利描述了一种执行特定计算的系统,它包括一个算术单元、一个指令顺序器、一个存储器加上一些控制组件。这是一种描述计算机的特殊方式,该计算机运行执行特定计算的软件。它设计成使专利申请符合美国专利系统的标准。
其次,美国已经拥有数千种计算想法专利,修改标准避免颁发更多专利解决不了现有专利的问题。我们需要等近 20 年,直到这些专利过期后才能完全解决这一问题。立法废除现有专利可能违反宪法。

最后,Richard Stallman 提出,应该限制软件专利的效力来解决这个问题:

我的建议是修改专利的效力。我们应该立法规定,在通常使用的计算设备上开发、分发或运行应用程序不会构成专利侵权。这种方式有以下优点:

  • 它无需将专利申请分为“软件”或者“非软件”。
  • 它防止开发者和用户受到现有或未来可能出现的计算想法专利威胁。
  • 专利律师不能通过换种方式填写申请战胜预期效力。

这种方式不完全废除现有的计算想法专利,因此它们将继续适用于使用特定用途的硬件的实现。这是一大优点,因为它避免了该计划的合法性争议。几年前,美国出台了一部法律,保护外科医生遭遇法律诉讼。即便外科手术步骤已经申请专利,外科医生也是安全的。这为该解决方案提供了先例。

有 Oracle 和 Googl 的官司的最新进展可以查看 InfoQ 的相关新闻:

提到软件专利,有人就会想到另一个方面——开源,笔者推荐庄表伟在 InfoQ 中文站发表的文章《当我谈开源时,我谈些什么?》,相信会让读者有所收获。

2012-11-10 01:341588
用户头像

发布了 501 篇内容, 共 283.6 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

Stage模型深入解读

HarmonyOS开发者

HarmonyOS

vue实战中的一些小技巧

yyds2026

Vue 前端

3.15 数据库吐槽大会

NineData

数据库 mongodb 云计算 程序员 图数据库

【记】滑动拼图验证码在搜索中的作用

宙哈哈

Python html 验证码

2023秋招前端面试必会的面试题

coder2028

JavaScript 前端

深入nodejs的event-loop

coder2028

JavaScript 前端

前端常考面试题整理

hellocoder2029

JavaScript 前端

焱融科技发布国内首个NVIDIA DGX A100 + 全闪存储参考架构白皮书

焱融科技

文件存储 容器存储 分布式文件存储 高性能存储 全闪存储

美团前端高频面试题集锦

Geek_02d948

JavaScript 前端

SpringBoot中事件与通知

石臻臻的杂货铺

spring springboot

前端必会vue面试题(必备)

yyds2026

Vue 前端

LeetCode题解:137. 只出现一次的数字 II,哈希表,JavaScript,详细注释

Lee Chen

JavaScript LeetCode

基于rsync实现海量文件高速传输的解决方案

镭速

你需要知道的webpack高频面试题

Geek_02d948

JavaScript 前端

一文彻底搞懂前端缓存机制

hellocoder2029

JavaScript 前端

2023秋招前端面试必会的面试题

Geek_02d948

JavaScript 前端

拿到大厂前端offer的前端开发是怎么回答面试题的

hellocoder2029

JavaScript 前端

《三体》问题

蓬蒿

CPU 寄存器 延时

前端经典面试题(有答案)

coder2028

JavaScript 前端

彻底搞懂nodejs事件循环

coder2028

JavaScript 前端

打造语言大模型的生成式AI,澜舟科技一年内完成数亿元融资

澜舟孟子开源社区

人工智能 AIGC

深入理解 Taier:MR on Yarn 的实现原理

袋鼠云数栈

hadoop

vue的几个提效技巧

yyds2026

Vue 前端

ArkUI中的线程和看门狗机制

OpenHarmony开发者

OpenHarmony

一文彻底读懂webpack常用配置

Geek_02d948

JavaScript 前端

一文读懂Js中的this指向

hellocoder2029

JavaScript 前端

前端常考vue面试题(必备)

yyds2026

Vue 前端

21天吃透这套字节面试题后,我成功跳槽进了字节,税后25K

Java 数据结构 面试 算法

如何评估某活动带来的大盘增量 | 得物技术

得物技术

AI 数据

Richard Stallman谈软件专利对开发社区的影响_Oracle_崔康_InfoQ精选文章