自由软件运动和 UDI
Richard Stallman 著一个名为 UDI(Uniform Driver Interface,统一驱动程序接口)的项目旨在定义操作系统内核和设备驱动程序之间的单一接口。自由软件运动应该如何看待这个想法?
如果我们想象一些操作系统和硬件开发人员,都在平等的基础上合作,UDI(如果技术上可行)将是一个非常好的主意。它允许我们为任何给定的硬件设备开发一个驱动程序,然后所有人共享它。这将促成更高水平的合作。
当我们将这个想法应用到既有寻求合作的自由软件开发者,也有寻求统治的专有软件开发者的现实世界中时,结果是截然不同的。使用 UDI 的任何方式都无法使自由软件运动受益。如果它能做什么事情,那就是分裂和削弱我们。
如果 Linux 支持 UDI,如果我们开始设计新的驱动程序使之通过 UDI 与 Linux 通信,那么会有什么后果?
- 人们可以在 Windows 系统上运行自由的、被 GPL 涵盖的 Linux 驱动程序。
这只有助于 Windows 用户;这对我们自由操作系统的用户没有任何帮助。它不会直接伤害我们;但是被 GPL 涵盖的自由驱动程序的开发人员可能会因为看到它们以这种方式被使用而气馁,那将是非常糟糕的。将驱动程序连接到专有内核也可能违反 GNU GPL。增加这样做的诱惑是自找麻烦。
- 人们可以在 GNU/Linux 系统上运行非自由的 Windows
驱动程序。
这不会直接影响到自由软件支持的硬件范围。但它会间接地缩小这个范围,通过向数以百万计的、尚未学会为了自由而坚持自由的 GNU/Linux 用户提供诱惑。如果社区开始接受这种诱惑,我们将转而使用非自由驱动程序而不是编写自由驱动程序。
UDI 本身不会阻碍自由驱动程序的开发。因此,如果我们中有足够多的人拒绝这种诱惑,尽管有 UDI,我们仍然可以开发自由驱动程序,就像我们没有 UDI 的时候一样。
但是,为什么要鼓励社区变得比它想要成为的样子更脆弱呢?为什么要为自由软件的未来制造不必要的困难?因为 UDI 对我们没有好处,所以最好拒绝 UDI。
考虑到这些后果,作为 UDI 的支持者,Intel 开始“向 Linux 社区寻求 UDI 方面的帮助”就不足为奇了。一个富有和追求自我的公司如何接近一个合作社区?当然是要求施舍。他们问了也无所损失,而我们可能会仓促应声。
与 UDI 的合作并非不可能。我们不应该给 UDI、Intel 或任何人贴上“大撒旦”的标签。但是在我们参与任何提出的交易之前,我们必须仔细判断,以确保它对自由软件社区有利,而不仅仅是对专有系统开发人员有利。在这个特定的问题上,这意味着要求合作使我们在通向自由内核和驱动程序之最终目标的道路上更进一步:用自由驱动程序支持所有重要的硬件。
达成一笔好交易的方法之一可能是修改 UDI 项目本身。Eric Raymond 提出符合 UDI 规范可能要求驱动程序本身是自由软件。这很理想化,但其他替代选择也是可行的。只需要公布驱动程序的来源,而非将其作为商业秘密,就可以做到这一点——因为即使驱动程序是非自由的,它至少会告诉我们编写自由驱动程序需要知道的内容。
Intel 也可以在 UDI 之外做一些事情来帮助自由软件社区解决这个问题。例如,硬件开发人员可能会寻求某种认证,Intel 可以在其间做出贡献。若果真如此,如果硬件规格是保密的,Intel 可能会同意使认证更加困难。这可能不是问题的完整解决方案,但它可以提供相当多的帮助。
与 Intel 关于 UDI 的任何交易的一个困难之处是,我们将在一开始为 Intel 尽自己的一份力量,但 Intel 的回报将延后很长一段时间。实际上,(这相当于)我们要为 Intel 提供信贷。但 Intel 会继续偿还贷款吗?也许会,如果我们得到没有漏洞的书面承诺的话,否则,我们不能指望它。众所周知,企业是不值得信任的;我们正在与之打交道的人可能是正直的,但他们可能会被上级否决,甚至可能在任何时候被不同的人取代。即使是拥有大部分股票的 CEO 也可以通过收购来替换。与公司达成交易时,一定要得到有约束力的书面承诺。
Intel 似乎不太可能提供满足我们需求的交易。事实上,UDI 的设计似乎是为了更易于对规范进行保密。
尽管如此,不锁门也没什么坏处,只要我们慎于让谁进来。