随着本月最新版的Linux内核2.6.23版的推出,它带来了令人惊叹的多种变化。距离上次更新仅仅只有三个月,这个Linux内核最新版就增加了对企业用户十分友好的很多功能,包括更好的虚拟化支持和非常重要的调度器功能的更新,同时还有常见的新设备驱动和漏洞修补。
现在Linux之父Linus Torvalds的“代码树”每两三个月就出现一定数量的变化,从这个情况我们可以看到Linux内核开发正在加速的信号。至今为止,这个过程已经产生了不容否认的高质量、稳定的代码。

但是请不要搞错:Torvalds正在推动开源开发策略走向新的极端。随着内核的大小和复杂度的增加,高速的重复工作正将开源社区中进行测试和调试工作的志愿者的能力用到了极限。
但是有两个原因让Torvalds不能放松油门。首先,Linux承受不了在技术上落后的后果,否则它将失去那些永远具有苛刻要求的企业客户。举个例子来说,为了充分发挥内置在英特尔和AMD处理器中虚拟技术的能力,新内核已经完善了对虚拟技术的支持。其次,Linux需要让它的开发者社区满意。新的功能让程序员免于感到厌烦而转向别的项目,而且随着远程程序员的老去或推出,它还要吸引新的天才来加入。
在这种压力下,新的Linux功能的路线图不断发生跳跃,这将不断的推动它在保持质量和稳定性的同时要增加新功能。但是这个具有16年历史的开源项目能否按照这种模式再生存16年呢?IBM跟踪Linux内核开发过程的副总裁Dan Frye表示,“没有一个开源项目曾经变得如此巨大或发展的如此快速,它是一个一流的开发者社区。”
除了虚拟化技术之外,企业用户还需要借助于这个混乱的过程来在很多方面提高Linux,其中包括电源管理和安全功能。大多数企业用户使用的Linux发行版是来自Red Hat和Novell的产品,要想让这些迅速发生的内核的修改完全融入这些系统,可能需要花费两年左右的时间,因此还有一个缓冲期来消化内核的这种疯狂的开发过程。不过,我们依然可以说,内核的发展决定着Linux的未来。开发速度和代码质量是否存在矛盾?
速度VS质量
尽管Torvalds的目标是是限制进入内核的代码数量以尽可能保证其效率,Linux的代码还是在以平均每天2000行的速度在增加。Linux的模块化的内核是这个操作系统的核心所在,它可以处理所有常用的任务,诸如内存管理、对CPU的发出请求和输入/输出等。围绕内核增加了数百个附加程序包来完成更多专门的功能,诸如在Linux和Windows之间传送文件,配置文件以在Apache Web服务器上显示等。但是这个内核必须继续成长来处理更多的功能、更多的硬件和更多的用户,现在它已经从1991年的包含兴趣爱好者的10250行代码发展到了现在具有超过800万行代码。
对于每小时增加86行新代码的速度,有的人认为这个内核正在超越软件开发速度的限制。一名叫做Alan Cox的关键维护者曾警告,某些设备的驱动程序的改变在集成到内核中之前应该进行更多的测试工作。被尊称为“内核上校”的Linux二号人物Andrew Morton曾对Linux中为确定的漏洞问题坦率直言,“在我个人看来,我希望看到人们花费更多的时间来修复漏洞,花费更少的时间来增加新功能。”

但是最近在英国剑桥召开的Linux内核峰会上,Torvalds暗示,他认为在过去他过于谨慎。缓慢的内核版本发布导致了Linux发展的停滞,因为很多功能需要等待进入内核。贡献者因为没有立即得到内核维护者和他们信赖的专家开发者的答复,而失去了兴趣。
根据在加速Linux开发中所犯错误的教训,Torvalds正在考虑最基本的开源原则,即通过许多用户频繁的对代码进行测试,比通过一个更加结构化的测试过程,更容易发现问题。随着被增加到内核中的内容被发现不支持特定硬件,或与其他软件冲突,Linux漏洞会不断的出现。提交代码的开发者通常被期望在漏洞出现的时候来解决它们,但是通常情况下他们并没有这样做。
在这次峰会上,Morton表示,他想任命一个“凶狠的人”来作为抓虫负责人,根据内核开发者Jonathan Corbet的说明来找出漏洞来源并“打击那些不修复漏洞的开发者,”并被Linux基金会公布名单。Natalie Protasevich被任命为抓虫负责人,Morton表示,虽然她不是他所说的那种“凶狠的人”,不过她已经为漏洞清理带来了更多的要求。在内核Bugzilla数据库中曾经有1500多条漏洞,现在已经下降到1400条。
在英特尔负责Linux和开源技术的Dirk Hohndel表示,“在迅速的开发和完整的代码回顾之间已经达成了一种非常有经验的平衡”。 然而即使以这种惊险的速度,并不是每一个开发者希望加入或企业需要的功能都能进入到内核中。
对于企业客户来说这种过程可能是令人沮丧的。在欧洲的旅行服务商Amadeus中,据其负责技术和战略规划的副总裁Fred Bessis表示,通过减少了大型机系统的使用,转而在便宜的硬件上使用Linux,使其基础设施常被降低了10%,通过其使用Linux的十年经验,它知道如何看待Linux的发展,包括关注逐渐进入商业版的潜在有用的新功能。
Amadeus的高级系统程序员Holger Weisbrodt表示,新的硬件和驱动在迅速被内核中支持,但是新的诊断和调试工具却“需要花费相当长的时间才能到位。”他希望看到更多的重点被放在通用的调试工具上面。
最新的Linux版本中有两个新功能是不在预测之内的,一个新的调度器和改进的虚拟化技术,它们进入内核的过程相差很多,而且都具有各自的风险和因素。
使一个功能获得认可的过程没有一个明确的模式,甚至会伤害别人。Linux内核最近最耀眼的功能——调度器,就属于这种情况。这个内核版本中的内核调度器整合了Unix的公平、分时的特征,借助于可以迅速响应事先未计划事件的实时操作系统的强制性、快速中断,它能够处理多任务和用户。在商业操作系统中,这些可能是截然不同的功能,而Linux想两个都实现。新调度器的推出引发了一场争论。

