查看: 3428|回复: 5

现场直击:对话Linux内核守护人

[复制链接]
发表于 2010-4-17 10:11:52 | 显示全部楼层 |阅读模式
关键词: linux , 对话 , 内核 , 守护人 , 现场
2月19日,由国际Linux基金会(TLF)与中国开源推进联盟(COPU )共同主办的“2008Linux 开发者研讨会-中国”( 2008Linux Developer Symposium-China)在北京举办。

  在昨天的大会上,不仅有众多来自国际Linux社区的开发设计大师、国内Linux的开发设计精英的精彩演讲,还为全国各地的300余名Linux开发人员等与会人员提供了和专家/行家面对面的机会。以下就是在一段来自现场的问答环节文字实录。



  主持人:谢谢Jonathan  Corbet的讲话,接下来我们请Linux内核2.6版的守护人Andrew  Morton来做一个对话。

  Jonathan Corbet:我有几个问题是和大家讨论得出来的,如果有问题的话也可以回答观众的问题,首先有一个问题就是,刚才我也提到过,像在内核当中我们的这种 Pach是比较高的,我想问一下Andrew Morton你如何应对这个问题,就是你如何解决比较高的一个Pach的问题,同时维护它的内核。

  Andrew Morton:实际上我并不是进行管理。并不是说像你们想象当中管理的那么多,实际上大家有时候心里上比较依赖我。而且我有的时候对他进行这种审查也并不是很多,如果当这个比例比较高的时候,那么我会告诉别人说,不好意思我没有这个时间来处理这个,那么同时我经常会拒绝一些其他的研发人员的请求,因为我实在是没有那么多时间。

  Jonathan Corbet:两年前您参加一个会议,你说这个速度会降慢,因为你觉得已经基本上完成了,那么在过去这几年当中,我觉得确实是这样的,那么你觉得你们会希望怎么样呢,你希望它减慢这个速度吗,还有就是这种高速的变化,那么为什么会这样呢?它为什么会以这么高的速度进行不断的变化呢?

  Andrew Morton:我觉得现在包括这个参与公司的数目和应用程序有关,我们现在有很多的研发人员,他们对内核有更多的要求,我觉得这个是为什么我们现在有一个这种高的替换率,或者高的更新率,而且现在新的技术不断的出现,还有新的硬件技术等等,都需要进行更多的支持,但是我觉得最后内核更新的速度会降慢的,因为从最根本的一个改变来说,比如说出现新的CPU,新的研发等等。但是其中有一些内核的技术,将来会比较成熟的。那么所以将来这个是会稳定下来,速度也就会放慢的。

  Jonathan Corbet:你觉得在它降慢之前还需要什么样的变化。你觉得现在在哪些方面我们还需要更多的工作。

  Andrew Morton:人们经常会问我这样的问题,我不知道在将来6个月之后,这个内核会提出什么样新的内容,因为我们现在没有一个在内核方面统一的控制机制,我们没有路线图,我们没有计划,所以我也不知道,只能说每一个公司,每一个人都会对Linux进行贡献。那么人们经常会告诉我们他们在做些什么,所以我只是一些猜测,但是在长期角度来说,实际上我不知道人们脑子里面想什么,我也没有办法说它长期会往哪些方向发展,我觉得最好的预测,就是我一般会读你的报告,比如说从你的发言当中,我就知道很多。

  Jonathan Corbet:还有另外一个问题,就是在十年以前内核的开发,那么这种Pach,他们放到网上,经常没有什么反馈,那么可能网网就是要等到一个新的版本出来才能看到结果,那么我觉得呢你带来的一个最好的变化呢,就是说来建立了一个很积极的相应的机制,也就是说呢,人们会把他的东西放上来之后,会听到一个反馈,所以这样他们放上来的Pach不会被人家遗忘等等,我想问一下对于Pach的反映一般是什么样的呢,如果我贡献一个东西放到网上,没有人给我反映,没有人理睬的话,那么我应该做呢?

  Andrew Morton:我总是希望保证每一个我所得到的人的一些贡献都会有一些响应。特别是对于一些人员他们的一些成果来说,那么如果你要是发过来,如果其他人有评论,但是我没有给你评论的话,那么就是说我对于其他人比较同意的,那么如果要是我和其他人的意见不一样的话,我也会给你一个我的响应或者是反馈。比如说我圣诞节过了两周的假期,但是我还有500个Pach等我回去看,所以我就不断的进行这方面的工作。还有一些就是你可能,你觉得放到那儿了,然后你觉得没有人理你,那么你就给我发一个私人的邮件,我会给一些反馈。一般来说我会告诉你,比如说有些人是不是反对,有些人是不是赞同,我一般会给一个反馈的。

  Jonathan Corbet:人们在考虑加入到我们这个社区的时候,他们非常难以去找到方式,如何和我们的社区两交互,所以我有一个问题,对于新的开发者来讲,要成为这个社区的一部分的话,他们如何来加入?如何避免相应的一些错误?

  Andrew Morton:我觉得有一件事情人们必须要小心,那就是我们都是通过Email来做自己的工作,如果你希望有一个人一直对你有一个回应,而且是非常恰当的回应的话,这个其实对于一个比如说一周都没有做回应的人来讲是非常难的。所以从别人哪里收到邮件是非常重要的。通常我们也会有这样的问题。他们会问我到底我如何开始这个内核开发呢,我认为最好的答案就是你不要问这个问题,不要问这种问题就开始开发就行了。那么开始开发首先需要一个非常好的英语阅读的能力,你需要写英语,需要网络连接和计算机,然后就开始内核开发,把你的计算机连到网络上,下载一下内核,然后就开始。加入到社区,然后对社区更熟悉,下一步就是下载最新的内核版本。下载我的版本的话可能会发现一些缺陷,一些错误,那么和其他的开发者要交流,到底如何解决这些问题,这是一个非常简单的过程。在经过两三个月之后,你可能就已经成为了一个内核的开发者,也成为了这个社区的一员,所以每一次采取一步,所以最重要的就是要开始,一旦做了两三个月的开始的工作,就会非常熟悉整个环境,那么下一步就需要考虑到底对于你自己来讲需要贡献一些什么样的原始的,原创的一些工作,发来一些变更,然后呢在整个变更库里面就有了你自己的名称,那么人们就可以搜索到你的名字,可以看到你做了哪些工作。那么这才是一个非常正确的方式来开启自己的内核开发的工作生涯。

  而有的公司的做法就是扩展一群开发者,通过这种方式去申请这个职位,其实有很多竞争对手,在人们参与到整个过程当中,他们就需要人们进行交互,有很多的人他们在推出Pach的时候非常的礼貌,非常的保守。我们相互之间打交道是什么样的礼仪呢?我觉得如果我接收到非常不礼貌的一个回复的话,那回去是代表别人来说话,因为每一个人不一定代表自己说话,有一个人说了一句话,或者造成了上千人的反对,这就是一种工作的方式。一个人说了一句话那么所有人都同意的话,这可能就造成工作是成功的进行,但是更多的情况下会是遭到上千人的反对,说你不要这样去做。其实有一些非常有名的人士,他们并不是代表所有人说话,他们只是代表自己说话,其实这也是一个问题。

  Jonathan Corbet:我希望我能够同意你的说法。还有一个开发者遇到的一个问题,就是有的人在进行变更的时候,是非常的快,有的很长的时间才能够做完,比如说一个开发者花了很多时间才能进入,所以就是有一个问题,就是为什么有的补丁时间更长,到底开发者应该怎么来预期他们工作的时间?在他们发送补丁之后,他们预期的时间是多长?

  Andrew Morton:我认为我非常关心是否会回归测试,其实我不希望这个补丁如果不好的话,会影响很多人的系统。如果是一个已经运行的系统,大家都在使用,所以它的影响是非常大的,所以必须要非常的小心,非常的谨慎,而且要确保不会有懂行的人去触动,或者进一步修改这些内容。所以对于这个工作,对于这个补丁的理解其实花费我很长的时间去理解的,这也是为什么很多的补丁花了我很长的时间,但我有信心不会有很大的影响,才会决定把它添加到新的版本当中。因为这是一个内核,每个人都在用的,所以这是一个非常严肃的事情。

  Jonathan Corbet:我想在我们的听众当中问他们的问题,所以我现在想开放一下论坛,希望能够有听众问他们自己的问题。

  提问者:我们最近会推出一个新的Linux版本,为什么我们需要这个Tree呢,因为现在很多的Linux贡献带来了很多的错误,所以希望把错误和缺陷去掉,是这个原因吗?我有两个问题,第一个是现在有更多的开发者涉及到内核的开发,是不是说在未来我们会遇到更严重的,更多的嘈杂和混乱?

  Andrew Morton:我是第一个要测试每一个人工作的人,每一个补丁都要进行测试,这样一个工作让他来做的话可以帮我很多的忙。我相信他们会认真的谨慎的去测试这些工作,而且他们和斯迪芬合作会比我好。纳入到这个Tree的话,未来一两年之内我们会把这个结果测试出来,所以我相信我们会花很多的时间做我们之前没有做的工作来过滤这些补丁。

  提问者:非常感谢。

  提问者:Linux总是落后于Windows,有没有办法解决这个问题,让我们尽快的推出更新的版本,这是第一个问题。第二个问题就是电源管理,到今天为止我认为电源管理系统和Windows相比来讲不是很好,到底Linux社区做了什么样的工作,来改进电源管理系统,谢谢。
   
  Andrew  Morton:非常有趣的是Intel参与到这个事情当中来,当他们推出一个新的设备的时候,是一个Linux内核的,他们其实在这些设备推出之前就开始了这方面的工作,他们在这方面做得非常的好,我们现在的问题对于设备制造商来讲的话,他们获取只是30%或者是20%的市场份额,他们没有充分的参与进来,这是为什么LinuxDriver比较的慢,我认为一个完美的解决方案,就是要增长Linux的市场份额,使得它的商业价值更高的时候,那么 LinuxDriver支持就更好,我们也希望尽快的发生,但是这个确实需要一定的时间。确实Intel在这个领域是非常积极的,不管是Intel的硬件,而且总体来讲在内核的电源管理方面他们都非常的积极。而且谈到电源的时候,其实我需要和一些具体负责电源方面的专家来进行交谈,但目前来讲的话电源管理便的越来越稳定,这是一个问题的领域,但是也是大家积极开发的一个领域。我觉得电源管理可能是针对不同的应用系统有不同,比如说有一种非常笼统的检测方法就是在笔记本上播放DVD,看到底需要多长的时间,如果是可以把整个DVD放完的话,那么说明电源管理还不错。
   
  DVD管理来讲的话有一个问题,就是硬件方面的问题,如果你的硬件支持不好的话,那么也是因为这个市场份额小,所以造成了这方面的电源管理的效率低。谢谢。
   
  提问者:您知道我们现在的内核便的越来越大,而且越来越好,我认为必须要采取一些措施,或者一些原则来确保我们的内核变得越来越好,而不是另外一个方向发展,你能不能介绍一下我们可以采取什么样的措施,或者是应用什么样的原则?我不明白你的中心思想,我是从质量和功能的角度在内核开发团队,你用什么样的措施和采取什么样的原则来确保内核的功能和质量变得更好?
   
  Andrew  Morton:有很多方式来进行度量,有一个验证代码组合的工具。Linux也有工具来帮助管理这方面的质量,我们有很多的QAA,都是依赖于网络上下载 Linux的这些人,其实Linux的内核和其他的软件项目之间有一个非常大的区别,那就是大部分的代码都无法由编写代码的人去测试。比如说在自己的机器上有的人可以开发一个代码,对他是完全没有问题的,但是比如说另外一个人用一个不同的计算机系统,把文件系统建立在上面,所以你无法在一个机器或者一百个机器上来测试一个代码,你需要的是上千上万个机器来共同的测试这个代码,所以你如何去收集这样一个度量据证,这是一个非常困难的问题。因为有成百上千的机器都引入了这个代码,带来了相应的问题。你可以看到过去文件的结果,也可以有累计的经验,但是你也可以有一些系统。比如说看一下是不是哪些代码突然消失,或者说有什么样的一些中断等等。这是一个非常复杂的一个问题。我还没有看到任何的公司或者任何的人放入相应的资源来解决这个问题,谢谢。
   
  Jonathan  Corbet:我想我们还有时间来回答另外一个问题,最后一个问题。
   
  提问者:我有一个问题,我们知道Linux发展得非常快,但是有的人抱怨和的API变化得太快,您觉得这是对于一些公司来讲是问题吗?您有没有什么样的建议?
   
  Andrew  Morton:我觉得这个API确实是这样的,那么我们现在确实定期的来进行调整,但是我们这方面仍然是非常的谨慎。那么我觉得您刚才所说的就是从内核到这种设备的驱动,那么确实我们会经常改变,确实给很多人带来很多麻烦,但是这方面我们没有什么可以妥协的,因为我们希望能够改进我们的内核的表现,那么如果我们必须要调整这个界面来改进我们内核的话,我们就必须要进行调整,因为如果我们要改进这个界面不做调整的话,那么这个内核就不能前进,这个内核就不好,就不能进步,那么这个就是必须的,这就是我们对于他做出的决定,那么对于这些驱动器的人员来说,他们的解决方法就是要把驱动器融入到这个内核当中,适应这个变化,那么这样的话呢就不会有很大的问题,所以这个就是我刚才和很多的公司来讨论过的,那么一般花了三四年的时间,对于很多公司来说,他们刚用 Linux的时候都会有这样的问题,我一直跟他们谈来解决这个问题,他们必须把他们的代码融入到内核当中,才能够真正的解决这个问题,才能够降低他们的成本,但是对于每一个公司来说,如果你决定进入Linux的话,都要经历这样一个过程,要适应。他们往往会遇到包括质量问题,知识产权问题等等,但是尽管会有各种各样的比较痛苦的问题,但是最后他们一般都会解决。这个一般都是这样的,但是一般要花三四年才能使公司真正的调整好。
   
  Jonathan  Corbet:我要谢谢Andrew  Morton刚才回答我们的问题。
 楼主| 发表于 2010-4-17 10:13:32 | 显示全部楼层
