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

阅读数:406 2012 年 11 月 10 日

话题:OracleGoogle社区语言 & 开发架构文化 & 方法

自由软件基金会(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 中文站发表的文章《当我谈开源时,我谈些什么?》,相信会让读者有所收获。