这是针对英文原版页面的中文翻译。

软件专利——软件开发的障碍

这是 2002 年 3 月 25 日 Richard M. Stallman 在剑桥大学 计算机实验室 进行的一次演讲的笔录。该演讲由 信息政策研究基金会 组织。

Nicholas Hill 负责笔录(原版)和 录音。Markus Kuhn 和 GNU 网管负责 HTML 编辑和链接。


你可能很熟悉我在自由软件方面的工作。这次演讲和那方面无关。这次演讲是关于滥用法律使软件开发成为危险活动的一种方式,是关于专利法应用于软件领域的时候会发生什么。

这和为软件申请专利无关。那是一个非常糟糕的、具有误导性的描述方式,因为这不是为个别程序申请专利的问题。如果是那样的话,就没有什么区别了,它基本上是无害的。这是关于为想法申请专利的问题。每个专利都包含一些想法。软件专利是包含软件想法的专利,你在软件开发中可能会用到这些想法。这使得它们成为所有的软件开发的危险障碍。

你可能听到有人使用一个带有误导性的词语“知识产权。”如你所见,这个术语存在偏见。它假定无论你在谈什么,对待它的方式只是众多产权中的一种。这个术语“知识产权”预判了你所处的任何领域中最基本的问题。这不利于理清和打开我们的思路。

此外还有一个无关于宣扬任何观点的问题。它甚至妨碍了对事实的理解。“知识产权”这个术语包罗万象。它将完全不同的法律领域结合在一起,比如版权和专利,而这两者是完全不同的。它还将商标——这甚至更加不同,以及其他各种常见的事物或多或少地混为一谈。它们中任意两者之间没有任何共同之处。它们的起源在历史上是完全独立的。 这些法律是独立地设计的。它们涵盖了生活和活动的不同领域。它们提出的公共政策问题完全不相关。因此,如果你试图把它们混为一谈,你肯定会得出愚蠢的结论。从“知识产权”的字面意思上,你看不出它有什么明智的观点。如果你想清楚地思考,就不要把它们混为一谈。先思考版权,然后再想想专利。学习版权法,然后单独了解专利法。

版权和专利的最大不同在于:

  • 版权涉及的是作品表达的详情;版权不涉及想法。认为版权涉及想法是一种错误的法律意识。但是专利 涉及想法和想法的使用。

  • 版权自动发生。专利要由专利局根据申请发放。专利要花很多钱。他们付给律师写申请书的费用甚至比实际申请的费用还要高。尽管专利局在考虑方面做得非常草率,但申请通常还是需要几年时间才能得到考虑。

  • 版权持续的时间很长。在某些情况下它们能够持续长达 150 年,而专利则持续 20 年,虽然你活得过这个时长,但在软件等领域的时间尺度上,20 年的时间仍然相当长。

    回想一下 20 年前,那个时候个人电脑还是个新鲜玩意儿。在 1982 年,开发者们在开发软件时的想象力只能限制在已知的想法上。

  • 版权涉及复制行为。如果你写的小说与一字不差,而且你能够证明自己从未看过,那在受到任何侵犯版权的指控时,这就可以成为辩护的理由。

    专利是对使用某个想法的绝对垄断。即使你可以证明你自己有这个想法,但如果这个想法已经被别人申请了专利,那么它就与你毫无关系。

我希望在接下来的演讲中,你们能够忘记版权,因为这个演讲是关于专利的,你们不应该把版权和专利混为一谈。这是关于你对这些法律问题的理解。这就像你在理解实用化学时,混淆了水和酒精。

专利系统

当你听到人们描述专利制度时,他们通常是从希望获得专利的人的角度来描述它——你获得专利之后会是什么样子。如果你走在街上,口袋里装着一项专利,你就可以时不时地把它拿出来,指着别人说:“把钱给我!”这种偏见是有原因的,那就是大多数告诉你这个专利制度的人都与它有利益关系,所以他们希望你喜欢它。

还有另外一个原因——专利制度很像彩票,因为实际上只有很小一部分专利给拥有专利的人带来了某些好处。事实上,经济学人曾经把它比作耗时的彩票。如果你看过彩票广告,他们总是邀请你考虑赢。他们不会让你去想输,即使输掉的可能性更大。专利系统的广告也是如此。他们总是邀请你去思考成为那个赢家。

为了平衡这种偏见,我将从受害者的角度来描述专利制度。从某些人的角度来看,他们想开发软件,但又不得不面对一个可能会导致他们被起诉软件专利制度。

那么,当你有了写一个什么样程序的想法之后,你要做的第一件事是什么?你可能想要做的第一件事就是处理有关专利制度的事情,找出哪些专利可能覆盖你想要写的程序。这是不可能的。原因是有些专利申请是保密的,它们可能需要一段时间才会出版,比如 18 个月。但对于你来说,这是一段充足的编写程序的时间,你甚至已经在不知道会有专利的情况下发布程序,然后你就会被起诉。 这不仅仅是学术问题。1984年,压缩程序被编写出来,这是一个数据压缩的程序。当时,它使用的 LZW 压缩算法没有专利。然后在1985年,美国就这个算法发布了一项专利,在接下来的几年里,那些分发压缩程序的人开始受到威胁。压缩程序的作者不可能意识到他可能会被起诉。他所做的就是使用他在期刊上看到的一个想法,就像程序员一直以来所做的那样。他没有意识到再也不能安全地使用在期刊中看到的想法了。

让我们忘记这个问题吧……已颁发的专利由专利局公布,你可以找到一长串的专利清单,看看他们到底说了些什么。当然,你实际上不可能读完整个列表,因为它们太多了。在美国,有数十万的软件专利。所以你不得不搜索相关的专利。有人说使用计算机这个容易做。你可以使用关键字之类的搜索。是的,某种程度上可以。你会搜到相关领域的一些专利。但是,你不太可能找到所有相关的专利。

