自由软件运动和 UDI
作者:理查德·斯托曼一个名为 UDI(统一驱动程序接口)的项目旨在定义操作系统内核和设备驱动程序之间的单一接口。自由软件运动应该如何看待这个想法?
如果我们设想许多操作系统和硬件开发商在平等的基础上合作,那么 UDI(如果技术上可行)将是一个非常好的想法。它将允许我们为任何给定的硬件设备开发一个驱动程序,然后所有人共享它。这将实现更高水平的合作。
当我们把这个想法应用到实际世界时,其中既有寻求合作的自由软件开发者,也有寻求支配地位的专有软件开发者,其后果就大不相同了。没有任何使用 UDI 的方式能够使自由软件运动受益。如果它有什么作用的话,它会分裂并削弱我们。
如果 Linux 支持 UDI,并且我们开始设计新的驱动程序通过 UDI 与 Linux 通信,那么后果会是什么?
- 人们可以在 Windows 系统上运行受 GPL 覆盖的自由 Linux 驱动程序。
这只会帮助 Windows 用户;它对我们自由操作系统的用户没有任何好处。它也不会直接伤害我们;但是,受 GPL 覆盖的自由驱动程序的开发人员可能会因看到它们以这种方式使用而感到沮丧,这将非常糟糕。将驱动程序链接到专有内核也可能违反 GNU GPL。增加这样做的诱惑是在自找麻烦。
- 人们可以在 GNU/Linux 系统上运行非自由的 Windows 驱动程序。
这不会直接影响自由软件支持的硬件范围。但间接地,它会通过诱惑数百万尚未学会坚持自由本身的 GNU/Linux 用户而趋于缩小范围。如果社区开始接受这种诱惑,我们将转向使用非自由驱动程序,而不是编写自由驱动程序。
UDI 本身不会阻碍自由驱动程序的开发。因此,如果我们足够多的人拒绝诱惑,我们仍然可以开发自由驱动程序,尽管有 UDI,就像我们没有 UDI 时一样。
但是,为什么要鼓励社区比它需要的更弱呢?为什么要为自由软件的未来制造不必要的困难呢?既然 UDI 对我们没有任何好处,那么最好拒绝 UDI。
鉴于这些后果,UDI 的支持者英特尔开始“寻求 Linux 社区的帮助来解决 UDI”并不奇怪。一家富有且自私的公司如何接近一个合作的社区?当然是通过索要施舍。他们问问没有什么损失,我们可能会措手不及,说“好”。
与 UDI 合作并非不可能。我们不应该将 UDI、英特尔或任何人标记为大撒旦。但是,在我们参与任何拟议的交易之前,我们必须仔细判断它,以确保它对自由软件社区有利,而不仅仅是对专有系统开发商有利。在这个特殊问题上,这意味着要求合作进一步沿着一条通向自由内核和驱动程序的最终目标的道路前进:用自由驱动程序支持所有重要的硬件。
使交易变得好的一种方法可能是修改 UDI 项目本身。埃里克·雷蒙德提出,UDI 合规性可以要求驱动程序是自由软件。这将是理想的,但其他替代方案也可能有效。仅仅要求发布驱动程序的源代码,而不是商业秘密,就可以做到——因为即使该驱动程序不是自由的,它至少会告诉我们编写自由驱动程序需要知道什么。
英特尔也可以在 UDI 之外做一些事情来帮助自由软件社区解决这个问题。例如,硬件开发商可能会寻求某种认证,而英特尔在授予认证方面发挥作用。如果是这样,英特尔可以同意如果硬件规格是秘密的,则使认证更加困难。这可能不是解决问题的完整方案,但它可能会有很大帮助。
与英特尔就 UDI 达成任何协议的一个困难在于,我们会在开始时为英特尔尽一份力,但英特尔的回报将在很长一段时间内延伸。实际上,我们是在向英特尔提供信贷。但是,英特尔会继续偿还其贷款吗?如果我们以书面形式获得它并且没有漏洞,那么很可能会;否则,我们就不能指望它。公司是出了名的不可靠;与我们打交道的人可能具有诚信,但他们可能会被上级推翻,甚至随时被不同的人取代。即使拥有大部分股份的首席执行官也可能通过收购被取代。与公司达成协议时,请务必以书面形式获得具有约束力的承诺。
英特尔不太可能提供一个满足我们需求的交易。实际上,UDI 似乎旨在使保持规范秘密更容易。
尽管如此,只要我们小心让谁进来,保持大门敞开并没有什么坏处。