程序为何不得限制运行自由
Richard Stallman 著自由软件指的是由用户掌控的软件,而非相反。具体而言,这意味着软件必须带有 用户应享有的四项基本自由。其中列在首位的是自由之零:允许您按自己的意愿运行程序,以实现您期望的目标。
有开发者提议在软件许可中加入使用限制,以禁止将程序用于特定用途,但这无异于一条灾难性的道路。本文旨在阐明为何自由之零不容限制。对程序使用增设约束条件不仅难以实现其预期目标,更可能摧毁自由软件社区。
首先,我们必须明确自由之零的含义。它意味着软件的发行不会限制您如何使用它。但这并不意味着您可以不受法律约束。例如,欺诈在美国是犯罪行为——我认为这项法律正确且合理。无论自由软件许可协议如何规定,使用自由程序实施欺诈行为都不会让您免于起诉。
在欺诈行为属于刑事犯罪的国家,增设反欺诈的许可条款实属多余。但若针对酷刑行为增设限制呢?毕竟当“安全部门”实施酷刑时,各国政府往往采取默许态度。
禁止酷刑的条款实际上难以奏效,因为自由软件许可的强制执行权完全依赖于国家机构。一个意图实施酷刑的政权根本不会理会许可条款。当美国酷刑受害者试图起诉美国政府时,法院总是以涉及国家安全机密为由驳回案件。即便软件开发者因美国政府违反许可条款将程序用于酷刑而提起诉讼,也同样会被驳回。总体而言,国家机器总能为其恶劣行径编织法律借口,那些拥有强大游说团体的企业同样精通此道。
若将限制条款指向某些特殊民间活动呢?例如,国际动物保护组织(PETA)曾提议设立一种许可,禁止利用软件对脊椎动物造成痛苦;又或者设定条款,禁止使用特定程序制作或传播穆罕默德画像;再或是禁止将其用于胚胎干细胞研究;甚至禁止借助程序制作未授权的音乐副本。
这些限制条款能否强制执行尚不明确。自由软件许可基于著作权法体系,试图通过此种方式施加使用限制,实则是在挑战著作权法的边界——这种跨越无疑是以危险的方式进行的。难道您希望书籍也附带许可条款,规定如何利用书中的信息吗?
即便此类条款具备法律效力——这难道就是可取的吗?
事实上,对于利用软件可能进行的各种活动,人们的伦理观念存在巨大差异。我恰好认为上述四种特殊活动具有正当性,不应被禁止。特别是,我支持将软件用于动物医学实验和肉类加工处理。我捍卫动物权益活动者的人权,但不同意他们的观点;我不希望国际动物保护组织通过限制软件使用来实现其目标。
由于我并非和平主义者,同样不会赞同“禁止军事用途”的条款。我谴责侵略战争,但支持自卫反击。事实上,我一直支持推动各国军队转用自由软件——这样他们就能检查其中是否存在危及国家安全的后门和监控功能。
既然我原则上并不反对商业活动,自然会反对限制商业用途的条款。一个仅允许娱乐、爱好和教学使用的系统,将使我们无法完成如今借助计算机实现的大部分工作。
上文我已阐述了某些与自由软件无关的政治议题的个人立场——关于哪些行为正当与否。您的观点或许与此相左,而这恰恰是关键所在。倘若我们允许带有使用限制的程序进入 GNU 等自由操作系统,人们将会提出形形色色的限制条款:既有禁止用于肉类加工的程序,也有仅限猪肉的程序,或者仅限牛肉的程序;厌恶菠菜者可能授权程序处理除菠菜外的所有蔬菜,而大力水手拥趸则限定程序仅能处理菠菜;还将出现仅限说唱音乐的程序,以及仅限古典音乐的程序。
最终我们将得到一个无法胜任任何任务的系统。每项任务都需要核查大量的许可协议,以确认系统中哪些组件在此任务中受限——这不仅涉及您直接调用的组件,还包括它们所链接、调用或通信的数百个底层模块。
用户将作何反应?我认为大多数人会选择转向专有系统。允许自由软件设置使用限制,本质上是在将用户推向非自由软件。试图通过自由软件的使用限制来阻止用户行为,就如同愚公移山般徒劳。正如某位智者所言,这好比“手持极小锤子的人将一切视为钉子,却拒绝承认钉子远非这把小锤所能撼动”。
这种做法不仅徒劳无功,更是根本性的错误——因为软件开发者本不该对用户行为拥有如此控制权。试想若出售的钢笔要限定书写内容,这该多么令人反感,我们绝不应容忍。通用软件亦是如此。如果您创造了具有普遍用途的工具(比如钢笔),人们自然会用它书写各类内容,甚至包括诸如刑讯异见者的残酷指令;但您绝不能通过钢笔来掌控他人的行为。对于文本编辑器、编译器或操作系统内核而言,这一原则同样适用。
您确实有机会决定自己开发的软件用途:这体现在您对功能特性的设计决策中。您可以编写主要服务于积极用途的程序,也无需特意实现那些可能助长您所反对活动的功能。
结论显而易见:程序绝不应限制用户的使用用途。自由之零必须是完整无缺的。我们需要制止酷刑,但不能通过软件许可来实现。软件许可的真正使命,是确立并捍卫用户的自由。