例如,有一个关于电子表格自然顺序的重算软件专利,我觉得现在可能已经过期了。它是说,当你让某些表项依赖于其他表项时,它总是在它所依赖的东西之后重新计算所有内容,这使得在每一次重新计算后,得到的内容都是最新的。第一个电子表格自上而下地重新计算,因此,如果你让表项依赖于下方的表项,并且您有几个这样的步骤,则必须重新计算几次才能使新值向上传播。你应该让待查找的表项依赖于它们上面的表项。 然后有人意识到为什么我不重新计算一下,这样所有的东西都可以根据它所依赖的东西重新计算?这种算法被称为拓扑排序。我能找到的第一个关于它的资料是在1963年。该专利涵盖了几十种不同的实现拓扑排序的方法,但你无法通过搜索电子表格找到这个专利。你不可能通过自然顺序或拓扑排序找到它。它没有这些关键字。实际上,它被描述为一种将公式编译为目标代码的方法。当我第一次看到它的时候,我以为不是这个专利。

让我们假设你有一个专利列表。而你想知道你不被允许做什么。当你试图研究这些专利时,你会发现它们非常难以理解,因为它们是用曲折的法律语言写成的,其含义非常难以理解。专利局所说的往往不是表面上的意思。

在 20 世纪 80 年代,澳大利亚政府对专利制度进行了研究。报告的结论是,除了国际压力,没有理由建立专利制度。它对公众没有好处,如果不是因为国际压力,建议废除它。他们引用的一个事实是,工程师们不会试图通过阅读专利来学习任何东西,因为它们太难理解了。他们引用一位工程师的话说:“我都没法从专利中认出自己的发明。”[笑声]

这不仅仅停留在理论上。大约在 1990 年,一位名叫 Paul Heckel 的程序员起诉苹果公司,声称 Hypercard 侵犯了他的几个专利。当他第一次看到 Hypercard 时,他不认为这和他的专利或者他的“发明.”有什么关系。它看起来并不相似。当他的律师告诉他,你可以把这些专利解读为涵盖 Hypercard 的一部分时,他决定攻击苹果公司。 当我在斯坦福大学发表关于这个问题的演讲时,他就在听众席上,他说“这不是真的,我只是不明白我的受保护程度!”[笑声] 我说,“是的,这就是我的意思!”[笑声]

因此,你会花大量的时间和律师讨论清楚这些专利究竟不让你做什么事情。最终他们会说类似这样的话:“如果你在这儿做一些事,你肯定会输;如果你在这儿做些别的,那么很有可能会输;如果你真的想要安全,就离这个领域远点。而且,顺便说一句,任何诉讼的结果都存在相当大的偶然因素。”[有听众窃笑]

开发者如何对付专利

现在,你已经有了一个可预测的业务领域(!)[有听众窃笑]你打算做什么?有三种方法你可以想要尝试。其中任何一种只在某些情况下适用。

它们是

  1. 避免专利
  2. 专利授权,或者
  3. 在法庭上推翻专利。

让我来描述一下这三种方法以及它们的可行性和不可行性。

1)避免专利

这意味着不要使用专利所涵盖的想法。其难易程度取决于这个想法是什么。在某些情况下,一项功能已经获得专利。然后你就可以通过不实现这个功能来避免专利。那么这个功能的重要性就很重要了。在某些情况下,你可以没有它。

不久前,文字处理器 XyWrite 的用户收到了降级邮件。降级删除了允许你预定义缩写的功能。当您键入一个缩写词后跟一个标点符号时,它会立即用一些扩展名替换自己。这样你就可以定义一些长词组的缩写,输入缩写,长词组就会出现在你的文档中。他们写信告诉我,因为他们知道 Emacs 编辑器也有类似的功能。实际上,它从70年代就有了。这很有趣,因为这件事情告诉我,在我的生活中我至少有一个可以申请专利的想法。[笑声] 我知道它是可以申请专利的,因为后来有人申请了专利!事实上,他们已经尝试了这些不同的方法。 首先,他们试图与专利持有人谈判,结果发现他们并不是真心诚意地谈判。然后他们考虑是否有机会推翻专利。他们决定去掉这个功能。你可以没有这个功能。如果文字处理器只缺少这个功能,也许人们仍然会使用它。但是随着各种功能开始受到冲击,最终你会得到一个人们认为不是很好的程序,他们很可能会拒绝它。

这是一个非常具体的功能的相当狭窄的专利。你如何处理关于遍历超链接和拨号访问内容的 英国电信专利?遍历超链接对于当今计算机的主要应用来说是绝对必要的。拨号上网也是必不可少的。如果没有这个功能,你该怎么办? 顺便说一下,这个功能甚至不是一个功能,它实际上只是两个功能随意并列的组合。这就像在同一个房间里拥有沙发和电视的专利一样。[笑声]

有时专利的想法是如此广泛和基础,以至于排除了整个领域。例如,在美国获得专利的公钥加密的想法。该专利于1997年到期。在此之前,它在很大程度上阻止了在美国使用公钥加密。人们开始开发的一些项目被粉碎了。因为专利持有人的威胁,这些项目从来没有真正可用过。 然后,一个程序逃脱了。程序 PGP,最初是作为自由软件发布的。显然,当专利持有人开始攻击时,他们意识到他们可能会受到过多的负面宣传。因此,开发者们为其施加了限制,使其仅用于非商业用途,这意味着它无法太过流行。因此,他们大大限制了公开密钥加密的使用,这个限制达到十年或更长时间。没有什么办法绕过这个专利。除此之外你什么也做不了。