数年以来贡献者一直在研究调度器,但是今年夏天,一个职业为医生的澳大利亚内核贡献者Con Kolivas在开源社区引起了轰动,他在澳大利亚个人计算机杂志上撰文指出了他退出Linux开发的原因。
他曾经为内核2.6.23编写代码,他将其成为“-ck patchset”。他的代码被Red Hat雇佣的开发者Molnar所审查,因为Molnar由于此前已经贡献了几种调度器,被认为是调度器方面的Linux专家之一。他发现Kolivas的解决方案在实时调度方面存在缺陷,于是他在此基础上开发出了自己版本的多目标调度器。如此借鉴和移植别人代码的做法是通用公共许可下的Linux所鼓励的。而代码遭到拒绝的Kolivas发现了这一令人恼火的过程,并宣布推出Linux Kernel开发。
对此,Linus Torvalds表示,Kolivas的调度器实现完全忽略了现实,选择完全Molnar的公平调度器(Completely Fair Scheduler)是因为维护人员已经证明自己愿意和能够解决用户发现的问题,Con Kolivas的SD在此方面有所欠缺,没有稳定可靠的维护人员。
与围绕调度器多年争论的经历所不同的是,KVM(基于内核的虚拟机)的提出则显得要迅速和突然的多。一个名为Avi Kivity的以色列开发者提交了包含12000行代码的KVM虚拟引擎。它更像是提交一个补丁的内核开发者和维护者所做的事情,但是Morton表示,“KVM凸显的太突然,我以前从未听说过他或他的公司Qumaranet。”
Kivity自称是一个Linux内核邮件列表的长期“潜水”用户,他经常仔细的阅读和测试邮件列表中的内容,但是从来没有自己提交代码。他设计KVM符合他心目中的内核标准,在代码上保持了内核文件系统中的最新进展,并且对来自内核维护者的疑问和评论进行了立即的响应。KVM解决了Linux需要应用虚拟技术的的重大需要,使这个内核第一次可以充分利用英特尔和AMD处理器中的虚拟化技术。它还巧妙的利用了内核的调度器和内存管理器,并对操作系统中其他部分影响甚少。结果KVM从去年秋天提交到正式进入内核用了仅仅不到3个月的时间。
Morton表示,增加来自一个不知名的作者和一个没有经验的公司的代码是一件有风险的事情,因为它们都容易推出Linux开发,这样会没有人再熟悉这部分代码。但是如果这个代码是独立的,如果失败的话,开发者可以简单的移除它。
即使像KVM这样的代码已经年过迅速的进入内核,它要想被两家优异企业版Linux所采用,即Red Hat企业版Linux和SUSE Linux企业服务器版,还需要等待一到两年的时间。因为这样才能进行大量的测试和支持工作的验证。许多企业更乐意其系统具有稳定性,而不会采用最近最强大的内核。
而Linux前进的步伐依然在继续,或为名、或为利、或者处于兴趣,开发者们正在将新的功能加入到内核中。在最近的28个月中,出现了11个新的内核版本,可以确认的个人贡献者的数量从479割增长到838个。按照每个人有三四个帮手计算,意味者有3000个左右的人在投入到内核的开发中。
Linux的发展依赖的就是这种志愿者社区,领导Linux系统发展的有经验的开发者和内核维护者也通常供职于Google、惠普、IBM、Novell和Red Hat公司。这个社区的存在就是为什么Morton认为开发速度不会和稳定性有冲突的原因,因为新功能出来后,在企业中应用之前要经过长时间的完善。
不过,与商业化的编码相比,开源编码还是有一个缺点。英特尔的Hohndel表示,“尽管我不想称其为一个不可预测的过程,但是你确实无法保证其实现日期。”
在未来两到三个月中,Torvalds将发布内核2.6.24,将会包含十二个左右新的功能,至于其中会有多少功能进入商业验证版本,还无法预测。这的确不是一个真正的产品“路线图”。但是至今为止,它没有走向错误的方向。