华为员工成中国极客第一人!
jopen 10年前
杨飞,华为的一名员工“极客青年”,2014年10月正式成为GCC(开源编译器)社区Maintainer(维护者),中国公司第一人。
从索取到回馈
开源社区又称开放源代码社区,是全球范围软件开发者集中地。开源的最大特色在于开发人员和使用者可以观看内码,修改程序,软件源代码自由流通,不受知识产 权约束。这激发了世界各地的软件开发人员投入到开源软件的开发中,用户和代码贡献者以合作的形式来进行软件开发。
这是一个很好的学习、交流、共享平台。在开源社区,参与者可以及时发现并共同解决程序中存在的问题,提高软件性能,软件开发人员的集体智慧得到充分发挥。华为自研编译器基于开源GCC编译器开发,是开源社区的直接受益者。
最初华为编译器团队与开源社区的互动只是索取,如:引入开源社区先进的开发和测试方法,及时同步重要补丁。杨飞和同事们订阅的开源社区邮件列表每天光PATCH就几十个,不断改进代码。如果不能及时吸收消化相关技术,很快就跟不上开源社区的发展步伐。
随着业务发展和技术进步,杨飞开始在社区提出问题并参与讨论。开源社区有很多经验丰富的世界级专家。杨飞团队在自研编译器开发过程中曾遇到过一个非常棘手 的技术难题,费了很大力气也没找到满意的方案。最后,将问题发送到GCC社区,社区专家们纷纷提出建设性的意见,甚至给出解决方案。
回馈社区源于一次教训。在杨飞团队开始做V1R3项目时,经历了开源基线版本的升级,这时杨飞有点傻眼了,因为版本升级意味着前期辛辛苦苦在老版本上做的 修复全部清零,需要在新版本上重复修改,而新版本变换了很多接口,因此这个修复工作特别麻烦、特别折腾。
自此,杨飞才意识到应该将这些修复方案回馈社区,贡献社区。这不仅可以极大地减少因为版本升级带来的维护成本,还能促进社区发展,做到Win-win。
贡献的快乐
于是,杨飞提交了第一个补丁。立刻,社区代码库的修改日志中出现他的名字和邮箱。杨飞说:“那一刻,我就像买彩票中大奖似的,非常兴奋,同时也对开源编译器的开发工作多了一份自信!”
开源社区活跃着很多专家,很多人具有二三十年的开发经验。想在这里站稳脚跟并不容易,首要事情就是建立起个人的技术影响力。于是,杨飞利用更多的业余时间 去钻研编译优化技术,经常一头扎进开源的代码海洋中,去发现源代码中的一些隐藏Bug,大胆假设,小心求证,提出修复方案,调试代码到凌晨一两点也是常 事。他还积极参与社区讨论,发表自己的见解,对公共问题积极回应。
杨飞明白,虽然华为在社区的贡献排名稳步上升,是贡献最大的中国公司,但仅仅作为一个贡献者能给公司带来的价值还很有限。如果要构筑高价值链生态圈,引导开源社区的发展向华为公司利益倾斜,必须成为社区Maintainer(维护者)
随着华为自研编译器开发工作的不断深入,杨飞团队发现开源编译器自身存在一些原生Bug,于是识别了这些潜在问题后一一修复。经过两年多的努力,杨飞为社区贡献20多个关键补丁的修复方案,逐渐在社区建立影响力并获得越来越多维护者的认可。
长期的坚持和努力,让杨飞积累了深厚的编译器技术功底。有一次,杨飞发现GCC编译器中最核心的寄存器分配模块隐藏一个严重问题,并通过海量的测试和验 证,顺利实现问题定位。杨飞将问题场景和方案建议发到开源社区后,立刻引起社区的广泛讨论。这时,社区最高领导者——GCC指导委员会成员Jeffrey A. Law开始重点关注,与杨飞进行深入交流,杨飞提出的修复方案得到他的的大加赞赏,甚至主动提出推荐杨飞成为GCC Maintainer。Jeffrey A. Law对杨飞的评价是:“你对GCC这个领域的理解很深刻,这个方案是我没有想到过的。”
在Jeffrey A. Law的支持下,杨飞的Maintainer申请很快获得批准通过,2014年10月7日,正式成为中国公司第一位GCC Maintainer。
Win-win
华为ARM64是一个开放的处理器体系结构,这是华为芯片战略的重要一环。依托开源社区,杨飞所在的中软欧拉六部编译器团队实现华为自研编译器的重大突 破,巧妙地解决了无线产品代码在ARM64处理器上的移植问题,极大地节省人力成本,并有效提升性能。有了这个技术作为支撑,华为ARM64自研核的设计 与实现将大规模简化,进而推动芯片的能耗比上升一个新台阶。
秉承“从开源中来,到开源中去”的策略,杨飞团队在攻克一个个编译器性能问题后,通过维护者身份为开源社区贡献了三千多行代码。推动社区不断优化和完善的同时,使华为自研代码成为业界标准,助力无线产品线业务确立业界领先地位。
而对于杨飞来说,在开源江湖里,他不仅磨练了技能,也结交的朋友,更是收获了内心的成就感。怀着对事业的热爱,保持好奇心,他将不断地探索编译器的未知密码。
来自:http://pc.cooboys.com/Article/detail/16907