有时候特定的算法能够获得专利。例如,一项快速傅里叶变换的优化版本的专利。它的运行速度大约是原来的两倍。你可以在程序中使用普通的快速傅里叶变换(FFT)来避开这个专利。程序的这一部分将花费两倍的时间。或许这并不重要,或许这只是程序运行时间的一小部分。又或许它慢了一倍你也感受不到。但也可能你的程序因此无法运行,因为它需要两倍的时间来完成工作。具体的影响因人而异。

在某些情况下,你可以找到一个更好的算法。这可能对你有好处,也可能没有。由于我们不能使用 compress 算法,所以我们开始寻找一些其他的可用于 GNU 项目中的数据压缩算法。有人给我们写信说他有一个(压缩算法)。他写了一个程序,并决定把它贡献给我们。我们打算发布它。偶然的情况下,我碰巧看到一份《纽约时报》的副本。这份报纸碰巧有每周专利专栏。每隔几个月,我就只看一次《纽约时报》,所以我看了看,上面写着有人获得了“发明一种压缩数据的新方法。” 我想我最好看看这个专利。我拿到了一份副本,结果它涵盖了我们距离发布仅一周的程序。那个项目在出生前就夭折了。后来我们确实发现了一个未申请专利的算法。那就是后来的 gzip 程序,现在它已经成为了数据压缩的事实标准。作为在程序中用于数据压缩的算法,它挺不错的。任何一个想做数据压缩的人都可以使用 gzip 来代替 compress。而同样的专利 LZW 压缩算法也用于图像格式,例如 GIF 格式。 但是,因为人们想要做的工作不是简单地压缩数据,而是制作一个人们可以用他们的软件显示的图像,所以要切换到不同的算法变得非常困难。我们花了10年也没有做到这一点!是的,人们使用 gzip 算法定义了另一个图像格式(PNG),以防人们因使用 GIF 文件而受到法律诉讼的威胁。当我们开始告诉人们停止使用 GIF 文件,切换到这个新的格式时,他们说:“我们不能切换。浏览器还不支持这种新格式。”浏览器开发者则说:“我们不急着做这件事儿。毕竟还没有人使用这种文件格式。”[笑声]

实际上,社会在使用 GIF 格式方面有很大的惯性,我们一直无法促使人们切换使用习惯。从本质上讲,社区对 GIF 格式的使用仍在推动网站使用 GIF 格式,结果它们容易受到这些威胁的影响。

实际上,情况更加离谱。有两项专利在事实上涵盖了 LZW 压缩算法。专利局甚至不知道他们为同一件事物签发了两项专利。他们没办法追踪。这是有原因的。对这两项专利的研究需要一段时间,才能看出它们真的涵盖了同样的内容。

如果它们是某种化学工艺的专利,那就容易多了。你可以看到使用了什么物质,输入是什么,输出是什么,采取了哪些物理行动。不管它们是怎么被描述的,你都能够直接看到它们是什么,然后你会发现它们是相似的。

如果一个事物是纯粹的数学问题,那么有很多种描述它的方式,它们之间的差异要大得多。它们表面上并不相似。你必须真正理解它们,才能看出它们在谈论同样的事情。专利局没有时间。就在几年前,美国专利局(US Patent Office)处理每项专利的平均时间为 17 个小时。这个时间不够长,不足以仔细思考,所以,他们会犯这样的错误是理所当然的。实际上,我刚刚讲过关于在诞生之前就夭折的那个程序。那个程序使用的算法还在美国获得了两项专利。显然,这并不罕见。

避免专利可能很容易,也可能是无法做到的。即便很容易,但这种方法可能使你的程序变得毫无用处。这取决于具体情况。

这里还有一点我需要提一下:有时候一个公司或者联盟可以将一种格式或者协议作为事实上的标准。然后,如果这种格式或协议获得了专利,那对你来说就是一场真正的灾难。甚至还有受专利限制的官方标准。去年 9 月,当万维网联盟提议开始采用被专利覆盖的标准时,引起了一场巨大的政治骚动。社区反对,所以他们改变了主意。 他们转而退回坚持任何专利和标准都必须是任何人都可以自由实施的。这是一个有趣的胜利。我认为这是标准机构第一次做出这样的决定。标准机构乐意把某些东西放入一个受专利限制的标准中不允许人们自由地推进和实施它是正常的。我们需要求助于其他标准组织,并呼吁他们改变他们的规则。

2)专利授权

第二种可能性不是避免专利,而是获得专利授权。这不一定是一个选项。专利持有人不必向你提供许可证,这不是必需的。10 年前,编程自由联盟(League for programming freedom)收到一封求助信,求助者的家族企业为赌场制造赌博机械,当时他们使用的是电脑。他收到另一家公司的威胁,说:“我们拥有专利。你不能做这些东西。(你必须)停止运营。”

我看过那个专利。它涵盖同一网络上多台用于玩游戏的计算机,每台计算机支持多个游戏,并允许你同时玩多个游戏。

你会发现专利局真的认为在任何事情上,做多次比一次更有才华。[笑声] 他们没有意识到,在计算机科学中,这是概括任何事情最明显的方式。你曾经做过一次,现在你可以做任意次,你可以做一个子程序。他们认为,如果你做任何事情超过一次,那就意味着你很聪明,没有人可以和你争论,你有权利指挥他们。不管怎样,那位求助者没有得到执照。他不得不关门大吉。他甚至连上法庭的钱都负担不起。我想说,这个专利是一个显而易见的想法。法官可能会同意,但我们永远不会知道这个结果,因为他没有钱上法庭。