通常我们也会有这样的问题。他们会问我到底我如何开始这个内核开发呢,我认为最好的答案就是你不要问这个问题,不要问这种问题就开始开发就行了。那么开始开发首先需要一个非常好的英语阅读的能力,你需要写英语,需要网络连接和计算机,然后就开始内核开发,把你的计算机连到网络上,下载一下内核,然后就开始。加入到社区,然后对社区更熟悉,下一步就是下载最新的内核版本。下载我的版本的话可能会发现一些缺陷,一些错误,那么和其他的开发者要交流,到底如何解决这些问题,这是一个非常简单的过程。在经过两三个月之后,你可能就已经成为了一个内核的开发者,也成为了这个社区的一员,所以每一次采取一步,所以最重要的就是要开始,一旦做了两三个月的开始的工作,就会非常熟悉整个环境,那么下一步就需要考虑到底对于你自己来讲需要贡献一些什么样的原始的,原创的一些工作,发来一些变更,然后呢在整个变更库里面就有了你自己的名称,那么人们就可以搜索到你的名字,可以看到你做了哪些工作。那么这才是一个非常正确的方式来开启自己的内核开发的工作生涯。

------------------------------------
这方法就是传说中的 硬来,说你行你就行,不行也要硬上 。
那些 深入理解理解linux内核,之类的书就不要抱着不放了。
用linus的话说就是  read the fucking code。哪来这么多的入门和看参考书理解.

发表于 2010-4-17 10:45:48 | 显示全部楼层
怎么又发到菜园
郁闷
发表于 2010-4-17 10:50:58 | 显示全部楼层
拆迁
发表于 2010-6-3 16:13:45 | 显示全部楼层
发表于 2010-7-24 15:52:06 | 显示全部楼层
哈哈
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表