当前位置: > 热博

万字长文解读16年开源老兵的坚持

时间:2022-08-16 13:35:27 热博 我要投稿

简介: 想知道内核研发是怎样的体验?操作系统的“冷板凳”得坐多久才有春天?本文对话龙蜥社区理事长马涛,畅所欲言聊开源,一起来看看那些开源润物细无声背后的故事以及龙蜥社区运营的道法术。

作者 | 马涛 来源 | 阿里开发者公众号

想知道内核研发是怎样的体验?操作系统的“冷板凳”得坐多久才有春天?本文对话龙蜥社区理事长马涛,畅所欲言聊开源,一起来看看那些开源润物细无声背后的故事以及龙蜥社区运营的道法术。

高门槛的 Linux 内核研发,如何支棱起来?

提问:首先想请马涛聊一聊自己的开源故事,介绍一下您最初是怎么与开源结缘的?

马涛:我是在 2006 年加入 Oracle 的,在 Oracle 之前是在 IBM 工作,那会儿其实不是做开源,但对 Linux 还是挺感兴趣,所以后面 Oracle 刚在中国成立一个做操作系统/做内核的团队,我就去参加了这个项目。刚去的时候,我的主管问我说你想干什么。由于我之前从来没做过开源,基础比较薄弱,就选择了做测试。可以认为最早我是从 Linux 测试开始干起的。过了大概四五个月后我就发现,好像我也可以做操作系统,内核也可以,然后就去做了开源。发现开源和测试一样,都要和研发人员交流。做了就发现,做内核开发的老外们都挺 nice 的,在沟通上、交流上都挺好。接触了后发现, 开源真的是一件很有意思的事情。

我刚加入 Oracle 的时候有两个 mentor,其中一个 mentor 是老外,我个人觉得他是我的入门导师。从他身上我感觉到两点,让我对开源或者说对开源的这些人有一个初步的认识:第一个就是做开源的人,因为大家都是从零开始做起来的,所以他们对于这些刚加入做开源的人都是非常 nice,会提供各种各样无私的帮助。这个其实对我后面带一些新同学做开源有潜移默化的影响。

另一个就是我觉得刚加入内核这个大家庭的时候,Linux 内核都是通过邮件列表来做开发的。当你提一个 patch 到开源社区的时候,开源社区的资深开发人员都会对你的 patch 做详细 review,然后给你很多意见。虽然说你是一个入门的新人,你的 patch 也很 junior,但是他们都会很认真地 review 后给你一些意见,比如patch 应该怎么写、应该注意哪些格式问题等等。 给我的第一感觉是整个开源对新入门的小白非常友好,第二是像一个大家庭。

给大家讲一个小笑话,我一开始做测试的时候,对于做开发还是没什么信心的,内心挺慌的。就因为特别慌,所以给 Linux 内核做第一个贡献(是很小的贡献),提交 patch 的时候,把自己的名字都写错了。当时是用英文的,所以我应该是“Tao Ma”,一慌就写成了“Tao Mao”。

提问:最初社区里他们给您很多的反馈,那么通常来说会是哪些方面的反馈?

马涛:各种的都有。我说一下 Linux 内核研发的流程是什么样的,还有对新手是怎么提供帮助的。

一般情况下对于内核开发者来说,会从最早最简单的一些问题开始。Linux 内核有一个专门针对新手学习的网站: ,它里面会有适合新手看的一些文章。另外,当你真正进入内核研发的时候,一般情况下会提一个 RFC(Requestforchanges/comments),先把你的 idea 提给社区。比如,你觉得内核里某个模块、某个东西需要一些变化。

我认为内核是一个合作非常紧密的组织,内核代码有几千万行,它是分了不同的 maintainer,Linus 肯定是最大的 maintainer,下面分了很多级,每一级都有自己的 maintainer。比如说你想提一个 feature,你就找到这个 feature 所对应的组织,然后提个 RFC,接着这个小组的 maintainer 或者资深开发者就会给你提个 comments,会给你一个非常详细的解释。如果这个 maintainer 觉得你提出的是非常好的问题,那么基本上你就可以开始干了。

在很多情况下,当你提了一个 RFC 以后,相当于这个坑就被你占了,后续就可以不停地提交 patch。当你提交第一版 patch 的时候,maintainer 会 review,会给你些参考意见。一般最开始要求非常严格,从最简单的格式上有无问题,一行代码开头不能有空格、必须用 tab 键开头、一行的长度不能大于 80(最早)。再比如说,一个函数命名的时候要怎么写参数格式、哪个地方要空格、哪个地方不能有空格、等号之间要空格等等。

内核几千万行代码,如果没有非常严格的要求,大家可读性就很差,所以 coding style 是要严格要求的。 从最简单的 coding style 开始就会给你提建议,再到后面代码设计的逻辑、错误处理有没有问题、结构上有没有问题,包括你对其他模块的修改会不会产生一些问题,都是非常非常详细的。

我有一个 patchset 大概写了二十多版最后才提交进去的,每次提上去 maintainer 都会给你反馈意见,最后我都麻木了。其实我这还不多的,我还看见还有发四、五十版的,所以 Linux 内核整个研发机制还是非常严格的,包括对代码要求、对工程质量把控。所以我觉得这个经历对自己的锻炼是非常非常大的。从事 Linux 内核研发,每一行代码都凝聚了很多心血。

提问:像您刚才描述 Linux 内核社区或者很多的开源社区,它相当于有一个非常好的培训机制。一个小白、一个学生甚至是一个爱好者,他只要胆子够大,敢开始提第一个 patch,就会有人来帮助他变得更好。但是为什么还是有很多人都不敢去干这件事情?

点击链接查看原文,关注公众号【阿里开发者】获取更多福利!https://mp.weixin.qq.com/s/6rHnwncSwcGCfqTnRAgQWw

版权声明: 本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。