然而,许多专利持有者确实提供许可证。不过他们经常为此收取高额费用。在美国,对于电子表单上的每一项,公司授权自然顺序重新计算专利费用高达总销售额的 5%。我被告知,这是诉讼前的廉价价格。如果你真的让他们起诉你,而他们赢了,他们会要求更多。你可能负担得起这 5% 的专利许可费用,但是如果你需要申请 20 项不同专利的许可来制作这个程序呢?这样一来你赚的所有钱都会用在专利上。如果你需要申请 21 项专利又该怎么办?

实际上,商界人士告诉我,他们中的两三个人就可以使任何业务变得不可行。

在这种情况下,专利授权是一个非常好的解决办法。如果你是一家大型跨国公司的话。因为这些公司拥有很多专利,而且他们彼此交叉授权。这样一来,他们就能避开专利制度带来的大部分危害而只得其利。IBM 在 Think 杂志上发表过 一篇文章。我记得它是在第 5 期的 IBM 专利组合库中,它说 IBM 从其 9000 项美国专利中获得了两种好处。我相信这个数字在今天还会更大。首先是收取使用费,其次是获取他人的专利。他们说,后者的好处能达到百万数量级。因此,IBM 从被允许使用他人所持专利的想法中获得的好处,是其从授权专利中直接获得的好处的 10 倍。

这到底意味着什么?通过这种途径获取其他公司的专利,IBM 获得了什么好处?这种好处基本上就是,可以免除专利制度可能给你造成的麻烦。专利制度就像彩票。任何特定的专利所发生的事情都可能是无关紧要的,可能对某些专利持有人来说是一笔意外之财,也可能对其他持有人来说是一场灾难。但是 IBM 体量如此庞大,对他们来说,利弊可以被平均。他们可以衡量专利制度带来的的平均危害和好处。 对他们来说,专利制度带来的麻烦是收益的 10 倍。我之所以这么说,是因为 IBM 通过交叉授权避免了这种麻烦。这种麻烦只是潜在的。这种事并没有真正发生在他们身上。但是,当他们衡量避免这种麻烦所带来的好处时,他们估计这是他们从专利中获得收益的 10 倍。

这种交叉授权的现象驳斥了一个常见的神话,即饥饿天才的神话。这种神话形如专利“保护”、“小发明家”。这些术语是宣传术语。你不应该使用它们。设想一个这样的场景:假设有一位出色的设计师,无论他是做什么的。假设他在阁楼里挨饿多年,设计出一种新的奇妙的东西,现在想要制造它,大公司将要和他竞争,夺走他所有的生意,而他将会“饿死”。 我必须指出,高科技领域的人们通常不是单靠自己工作,想法也不是凭空而来的,它们是基于他人的想法,如果他们需要的话,他们有相当好的机会在几天之内找到工作。所以这种情况下,认为一个聪明的人独自工作会产生一个聪明的想法是不现实的,而他正处于忍饥挨饿中这个想法也是不现实的。但可以想象,有人可能会有一个想法,这个想法以及 100 或 200 个其他想法可以成为制造某种产品的基础,这样一来大公司可能就会想和他竞争。 所以让我们看看如果他试图使用专利来阻止大公司时会发生什么。他说“哦,不,IBM。你无法与我竞争。我有这个专利。IBM 说让我看看。我们看一下你的产品。唔。我有这个专利和这个,还有这个、这个、这个以及这个专利,你的产品都侵犯了。如果你认为你可以在法庭上为这些专利与我一较高下,那我回去再找一些。所以你为什么不和我交叉授权呢?”然后这位才华横溢的小发明家说“呃,好吧,我会交叉授权。”然后他就可以回去制作这些美妙的东西,但 IBM 也可以。IBM 获得了他的专利并获得了与他竞争的权利,这意味着该专利一点也没有“保护”他。专利制度并没有真正做到这一点。

大型企业在很大程度上避免了专利制度的危害。他们主要看到好的一面。这就是他们想要拥有软件专利的原因。他们是将从中受益的人。但是如果你是一个小发明家或者为小公司工作,小公司是做不到的。他们努力了。问题是他们无法获得足够的专利来做到这一点。任何特定的专利都指向某个方向。因此,如果一家小公司有指向那里,那里[指向右边]和那里[指向左边]的专利,而那里有人指着他们的专利[showing right side]说付钱给我,他们就无能为力了。因为他们也有专利在这里或附近 [指向左边],但是不在那里 [指向右边]。 IBM 之所以能做到这一点,是因为这 9000 项专利无处不在,无论你在哪里,都可能有一项 IBM 专利指向你。因此,IBM 几乎总是可以让你交叉授权。小公司只能偶尔让某人交叉授权。他们会说他们想要专利是为了自保,但是他们无法得到足够的专利来保护自己。

在某些情况下,即使是 IBM 也无法让某人获得交叉授权。就是当有一家公司的唯一业务是获取专利并从人们身上榨取钱财的时候。拥有自然顺序重算专利的公司就是这样的公司。他们唯一的业务就是以起诉威胁那些真正在开发东西的人,并从他们那里收钱。

在法律程序上没有专利。[笑声] 我想律师们明白当自己要处理专利制度时是多么痛苦。其结果是,没有办法获得某项专利使得该公司可以与你 交叉授权。所以他们到处压榨每一个人。但是我猜像 IBM 这样的公司会认为这是做生意的代价,所以他们可以接受。

综上,这就是采用专利授权的可能性,这可能是可行的,也可能不可行;你可能负担得起,也可能负担不起。

在法庭上推翻专利。

据说,为了获得专利,必须有一些新的、有用的和不明显的东西。那是在美国使用的说法。我想其他国家有不同的描述,但基本与此相同。当然,当专利局介入游戏时,他们开始解释新的和不明显的。新的结果意味着我们的文件中没有它,而不明显的往往意味着对于智商为 50 的人来说不明显。

