虽然我很长一段时间以来都知道赫德,及其作为官方 GNU 操作系统内核的使命,我想知道为什么 Linux 多年来没有被接受为官方 GNU 内核,因为它的状态比 Hurd 好得多?
到目前为止,Linux 或多或少已经扮演这个角色 20 多年了,然而,人们可以看到 GNU 项目在谈到 Linux 时却保持着距离。为什么会发生这种情况?是因为赫德(在未来的某个时刻)达到了制作质量水平的梦想吗?是因为 GNU 项目没有看到它的使命在 Linux 中得到充分体现吗?是出于其他政治原因吗?
答案1
GNU 不会采用某个项目作为项目,除非开发者同意约束所有官方 GNU 项目的某些规定。
目前,Linux 内核可能不符合这些限制,Linus Torvalds、kernel.org 等也没有任何内容。将自己置于 GNU 保护伞之下会得到很多好处,但也会失去很多——前面提到的具有约束力的协议,以及公众认为内核现在是一个 GNU 项目的看法,这将产生大部分负面影响。 GNU 的上级组织自由软件基金会 (FSF) 是一个政治组织,Torvalds 以及 GNU 和 FSF 的有争议的、反传统的终身领导人/创始人理查德·M·斯托曼 (Richard M. Stallman) 对其提出了各种公开批评。
此外,Linux 内核不需要 GNU 用户空间,就像 GNU 用户空间不需要 Linux 内核一样。根据软件工程的基本原理,这种独立性应该被认为是一件好事,软件工程有利于模块化和松散耦合,而不是相反的东西(紧密耦合的整体事物)。
反对这一想法的另一点是,虽然 HURD 可能不像 Linux 那样受到那么多人的兴趣,但 HURD 的开发人员和用户可能会反对在人气竞赛中将他们的项目有效地扔进垃圾箱。对他们有好处;这种“竞争”是一件积极的事情,而屈服于垄断则不是——你最终会得到大量的实体,在一定程度上扼杀了创造力因为他们容易受到单一/狂妄的控制。 Linux 基金会已经是一个独立的组织,不妨保持这种状态。
答案2
网上有很多关于此的文档和讨论。
简而言之,GNU 项目和 Linux 内核项目之间存在深刻的意识形态差异,这阻碍了可能的统一。
GNU 项目背后的组织 FSF 的重点是自由软件理念的意识形态纯洁性。这在很大程度上源自 FSF/GNU 创始人理查德·斯托曼 (Richard Stallman) 的观点。此外,正如金发姑娘所提到的,自由软件基金会现在主要是一个政治倡导组织。很长一段时间以来,FSF 并未向 GNU 项目投入大量资源,尽管他们确实提供了支持基础设施。
Linux 内核项目在软件自由方面采取了更加务实的立场,这在很大程度上也源于其创始人 Linus Torvalds。 Linux 内核项目主要是一个自由软件项目,由专门从事内核/操作系统开发的软件开发人员组成,绝不是一个政治倡导组织。
作为这些意识形态如何在实践中发挥作用的具体例子,请考虑
1) Stallman 认为 Debian 项目通过维护其软件档案的非自由部分来“宣传”非自由软件这一事实是不可接受的。这很讽刺,因为 Debian 项目关注软件自由,这与 FSF 非常相似,但意识形态上并不那么僵化。
2) Linux 内核允许(非自由)二进制内核模块与内核一起使用。虽然内核开发者对此并不热衷,但他们确实容忍了这一点,但很难想象 FSF 会这么做。
另外值得注意的是,Stallman 尝试将基于 Linux 内核的操作系统命名为 GNU/Linux 可能并没有改善 FSF 和 Linux 内核社区之间的关系,尽管我没有这方面的具体数据。
除此之外,正如 goldilocks 提到的,FSF 有 GNU 项目必须遵守的各种规则。这包括将所有代码的版权转让给 FSF。这本身就会破坏交易,因为 Linus Torvalds 从未要求过此类版权转让。因此,如果 Linux 内核要成为 GNU 项目的一部分,所有对 Linux 内核的重大贡献都必须将其版权分配给 FSF。考虑到项目的历史、规模以及贡献者的数量,这基本上是不可能的。规模小得多、年轻得多的项目(例如 Mercurial)发现软件重新授权是一项艰巨的任务。
请注意,这个答案绝不是对 FSF 或 Linux 内核开发人员的批评。双方都有各自的合理观点。然而,现实情况是,他们的观点在某种程度上是不相容的。
答案3
我引用了一条评论理查德·斯托曼,关于与 Hurd 合作而不是 Linux 的决定。
人们有时会问,“为什么 FSF 开发一个新的免费内核而不是使用 Linux?”这是一个合理的问题。简而言之,答案是这不是我们面临的问题。
当我们在 1990 年开始开发 Hurd 时,我们面临的问题是:“我们怎样才能为 GNU 系统获得一个免费的内核?”当时还没有免费的类 Unix 内核,而且我们也不知道有其他计划可以编写一。我们期望获得免费内核的唯一方法就是自己编写它。所以我们开始了。
Linux 发布后我们就听说了它。当时,我们面临的问题是“我们应该取消 Hurd 项目并使用 Linux 吗?”
我们听说 Linux 根本不可移植(今天可能不是这样,但我们当时是这么听说的)。我们听说 Linux 在架构上与 Unix 内核相当;我们的工作正在带来更强大的东西。
鉴于我们已经投入赫德多年的工作,我们决定完成它而不是扔掉它们。
如果我们确实面临人们提出的问题——Linux 是否已经可用,并且我们正在考虑是否开始编写另一个内核——我们就不会这样做。相反,我们会选择另一个项目,来完成现有自由软件无法完成的工作。
但我们当时确实启动了赫德,现在我们已经让它发挥作用了。我们希望其卓越的架构能够让免费操作系统变得更加强大。
答案4
另一种解释是在gnu.org 常见问题解答:
让 GNU Hurd 工作得足够好以与 Linux 竞争将是一项艰巨的任务,而且显然没有必要。 Linux 作为内核唯一在伦理上错误的是它包含固件“blob”;该问题的最佳解决方法是开发 blob 的免费替代品。