专利
软件专利现在是自由软件运动中的一个避雷针问题,因为他们设置了自由软件无法防御的真正威胁。版权和商标问题一直可以绕开。如果你的部分代码看起来侵害了某人的版权,你只需要重写该部分。如果某人拥有你的项目名称的商标,最坏也就是将项目改名。尽管改名是一种暂时的不便,但长期来讲问题不大,因为代码依然发挥着应有的作用。
但是专利则是针对实现特定思想的完全禁令。无论谁编写的代码,无论使用了什么编程语言。一旦某人指控某个自由软件项目侵害了专利,这个项目必须停止实现某个特定特性,或者面对昂贵和费时的法律诉讼。因为这种法律诉讼的教唆者通常都是有大把钞票的公司—拥有抢先获得专利的资源和倾向—大多数自由软件项目不能负担后一种可能,只能立刻认输,即使他们认为在法庭上该专利很有可能无法强制执行。为了预先避免这种情形,自由软件项目必须防御性的开发编码,预先避免有专利的算法,即使知道那是针对某个编程问题的最佳,甚至是唯一可用的方法。[31]
民意调查和其他证据显示,不仅仅是开源程序员的绝大多数,也包括大多数程序员认为应当完全废止软件专利。[32]开源程序员容易对此有更强的感受,也许会拒绝在与软件专利的集合或强制过于接近的项目中工作。如果你的组织收集软件专利,请以公开和不可更改的方式明确,这些专利不会强加到开源项目上,他们仅用于防御某些其他组织针对你的组织的侵害事件。这不仅仅是做正确的事情,也事关开源公共关系。[33]
不幸的是,因防御目的收集专利是一项有理性的行动。当前的专利系统,至少在美国,本质上是一场军备竞赛:如果你的竞争者获得了大量专利,那么你最好的防御是也获取大量专利,这样如果你遇到了专利侵害诉讼,你可以使用类似的威胁—然后双方通常会坐下来并取得跨许可证交易,这样双方都无需支付费用,当然,不包括他们的知识产权律师。
然而,软件专利对于自由软件的危害不仅仅是对代码开发的威胁。软件专利鼓励了固件设计师中的私密气氛,他们理所当然的担心如果公布他们接口的细节,就是为其的竞争对手提供了技术帮助,使他们可以使用专利侵害诉讼进行打击。这不仅仅是理论上的危险,例如,很明显在显卡工业这存在了很长时间。许多显卡制造商很不情愿发布详细的可以为他们的显卡产出高性能开源驱动的编码规范,因而使自由操作系统无法发挥这些显卡的全部潜力。为什么生产商这样做?这与他们反对软件支持无关;毕竟,兼容的操作系统越多,就会有越多的显卡出售。但是那样做的结果,设计室的门后,这些厂商全部违反了他人的专利,有时是已知,有些则纯属巧合。专利是在如此的不可预测和漫无边际,没有哪个显卡厂商可以确信安全,即使经过了专利搜索。因而,制造商不敢发布他们的所有接口规范,因为这样可以使他们的竞争者可以轻易的指出是否有专利受到了侵害。(当然,这种情形的本性决定了不会从主要来源获得书面承认;我是通过个人交流获得这些信息。 )
一些自由软件许可证有一些与软件专利斗争,或至少不鼓励软件专利的条款。例如GNU GPL包含这些语言:
7. 若法院判决、专利侵权主张或者其他任何理由(不限于专 利争议)的结果,使得加诸于您的条件(无论是由法院命令 、协议书或其他方式造成)与本授权规定有所冲突,他们并 不免除您对于本授权规定的遵守。若您无法同时符合依本授 权所生义务及其他相关义务而进行发布,那么其结果便是您 不得发布该程序。例如,若专利授权不允许其他人直接或间 接取得复制物,通过您以免付权利金的方式再发布该程序, 您唯一能同时滿足该义务及本授权的方式就是徹底避免进行 该程序的发布。 [...] 本条的目的并不在诱使您侵害专利或其他財产权的权利主张 ,或就此类主张的有效性加以争执;本条的唯一目的,是在 保障藉由公共授权惯例所执行自由软件发布系统的完整性。 许多人信赖该系统一贯使用的应用程序,而对经由此系统发 布的大量软件有相当多的贡献;作者/贡献者有权决定他或 她是否希望经由其他的系统发布软件,而被授权人则无该种 选择权。
Apache许可证,版本2.0(http://www.apache.org/licenses/LICENSE-2.0)也包含了反专利的要求。首先,它规定在该许可证分发代码的任何人,隐含包括了一个可能他们持有并可以应用于这些代码的专利的免专利费许可证。其次,更贤明的,通过在主张做出时自动终止他们的隐含专利许可证,它惩罚了任何对代码主张专利侵害的人。
3.专利许可证的授予。 根据本许可证的条款,每个贡献者授予用户永久性的、全球 性的、非专有性的、免费的、无版权费的、不可撤销的(除在 本部分进行说明)专利许可证对作品进行制作、让人制作、使 用、提供销售、销售、进口和其它转让,且这样的许可证仅 适用于在所递交作品的贡献中因可由单一的或多个这样的贡 献者授予而必须侵犯的申请专利。如果用户对任何实体针对 作品或作品中所涉及贡献提出因直接性或贡献性专利侵权而 提起专利法律诉讼(包括交互诉讼请求或反索赔),那么根据 本许可证,授予用户针对作品的任何专利许可证将在提起上 述诉讼之日起终止。
尽管这很有用,不管是法律还是政治,以这种方式将专利防御构建到了自由软件许可证当中,但最终这些步骤不足以形成对于自由软件的专利诉讼威胁的寒翅效用。只有国际版权法的主旨或解释可以解决这个问题。关于此问题的更多信息,以及相关的斗争,请看http://www.nosoftwarepatents.com/。维基百科文章http://en.wikipedia.org/wiki/Software_patent也有许多软件专利的有用信息。我也写过一篇总结软件专利争论的blog,位于http://www.rants.org/2007/05/01/how-to-tell-that-software-patents-are-a-bad-idea/。
[31] Sun Microsystems和IBM针对此问题也做出了完全相反的姿态,他们解放了大量软件专利—分别为1600和500—用于自由软件社区。我不是一个律师,因而无法评估这些授予的真实功用,但是即使全部是重要的专利,而且授予的条款确实能够真正的自由用于开源项目的,这也仅仅是沧海一粟。
[32] 这里有一个相关的民意调查http://lpf.ai.mit.edu/Whatsnew/survey.html。
[33] 例如,RedHat保证它的专利对开源项目是安全的,见http://www.redhat.com/legal/patent_policy.html。