有人研究了美国发行的大部分软件专利,或者至少他曾经研究过,我不知道他是否还能跟得上最新的进展,他说 90% 的软件不能通过水晶城市测试(Crystal City Test),这意味着如果专利局的人出去上外面的报摊上拿到一些电脑杂志,他们就会发现这些想法已经为人所知了。

专利局做的事情明显是愚蠢的,你甚至不需要知道最先进的技术就能看出他们是愚蠢的。这不仅限于软件。我曾经看到过著名的哈弗大学老鼠专利,它的内容是哈佛大学通过基因工程改造了一种带有致癌基因的老鼠。引发癌症的基因是已知的,并且使用已知的技术将其插入到已经存在的小鼠品系中。他们获得的专利包括用任何方法将致癌基因植入任何哺乳动物。你不需要知道任何关于基因工程的知识就能意识到这实在荒谬。

有人告诉我这种过度声明是正常的做法,美国专利局有时会邀请专利申请人扩大其声明范围。基本上就是把索赔范围扩大化,直到你认为他们遇到了其他明确的在先技术。看看你能在思想空间中抢占多少地方。

当程序员看到大量的软件专利时,他们说这显而易见是荒谬的!专利官员们有各种各样的借口来证明无视程序员的想法是正当的。他们说“哦!但你必须按照 10 或 20 年前的情况来考虑它。”然后他们发现,如果他们把什么东西都说死了,你最终就会失去方向。如果你足够仔细地分析它,任何事情看起来都不那么明显。你只是失去了所有显而易见的标准,或者至少失去了证明任何明显或不明显标准的能力。然后,当然,他们把专利持有者——所有的专利持有人都描述为杰出的发明家。因此,我们不能质疑他们有对我们做什么的权利。

如果你去法庭,法官可能会对显然或不显然的观念更加严格一些。但问题是,上法庭需要花费数百万美元。我听说过一个专利案例,我记得被告是高通公司,我确信最终的裁决是 1300 万美元,其中大部分用于支付双方律师的费用。原告还负担了剩下的几百万美元,因为他们输了这场官司。

在很大程度上,专利的有效性问题将取决于历史上的偶然事件。许多历史偶然事件,例如确切的出版时间,以及有人设法找到的某些东西。比如未被遗失、准确的日期等等。许多历史事件决定了一项专利是否有效。

事实上,我觉得 1975 年 British Telecom 申请了超链接和电话访问专利 是一件奇怪的事情。我认为我首先在 1974 年开发了这个信息包。这个信息包允许你通过超链接传递,而人们使用电话拨号并访问系统。所以实际上,我为这项专利制作了一个现有的技术。这是我人生之中第二个可以申请专利的技术,但是我没有任何证据来证明。我不认为这足够有趣以至于能拿出来发表。毕竟,跟随超链接的想法是我从 Engelbart 的编辑器那里得到的。他才是那个该发表这个有趣想法的人。 我所做的,我称之为“可怜人的超文本”,因为我必须在 TECO 的背景下实现它。它并没有他的超文本那么强大,但至少对于浏览文档很有用处,而这一切都是为了这个目的,至于拨号访问系统,当然有,但是我没想到这两者之间有什么特别的联系。我不会发表一篇论文说“哦!我实现了这个可怜人的超文本,你猜怎么着!电脑上也有拨号线!”我怀疑没有什么办法能准确地说出我是在什么日期实施这个想法的。它以任何方式发表了吗?我们邀请客人通过 ARPAnet 登录我们的机器,这样他们就可以使用信息包浏览文档并看到这个东西。如果他们问我们,他们就能知道我们有使用拨号访问。但是正如你所看到的,历史的偶然性决定了你是否拥有现有的技术。

当然,现在有一本他们想要展示的由 Engelbart 制作的关于超文本的出版物。不过,我并不认为这意味着电脑上有任何拨号上网设备,因此尚不清楚它是否足够说明这一点。所以,这是一个选择,有去法院推翻专利的可能性。

由于费用高昂,即使你能找到足以推翻专利的可靠的现有的技术,推翻专利也常常是不可能的。因此,一个无效的专利,一个名义上不应该存在的专利(但实际上很多专利都是这样)是一个危险的武器。如果有人用无效的专利攻击你,那真的会给你带来很多麻烦。你可以通过向他们展示现有的技术来吓唬他们。这取决于他们是否会被吓跑,或者他们可能会认为“好吧,你只是在虚张声势,我们认为你不会真的上法庭,你负担不起,所以我们还是会起诉你。”

这三种可能的手段都是你可以设法使用的东西,但通常你不能。所以你不得不面对一个又一个的专利。每次你可能会找到这三种可能性中的一种,然后是另一个专利,然后是另一个和另一个。就好像是在穿越雷区一样。你采取的每一个步骤,每一个设计决策,可能不会涉及专利,所以你可以走出几步而不会踩雷。但是,随着项目规模的扩大,你在不涉及专利的情况下开发出自己想开发的程序的机会越来越少。

软件领域的特殊性

现在,人们常常对我说,“好吧,其他领域也有专利,为什么软件可以豁免呢?”请注意,这里有一个奇怪的假设,认为我们都应该受到专利制度的折磨。这就像说“有些人得了癌症。为什么你应该得到豁免?”在我看来,每个没有得癌症的人都是好的。但是,在这个问题的背后,有一个不那么带有偏见的、一个很好的问题:软件领域与其他领域不同吗?不同领域的专利政策应该不同吗?如果是这样,为什么?

让我来回答这个问题:专利与不同领域的关系不同,因为在不同领域,专利与产品的关系不同。

