中日韩IT司局长会议暨东北亚开源推软件推进论坛已经在中国、日本、韩国轮流成功地举办了六届,今年第七届于10月30~31日在中国无锡市太湖饭店举行。此次大会上颁布了由共创软件联盟举办的“2008中国开源软件竞赛活动暨开源软件创新与企业应用大赛”决赛获奖名单,来自英特尔开源技术中心中国内核团队的“Linux内核2.6.27项目”获得第一名,而Intel OTC(Open Source Technology)的内核团队被选举为此次东北亚开源推软件推进论坛中方的“特别贡献奖”。一直以内,人们的惯性思维就是Intel是一家硬件公司,他们关注的是生成芯片、销售芯片,而软件来自于不同领域,这和Intel是毫不相干的事情。事实上,在软件领域,尤其是开源软件领域,Intel做出了很多的贡献,很明显的一组数据就是在英特尔中国,专门从事开源软件研发的就有150个工程师左右,这些工程师做的每一件事情都与开源软件有关,并且都回馈与开源社区。此次代表中国开源社区获得大奖,也体现了对他们做出贡献的一种肯定。《开源》杂志在第一时间采访了Intel OTC内核团队的负责人傅文庆经理以及他所带领的内核开发团队。 记者:首先介绍一下你们内核团队的历史,目前都有哪些成员?如何分工,分别侧重哪些方向? 傅文庆:OTC的Linux内核开发团队最初成立于2003年,目前有15个工程师,工作在以下领域: 1.Linux核心支持,主要是对最新的CPU,芯片组的功能提供Linux内核的支持。还包括对内核性能的优化。特别是我们有一个开源的项目叫LKP(Linux Kernel Performance), 主要工作就是不断测试Linux的最新内核版本,已确定哪个最新引入的补丁会导致内核性能的下降,并且与社区开发者沟通,提出解决方案,以不断提高 Linux最新版本的性能。 2.Linux 电源管理ACPI 系统。通过我们的工程师的努力,在很短的时间里,修正了250多个Bug, 使Linux ACPI 的稳定性有了极大的改善。 3.Intel 显卡驱动程序。 4.Intel 无限网卡驱动。在开发对无线网络支持的同时,我们开发的无线网络(WIFI)协议栈也被Linux接受成为Linux 内核中的标准的WIFI 协议栈。 5.Netbook 的支持。我们的工程师在加速Netbook 启动的过程中也做出了重要贡献,以实现在Netbook上5秒启动的里程碑。 记者:你们这个team已经存在多年,做出了哪些成果,对Intel、对开源社区都有哪些方面的贡献? 傅文庆:我们在内核平台配置和电源管理(ACPI),内核性能优化,无线网络协议栈及驱动,PCI子系统功能实现,Kexec/KDump, SystemTap方面都有贡献。譬如,我们显著改善了内核休眠和唤醒的用户体验,致力于追踪内核性能损失并及时更正,贡献了第一个开源的无线协议栈等。在开源社区方面,我们多次代表从中国来的开发人员在国际知名内核开发会议上发表论文讲座。积极参加国内开源社区,特别是内核开发社区,为推动社区发展贡献自己的一份力量,比如我们积极参加北京内核开发研讨会,阿卡内核开发者大会并贡献讲座,我们的成员积极国内内核开发者聚集较多的linuxforum, zh-kernel等论坛或邮件列表,积极参与讨论,为初学者解惑答疑。 记者:祝贺下你们这个Team代表中国获奖在中日韩论坛大会上获得“特殊贡献”大奖,这体现了你们的价值,也可以看做是中国开源界对您们的一种肯定,对于获奖,您们都有一些什么想法? 傅文庆:对于获奖,我们一是感到欣慰,能通过自己的工作,向其他国家展示中国对Linux开发的贡献和影响。二是感到一种鞭策,以激励我们能够把工作做得更好,对Linux的贡献更大。同时我们也是希望能够和国内从事Linux内核开发的工作者能够有更多的交流合作。 记者:很多人告诉我,Intel OTC的工程师具有双重属性,一方面是Intel的员工,另一方面在为开源社区做着贡献,从而具备了社区属性,你们是如何认识这样的问题的? 傅文庆:确实,OTC 的工作模式就是典型的开源软件开发的模式,虽然我们也会做些内部的开发计划和进度的跟踪,但是我们的工程师都是以符和开源软件的开发模式进行工作的。工程师们开发的代码都是按补丁的形式,由他们以个人的名义提交到相应的开源软件的邮件列表,通过在邮件列表上的讨论(甚至争论),取得项目维护者 (Maintainer)的赞同,并经过代码的审查(Review),修正,最终被并入相应的代码树中。在公司内部,他们是Intel 的员工,在开源软件的项目的开发中,他们就是一个开发的个体,为开源社区作出他们的贡献。
记者:你们对于中国的开源爱好者,社区的参与者都有哪些方面的建议? 傅文庆:下面是一些我们团队对有志于内核开发者的开源爱好者的建议和心得。 邹南海:我觉得主要是要多看代码。看书要看讲操作系统原理性的书,如果是纯粹讲代码的书,还不如直接看代码。 林铭:我觉得看书和看代码都很有帮助。刚开始学习Linux的时候,曾经徘徊过,是看书还是看代码。对于刚开始做内核编程的开发者来说, Understanding Linux Kernel是一本很好的入门书籍,它讲的比较细,然而和代码又有一些差别,对照着最新的代码来读,可以达到知其然并知其所以然的效果。另外就是要有耐心。我开始上手的时候,内核有些代码,看一会可能会觉得没意思,就想跳过去。看了一年感觉没太大效果,但后来坚持和Understanding Linux Kernel结合,从头看,仔细学,半年时间就感觉收获很大。参与开发,可以从把一个bug描述清楚开始,这需要去做一些调查,摸清楚一个bug怎么重现,表象上是什么样的,有什么特别之处,这些特别之处又对应着源代码的那些部分,等等。等把这些在邮件列表或Bugzilla上描述清楚了,回头再看看,往往离解决这个问题已经不远了。 李少华:如果是想做内核开发者,需要扎实的基础知识,比如C语言,计算机体系结构等。如果觉得这些方面的知识都很吃力,建议尽量不要过早的去看内核。要循序渐进,先熟悉掌握这些方面的知识。 刚开始做Linux内核开发的话,kernel janitor是个不错的开始。 赵亚奎:我来说一个我的个人体验,选定内核的一个方面的主题,多去看它的代码,去理解它怎么工作的,同时参与社区的讨论。 黄瀛:做开源软件开发,可以从用开源软件开始。遇到问题或者不满意的部分,去看他的代码,不要只是作为普通用户去抱怨。然后去社区反应问题,参与讨论。要虚心听取别人意见,俗话说,有人骂比没人理要好。参与社区讨论,关键是心态要好,开始的时候,不要太在意是否会被接受。 王振宇:做开源软件的开发,个人体验是,开始的时候,不要定太大的目标,要去开发什么feature啦,要去做什么大项目啦。从审阅(review)别人的工作开始,不是简单的读代码。看看是否能看的懂,是否能提出改进意见。如果和读代码结合,会更有效率。 吴峰光:对自己感兴趣的部分的代码,可以直接去看邮件列表里的相关的patch。patch里往往都会有描述,可以帮助理解。看patch演化的过程往往比直接看最后结果会更有效。 张衍民:我的心得是,初学者从bug fix入手最好。从小问题开始,不要怕问题小。从小到大,比较容易被接受,而且可以逐步建立自己的credit,熟悉开发社区的氛围,为将来做更大的feature或项目打下基础。此外,对内核开发者而言,硬件知识也很重要。 马凌:我这里提一点学习内核的心得。可以从点到面。比如说我在做图形方面的工作。入手的时候,就从直接看到的i915 DRM驱动看,又看到调用到的AGPGART驱动上的东西。然后又看到PCI总线驱动相关的东西。因为这些只是和图形驱动相关,所以看到一定深度就不看了。比如对sysfs方面的调用,我只要假定这个函数调用能工作就行了。对初学者来说,深度优先的看法是比较危险的。容易陷入到死胡同,又没有高手指点迷津。对于自己暂时不感兴趣的东西,可以大概知道是什么意思就好了。 傅文庆:关于中国的初学者比较“怕”的和开源社区共同方面,我们的心得是,对初学者确实是会有些语言方面的障碍,譬如有时候有很多话想说,可到时候又写不出很好的句子表达,就偷懒只写两句拉到了。有些时候邮件列表上的一些表述,对我们没有英文背景的开发者来说,也搞不清楚他们的态度到底是怎么样的。我们的建议是: - 开始不要考虑语法,不行就使用1,2,3这样一跳一跳的列。反正老外英语好,他们能看懂的。 - 又想说的就要多说,就想BBS上灌水一样,要养成和别人交流的乐趣。 - 对邮件列表上表述不清楚的,直接回复问对方是什么意思。不要回避。 - 还有一点很关键,做开源开发,不要本着做产品的态度去做。很多做产品的项目一直想着利用开源,把东西做完就好了。但如果要做开源的开发者,就必须有着开放的态度。 |