一个极端的例子,我们有药品,其中一个给定的化学配方将申请专利,所以仅覆盖一个专利,且只有一个产品。其它一些产品不会被现有的专利覆盖。如果这种新产品要申请专利,专利持有人就是开发这种新产品的人。

这符合我们对专利系统的天真想法,无关你正在设计一款新产品,你将获得“专利”。每个产品都有一个专利,并且这个专利涵盖了该产品的想法。在某些领域,这更接近真实情况。在其他领域,这种想法却很不真实。这是因为软件包通常很大。他们在一个新的组合中使用许多不同的想法。如果程序是全新设计而非复制而来,那么它很可能是使用了不同想法的组合,当然,对于新编写的代码,你不能魔幻般的说出这些想法它们就能工作。你必须将它们全部实现出来。 你必须在这个组合中实现它们。结果就是,即使当你编写一个程序时使用了很多不同的想法,其中任何一个都可能已经被某人申请了专利。其中的某一对可能是某人的组合专利。又或者可能有几种不同的方式来描述一个想法,这个想法可能会被不同的人申请专利。所以在你的程序中可能有成千上万的东西,成千上万的漏洞,这些漏洞可能已经被其他人申请了专利。这就是为什么软件专利往往会阻碍软件的进步——也就是软件开发的工作。

如果实际情形是一个产品一个专利,那么这些专利就不会阻碍产品的发展,因为如果你开发了一个新产品,它就不会已经被别人申请了专利。但是当一个产品对应着许多不同的想法时,你的新产品很可能已经被其他人申请了专利。事实上,现有的经济研究表明,将专利制度强加于一个有渐进式创新的领域会阻碍该领域的进步。 你会看到,软件专利的拥护者说“哦是的,可能有这样那样的问题,但是比任何问题更重要的是,专利必须促进创新,这相当重要,不管你会造成什么问题。”当然,他们不会大声说出来,因为这其实很荒唐,但他们含蓄地希望你相信,只要专利能够促进进步,那带来的收益就会超过任何可能产生的成本。但实际上,没有理由相信它确实促进了进步。我们现在有了一个模型,可以精确地展示专利是如何阻碍发展的。这个模型能够很好地描述软件领域的情况;也就是渐进性创新。

为什么软件会处于这个极端呢?原因是在软件中,我们开发的是理想化的数学对象。你可以建造一个复杂的城堡,让它悬挂在一条细线上,它会一直待在那里,因为它没有任何重量。在其他领域,人们不得不应对物质——物理对象的反常。物质随其所愿。你可以尝试建立模型,如果实际行为不符合模型,那么这就会难到你,因为难点在于如何让物理对象真正起作用。

如果我想在 while 语句中加入一个 if 语句,我不必担心 if 语句是否会以某个特定的频率震荡,并与 while 语句发生摩擦最终断裂。我不用担心它是否会以某个更高的频率震荡,并且触发一个影响其它变量值的信号。我不必担心 if 语句会引起多大的电流,也不必担心它是否会耗散 while 语句中的热量。以及在 while 语句中是否存在压降,使 if 语句不起作用。 我不必担心,如果我在盐水环境中运行这个程序,盐水可能会进入 if 语句和 while 语句之间,并导致腐蚀。当我引用一个变量的值时,我不必担心是否引用它 20 次就超过扇出限制。我不必担心,当我引用这个变量时,它有多少电容,是否有足够的时间充电。当我编写程序的时候,我不必担心如何物理地组装每个副本,以及我是否能够设法访问 while 语句中的 if 语句。我不必担心如果语句中断,我将如何获得访问权,从而删除它并用新语句替换它。[笑声]

这么多的问题,我们在软件中不需要担心它们。这从根本上让编写软件变得更容易。究其缘由,编写一个程序要比设计一个可以工作的物理对象容易得多。这可能看起来很奇怪,因为你可能听说过人们谈论软件设计是多么的困难,是一个多么大的问题,以及我们是怎样解决这些困难的。他们并非在谈论和我所说的相同的问题。我正在比较同样复杂、同样数量的物理系统和软件系统。我是说软件系统比物理系统更容易设计。但是在这些不同领域的人们的智力是相同的,那么当我们面对一个简单的领域时,我们该怎么做呢?我们只是进一步推动它的发展!我们把自己的能力发挥到极限。 如果同样大小的系统很容易,那么让我们制作一个十倍大的系统,它就会变得很难!这就是我们要做的!我们制造的软件系统,就部件数量而言,要比物理系统大得多。一个大型项目物理系统的设计包含了上百万个不同的部分。一个包含了 100 万个部件,大概有 30 万行的计算程序,少量人员会在几年内写出来。这并不是一个特别庞大的程序。我认为 GNU Emacs 的设计中现在有几百万个部件。它有上百万行代码。这是一个完全没有任何资金支持的项目。大部分都是人们在业余时间做的。

软件设计中还有另外一个大的节省。如果你已经设计了一个实体产品,那么接下来你要做的就是设计制造它的工厂。建造这个工厂可能要花费数百万甚至数千万美元,而要复制这个程序,你只需输入 copy 命令。同一个 copy 命令可以复制任何程序。你要复制 CD,那好。你刻录一张 CD 母盘,然后把它送到 CD 工厂。他们将使用相同的设备,将任何内容复制到光盘上。你不需要建立一个工厂来生产这种产品。设计事物的成本得到了极大的简化和降低。 结果就是,比如说一家汽车公司,他们要花费 5000 万美元建立一个工厂,来建立一个新的汽车模型,他们可以雇佣一些律师来处理专利许可证的谈判。如果他们愿意,他们甚至可以应付一场法律诉讼。设计一个同样复杂的程序可能要花费 5 万或 10 万美元。相比之下,处理专利制度的成本是巨大的。或者实际上设计一个与汽车机械设计同样复杂的程序可能需要一个月的时间。一辆汽车才有多少个零件…这里假设它是一辆没有电脑的汽车。[1]它没有那么多部件。这并不是说设计一个好的产品很容易,只是说其中没有那么多的不同。

结果是软件确实不同于其他领域,因为我们正在使用数学的东西设计一些非常、非常简单的东西,结果是我们经常制作非常、非常大的系统,而这一切只需要几个人。结果就是,专利系统不再是接近一个产品、一项专利,而是在一个产品就可以涉及许多、许多已经可以申请专利的想法的系统中。

可以用来解释它的最好的类比是交响乐。一首交响乐也很长,有很多音符,而且可能运用了很多音乐理念。想象一下,如果 17 世纪的欧洲政府决定通过建立一个欧洲音乐专利局来促进交响乐的发展,这个专利局可以为任何你可以用语言表述的音乐理念提供专利。然后想象大约在 1800 年,你是贝多芬,你想写一部交响乐。你会发现,让你的交响乐不侵犯任何专利比写一部好的交响乐要难得多。 当你为此事抱怨的时候,专利持有者会说“啊,贝多芬,你只是在抱怨,因为你没有自己的想法。你想做的就是剽窃我们的发明。”碰巧的是,贝多芬有很多新的音乐理念,但他不得不利用很多现有的音乐理念来创作可辨认的音乐。这是为了制作听众可能喜欢的音乐,并能让他们识别为音乐。没有人这般聪明,他可以重新发明音乐并制作人们想听的东西。Pierre Boulez 说他会试着这样做,但是谁会听 Pierre Boulez 的呢?[笑声]

没有人如此聪明,以至于他可以重新发明所有的、全新的计算机科学。如果他这么做了,他会做一些让用户觉得很奇怪以至于他们不想使用的东西。如果你看看今天的文字处理器,我想你会发现数百种不同的功能。如果你开发了一个新颖的文字处理器,那就意味着里面有一些新的想法,但是里面肯定有成百上千的旧想法。如果你不被允许使用它们,你就不能制造一个新颖的文字处理器。

因为软件开发的工作是如此庞大,结果是我们不需要任何人为的方案来激励新的想法。你只需要让人们编写软件,他们就会有一些新的想法。如果你想写一个程序,你想把它写好,那么一些想法就会出现在你的脑海中,你会想到其中某些想法的使用方法。因为我在软件专利出现之前就在软件领域,(因此我有资格说,)过去的情形是大多数开发者会发表任何他们认为值得注意的新想法,他们认为他们可能会得到任何赞扬或尊重。 他们不会发表那些太小或者不够令人印象深刻的想法,因为那样做是愚蠢的。现在,专利制度应该鼓励公开创意想法。事实上,在过去,没有人对这些想法保密。他们将代码保密,这是真的。毕竟,代码代表了大部分的工作。他们会保守代码的秘密,并公布想法,这样员工就会获得一些赞誉,这感觉不错。在软件专利出现之后,他们仍然对代码保密,他们为这些想法申请了专利,所以事实上,公开这些想法在任何有意义的层面上都是不被鼓励的。同样的事情现在仍然保密,就像以前保密一样,但是过去为了我们能够使用而发表的想法现在很可能会被申请专利,并且在 20 年内禁止使用。

探讨软件专利问题的公共政策

一个国家能做些什么来改变这种状况呢?我们应该如何改变政策来解决这个问题呢?有两个地方可以发力。一个是申请和办法专利的地方,专利局。另一个是专利申请时间——也就是说,问题在于一个专利覆盖了哪些内容。

改变专利发放标准或者仅仅保持发放专利的良好标准,可以在一个以前没有过软件专利授权的国家起作用,例如,在欧洲的大部分国家。这仅仅是为了明确重新执行欧洲专利局的规定,即软件不能申请专利。这对欧洲来说是一个很好的解决方案。欧洲现在正在考虑一项关于软件专利的法令。我认为该法令可能比专利法范围更广,但其中一个重要的影响事关软件专利。只是简单地修改一下,让软件想法不能申请专利,就可以在很大程度上把这个问题挡在欧洲之外,除了一些自己承认这个问题的国家。不幸的是,其中之一就是英国。这对你们(听众)而言很不幸。

这种方法在美国行不通。原因是美国已经拥有了大量的软件专利,而且任何对专利发放标准的改变都不会取消现有的专利。事实上,这些专利并没有被正式标记为软件专利。我说的是软件专利,但我真正的意思是什么呢?可能适用于软件的专利。(现有的)这些专利可能会使你因为编写软件而被起诉。 专利局并不把专利分为软件专利和其他专利。因此,事实上,任何专利都可能令人信服地使你因为编写软件而被起诉,如果这个专利可以被应用于某些软件的话。因此,在美国,解决方案必须通过改变适用性,也就是专利范围来实现,使其表明:一个纯软件实现在通用计算机硬件上运行,本身并不侵犯专利,不受任何专利保护,你不能因此被起诉。这是另一种解决方案。

第一种解决方案,即根据专利是何种类型确定其可否有效运作的解决方案,对欧洲来说是一个很好的解决方案。

当美国开始拥有软件专利时,没有引起任何政治争论。事实上,没有人注意到这件事。在大多数情况下,软件领域是不被注意到的。在 1981 年,最高法院下达了一项橡胶硫化工艺的专利判决。裁决是,实际上这个设备包括一台计算机和一个程序,作为橡胶硫化过程的一部分,这并不会致使其无法申请专利。 第二年,上诉法院胜利了所有的专利案件,推翻了限定条件。他们说,实际上有一台计算机和一个程序,就可以为它申请专利。事实上,任何东西都离不开计算机和程序,这使得它们都可以申请专利。这就是美国开始拥有商业程序专利的原因。这是因为商业程序是在计算机上运行的,这使得它们可以被申请专利。因此,这个裁决被做出,而我认为自然秩序重新计算专利是第一个,或者可能是第一个。

但是在整个 80 年代我们都不知道这件事。大约在 1990 年,美国的程序员开始意识到他们面临着来自软件专利的危险。所以我看到了这个领域以前是如何运作的,以及在那之后是如何运作的。在 1990 年之后,我没有看到任何特别的进步。在美国没有政治辩论,但在欧洲却有一场大规模的政治辩论。几年前,有人推动修改建立 欧洲专利局 的慕尼黑条约。这个条约中有一条 规定软件不能申请专利的条款。此举旨在修改法律,开始允许软件专利。但是社区注意到了这一点。实际上,带头这项运动的是自由软件开发人员和自由软件用户。

我们不是唯一受到软件专利威胁的公司。所有软件开发人员都受到软件专利的威胁,甚至软件用户也受到软件专利的威胁。例如 Paul Heckel,当苹果公司不再害怕他的威胁时,他威胁要起诉苹果公司的客户。苹果觉得这很可怕。苹果公司认为他们不能让他们的客户被这样起诉,即使他们最终能赢得诉讼。因此,(使用专利软件的)用户也可能被起诉,要么作为一种攻击开发者的方式,要么仅仅作为一种自己从开发者那里榨取资金或造成混乱的方式。

所有软件开发人员和用户都很脆弱。但是欧洲的自由软件社区带头组织了反对派。事实上,现在管理欧洲专利局的国家有两次投票反对修改该条约。然后,欧盟采取了行动,欧盟的董事会在这个问题上出现了分歧。

那些为推广软件工作的人似乎反对软件专利。他们不负责这个问题。欧盟是公开市场的董事会,由支持软件专利的人领导。他们基本上无视向他们表达的民意。他们提出了一项允许软件专利的指令。[2]法国政府已经表示反对。在欧洲的其他各国政府工作人员反对软件专利,在这里开始这样做是至关重要的。

欧洲反对软件专利斗争的领导者之一 Hartmut Pilch 表示,主要动力来自 英国专利局。这个机构一味偏袒软件专利。它进行了公开咨询,大多数回复都反对软件专利。然后他们写了一份报告,说人们似乎对他们很满意,[笑声],完全无视回复。你看,“自由软件社区说,请把你的答案发给他们,也请把你的答案发给我们,我们会发表它们。”所以他们发表了这些普遍反对的回答。你从英国专利局发表的报告中永远猜不到这一点。

他们(英国专利和商标局)使用一个他们称之为技术效果的术语。这是一个可以被极大地延伸的术语。你应该认为这意味着一个项目的想法只有在与特定的身体活动密切相关的情况下才可以申请专利。如果这就是(对术语的)解释,那么问题就迎刃而解了。如果唯一可以申请专利的软件想法是那些真正与特定的技术、特定的物理结果有关的想法,如果你不使用程序,你可能已经申请了专利,那就没问题了。问题是你可以延伸这个术语。您可以将运行任何程序所得到的结果描述为一个物理结果。这个物理结果与其他结果有什么不同?哦,这是这次计算的结果。结果是,英国专利局提出了一些看起来能够解决大部分问题的方案,并且真的为几乎所有专利进行了全权授权。

同一部门的人员也参与了版权问题,这个问题与软件专利没有任何关系,只是由同一批人员来处理。问题在于如何解读最近的欧盟版权指令,这是一项与 美国数字千年版权法案(DMCA) 一样可怕的法律。但各国在决定如何实施这一计划方面有一定的自由度。英国提出了实施这一指令的最严厉的可能方式。通过正确地实现它,你可以大大减少它所造成的危害。英国希望最大限度地发挥这一指令的专制效果。似乎有一个特定的组织 贸易和工业部[已存档][笑声] 需要被加以约束。有必要对他们的活动进行检查[笑声] 。以阻止他们创造新的权力形式。

软件专利将每一个软件开发者和每一个计算机用户以一种新的官僚形式捆绑在一起。如果使用计算机的企业意识到这会给他们带来多大的麻烦,他们将会奋起反抗,我相信他们能够阻止这一切。企业不喜欢被官僚主义束缚。

当然,有时候它起到了重要的作用。在某些领域,我们希望英国政府在把某些企业捆绑在官僚机构中方面做得更加谨慎,比如在动物运输方面。[3]但是在某些情况下,当它除了创造人为的垄断以便有人可以干涉软件开发,从开发人员和用户那里榨取钱财之外没有任何用处时,我们就应该拒绝它。

我们需要让管理层意识到软件专利会对他们造成什么影响。并 争取他们在欧洲对抗软件专利 的支持。

这场战争还没有结束。它还有胜算。[掌声]

脚注

  1. 一辆自动变速器大约有 300-400 个独特的部件,而变速箱通常是汽车中最复杂的部件。设计一个变速箱可能需要六个月到一年的时间,即便如此,实际建造和运行也可能需要更长的时间。然而,一个包含 500 到 600 个功能部件的程序实际上可能需要 200 到 300 行代码,并且可能需要一个优秀的程序员每天或每周来编写、测试和调试。
  2. 2005 年 7 月 6 日,欧洲议会以 680 票中的 648 票否决了软件专利指令。然而,我们绝不能忘记软件专利问题,因为那些迫切申请专利的人正试图恢复最近被抛弃的指令。我们还必须确保欧洲专利局(EPO)和不同欧盟国家的国家办公室停止出让被包含在其他类型发明中的软件专利。
  3. 让口蹄疫更难传播。