10月21日,杭州云栖大会-技术&可持续发展论坛,注册有礼 了解详情
写点什么

90 后开源老司机徐亮:从大学开始全职做开源是一种怎样的体验?

2021 年 8 月 31 日

90后开源老司机徐亮:从大学开始全职做开源是一种怎样的体验?

“如果你有正确的态度,有趣的事情自然会找到你。”

 

Eric S. Raymond 在被奉为“开源运动独立宣言”的《大教堂与集市》一文中,总结了 19 条在开源开发中非常有用的理论,上面是其中一条。开源项目总会在不经意间升级,参与者可能最初只是做一些小打小闹的贡献,后来逐步维护越来越重要、越来越多的代码,甚至是负责整个程序。在一个鼓励代码共享的软件文化中,这是一种很自然的项目演化方式。

 

徐亮在开源社区的经历也遵循着同样的演化路径。从一开始因为兴趣入圈、负责翻译工作,到后来成为UbuntuDebian资深官方开放人员,甚至把开源变成一份全职工作,今年已经是徐亮与开源结缘的第 12 个年头。

 

徐亮,摄于河北丰宁坝上草原

“年轻的开源老司机”


作为一名进入开源圈子已超过 10 年,有丰富开源社区经验的“90 后”,徐亮接触开源的契机来自他对于计算机的浓厚兴趣。用徐亮自己的话说,“左玩玩右玩玩,比较偶然地遇到了 Linux 操作系统,然后就走上不归路了。”

 

徐亮读初中的时候,每个班级的教室里都会有一台装了 Windows XP 系统的中控电脑,主要用来给老师上课播放 PPT,当时徐亮和几个朋友的一大乐趣就是折腾这台电脑。后来大家觉得 XP 系统太无聊,开始到处寻找新玩具。徐亮“斥巨资”在电脑城买了一套经典的 Red Hat Linux 9(Shrike)光盘,一共六张 CD,其中 3 张都是源代码盘,而源代码盘其实一般都用不上,卖家只是很忠实地把官网提供的东西都刻出来了。一直到现在,徐亮都觉得这事“很坑”,因为“浪费了非常多零花钱”。

 

换着玩了几个不同的 Linux 发行版之后,徐亮开始重点折腾 Ubuntu。在玩的过程中,徐亮发现操作系统的汉化非常不完整,就顺着源代码中留下的译者联系方式接触到了当时国内负责 Ubuntu 操作系统翻译的小圈子,并在侯正鹏的引荐下加入 Ubuntu 社区,从软件翻译开始实际参与到开源社区工作中。

 

那时候还是 2009 年左右,在国内搞开源社区的人只是一个不大的圈子,搞翻译的人更少。很多“老人”已经背着翻译的职责好多年,彼时刚刚入圈、还是个高中生的徐亮于是成了“继任者”。他慢慢接手了翻译的职责,并在 2012 年左右成为了国内好几个大项目唯一的翻译负责人,直到今年他才找到可以接替自己的人。

 

在扛起 Ubuntu 简体中文翻译大旗的同时,徐亮也更深入地参与到了各种社区活动中。当时 Ubuntu 的商业发行公司Canonical每年都会在国外组织开发者大会,并邀请 Ubuntu 社区里比较活跃的社区用户代表参加。徐亮也得到了一次参加开发者大会的机会,借此接触到了 Ubuntu 社区开发人员,并从打包工作开始逐步做一些开发相关的工作。

 

2011 年,徐亮正式成为 Debian 的开发人员,两年后,他又申请成为 Ubuntu 的核心开发人员,并得到了进入 Canonical 公司工作的机会。


 

Ubuntu wiki 上徐亮个人介绍页面中的推荐人感言,第二位和第三位推荐人分别是侯正鹏和李道兵,他们也是国内操作系统开源社区的早期参与者(来源:https://wiki.ubuntu.com/AronXu

全职做开源是一种怎样的体验?


Ubuntu 有几个官方特色版本,优麒麟(Ubuntu Kylin)是其中之一。

 

2013 年,中国工信部软件与集成电路促进中心、中国国防科技大学与 Ubuntu 的商业发行公司 Canonical 在北京联合创立“CCN 开源软件创新联合实验室”,优麒麟正式创立,第一个版本随 Ubuntu 13.04 同时推出。这是一个针对中国市场特色的基于 Ubuntu 的操作系统,也是 Ubuntu 的官方中国版本,专注服务中国市场。优麒麟不仅实现了语言本地化,还在 Ubuntu 原版基础上增加了众多中国特色应用,如原创的 UKUI 界面、内置中文输入法、集成 WPS、网银支付等。

 

同样在 2013 年,那时还在上大二的徐亮正式加入 Canonical 公司全职做 Ubuntu 主线版本研发,主要负责输入法、network-manager 和 ZFS 三块。他既是优麒麟开源项目的核心开发者,也是搜狗输入法 Linux 版的主要开发者。

 

在 Canonical 的工作一直持续到 2017 年 5 月,之后徐亮短暂尝试了一段时间的创业。2019 年,在与华为持续沟通 9 个月之后,徐亮加入了华为开源能力中心。

 

据介绍,华为开源能力中心是一个公司级别的开源能力部门,主要负责公司内部开源管理、内源开发、整体开源知识体系架构的构建等,同时也为产品线提供包括运营能力和技术能力的支持。如果说业务线做的是 N,那么开源能力中心负责的就是 N+1、N+2 的部分,比如承担业务线尚不具备的能力建设,包括整体的开源合规体系管理等。

 

那么,跟有自己的本职工作、用业余时间做开源相比,全职做开源的好处是什么?在徐亮看来,全职做开源会让自己有更多的时间和精力思考开源这件事情、在社区里做出更多贡献,同时公司也会提供更好的资源和平台;兼职做开源则主要凭兴趣爱好,可能投入的时间精力以及能动用的资源相对来说比较有限。但徐亮认为全职做开源不一定适合所有人,当兴趣变成职业,到底是好事还是坏事,结果本身也因人而异。此外,全职做开源也有不是那么好的一面,有时候可能会错失一些接触更先进的技术的机会。“虽然开源是一个很好的协作模式,但不代表每时每刻开源的东西都是最好的、最先进的。”

 

徐亮表示,如今开发者想要把做开源变成全职工作的难度相比以往已经小了很多,但仍然不是每个人都可以做到,毕竟开源开发不管在国内还是国外所占的比例都非常有限,目前在大公司做开源可能相对比较容易一些。

 

除了需要公司提供相应的岗位之外,全职做开源对于开发者个人的学习能力、沟通交流能力也提出了更高的要求。因为需要沟通的人不再只是身边的同事,要学习的东西也不再局限于在公司里做的项目。与此同时,由于代码开放、人人皆可参与,随时可能会出现一些意外情况,比如突然有一个技术很牛的人看不惯来“砸场子”,这类事情在开源圈里已经发生过无数次,徐亮自己早期也经历过类似情况。虽然很多时候这种踢馆并非出自恶意,但依然会给被踢馆的一方带来极大的压力,如何跟进沟通和处理,对个人的挑战非常大。

开源终要回归理性


当下,开源在国内可以说是前所未有的热度空前。不仅很多企业大力投入,连高校学生在找工作的时候也会拿自己的 GitHub Profile 去展示自己参与过哪些开源项目、写过什么代码。越来越多企业和个人重视开源、参与开源,对开源在中国的发展肯定是件好事,但同时也有人担心,很多企业和个人抱着“开源为我所用”的目的参与进来,会导致开源这件事掺杂过多功利心。

 

在徐亮看来,不管是抱着什么样的初衷和目的参与开源,最终还是要回归开放代码、协作分享的本质。“有人的地方就有江湖,一直以来国外的开源圈子很大程度上也是公司之间的一个商战场所,现在开源在中国的发展并没有违背这一点。所以并不是说开源本来不是这样、现在变成了这样,只是以前在中国大家还没有参与进来而已。”

 

徐亮认为,开源一派火热背后的隐忧在于,当前国内参与开源的人很多,但不同事情投入的精力分配并不完全合理。比如,做开源运营和治理的与真正做开源技术的人数比例就有些失衡。

 

其实国外已经有很多开源社区和组织的经验可以借鉴,因此制定开源准则等治理工作并不需要太多人。只不过现实情况是,国内可能基于对形势的合理考虑,什么都希望有自己的一套,包括自己的许可证、自己的社区、自己的社区行为准则、自己的治理架构等等,过程中会涉及消化吸收其他开源社区的经验,就导致这变成了一件高度专业化的事情。从这个角度来看确实缺少一些能够很好地理解和解读现有社区做法的人。

 

但是从开源本身来讲,更重要也更需要的是真正参与项目开发和贡献的人,包括开发、测试等等。可能再过几年,中国开发者整体水平更高了,大家不再需要那么多条条框框去约束,类似“自建一套社区治理架构和流程”的需求就会减弱。基于徐亮参与 Ubuntu/Debian 社区的经验,很多时候一个几千万行代码的开源项目并不需要一套特别形式化的治理体系,也能够运作得很好(甚至反而运行得更好),如果在社区参与者还不够丰富的时候就先建立起一套治理体系,反而可能会产生一些掣肘。

 

此外,过去几年国内一些头部企业的开源工作屡屡引发争议,比如被批“刷 KPI”、“PPT 开源”等等,徐亮认为这也是因为大家太重运营。确实,开源有帮助企业构筑生态、打造影响力、建立事实标准的能力,但要“徐徐图之”。如果运营走在前面,就会出现“发声在前、贡献在后”,或者不贡献,或者贡献得一团糟;同时也会导致企业内部出现不好的导向,可能今天公司说要做开源、在行业构建影响力,然后一下子所有人都在搞开源,各种 KPI 就出来了。

 

当然,这背后也有社会环境和氛围的因素。中国加入世贸后这十来年一直处于经济高速增长的阶段,导致大家更愿意赚快钱,当下国内软件行业整体也会比较浮躁,企业对开源的规划更倾向在短期的一两年内见效,而不是慢慢做十年二十年。但徐亮认为,浮躁不会一直持续,中国的增长速度总归会慢慢回落,未来整个软件行业(包括开源在内)都会慢慢趋于理性,变得正常化。

 

“当所有人都重运营,争相去抢事实标准的名头,可能中间花了几年时间和很多的钱,最后大部分人都没尝到甜头,因为事实标准就那么几个。这就会倒逼他们去反思这件事这么做到底对不对。国内软件开发的积累与国外还有差距,如果不依赖开源可能技术要倒退十年。所以企业还是不得不参与到开源里面来,但未来可能会更理性地参与。对自己有价值就参与,代码不想永远自己本地维护同时又不影响核心竞争力的就回馈给社区,这就是一个很正常的开源使用管理和贡献的方式,不是所有事情都一定要搞得轰轰烈烈。”

写在最后


很多时候在开始做一件事之前,并不需要多么坚定的信念或崇高的动机,只要怀抱一点好奇心开始去做,事情自然会在做的过程中变得越来越重要。徐亮参与开源的经历也是如此:因为好奇心驱使而开始,又因为认可开源理念和开放共享的文化走到现在,更多是一个“顺其自然”的过程。

 

好奇心同样影响了徐亮在开源和职业道路上的一些选择。他决定加入华为有一部分原因是因为想要看看在这种全球国际关系动荡的时候,华为内部会发生哪些变化、怎么去做开源;而加入开放原子开源基金会则有一个重要原因是想要置身其中去看看国内第一个开源基金会怎么运转,如果它成功了,它的收获是什么,过程中得到的教训又是什么。

 

开源作为一种高效的人与人之间协作的方式,主要解决了两种问题,第一种是对于一些“重复造轮子”成本极高的大型项目,比如 Linux 内核开发,任何公司都无法负担得起重做一次的成本,因此企业和个人就会选择以开放协作的方式一起完成这项工作,减少了社会成本的浪费;另一种也是开源本身所体现的协作共享精神,很多人可能不觉得这件事我做了很大的贡献,只是觉得这个东西做完了可能会对别人有用就把这个东西开放出来了。从这两方面来看,开源对个人、企业乃至整个社会来讲都有很大的价值。因此,徐亮希望能够借助现在所处的平台和个人能力,把开源这件事请做得更好,让开源产生更大的价值。

 

在他看来这并不是什么高大上的目标,只是做开源的技术人的一个朴实的愿望。

 

采访嘉宾介绍:

 

徐亮(Aron Xu),Ubuntu、Debian 资深官方开发人员,搜狗输入法 Linux 版主要开发者。开放原子开源基金会 TOC 成员,现任华为开源能力中心技术专家。


新的一波开源浪潮正在席卷中国,InfoQ 希望通过系列访谈深入了解国内外开源发展现状,总结国内外企业以及个人在开源方面的成功经验以及失败教训。如果你有自己的开源故事或对开源的深刻观点想要分享,欢迎联系微信 caifangfang842852(注明姓名和来由)。

 

另外,DIVE 全球基础软件创新大会(北京)2021“开源布道与生态建设”专场演讲嘉宾正在招募中,欢迎自荐或推荐,联系方式同上。

2021 年 8 月 31 日 09:003289
用户头像
蔡芳芳 InfoQ高级编辑

发布了 620 篇内容, 共 304.8 次阅读, 收获喜欢 2024 次。

关注

评论 1 条评论

发布
用户头像
请问这篇文章想表达啥?
2021 年 09 月 02 日 15:40
回复
没有更多了
发现更多内容

小谈音视频质量检测

箭上有毒

音视频 5月日更

架构实战训练营 - 模块4 - 作业

Presley

IOS端音频的采集与播放

floer rivor

音视频

三大业界大佬的DevOps解决方案

信码由缰

DevOps

MySQL 数据库学习笔记(2)

lenka

5月日更

模块四作业

c

架构实战营

比物理线程都好用的C++20的协程,你会用吗?

华为云开发者社区

事件驱动 嵌入式 事件 主循环 C++20

模块四:课后作业

黄嘉治

架构训练营

Docker 存储调整的几种方法

运维研习社

Docker 5月日更 存储管理

你习惯写注释吗?

ES_her0

5月日更

前端开发:Vue项目报错Unknown custom element:XXX - did you register the component correctly…的解决方法

三掌柜

5月日更

SimpleDateFormat线程不安全的5种解决方案!

王磊

Java 后端 5月日更

垄断

小天同学

商业 市场垄断 5月日更

缓存数据一致性 - 架构师峰会演讲实录

万俊峰Kevin

Go 缓存 微服务 cache 分布式缓存

LeetCode题解:341. 扁平化嵌套列表迭代器,DFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

《Spring 手撸专栏》| 开篇介绍,我要带新人撸 Spring 啦!

小傅哥

spring 后端 小傅哥 面经 手撸Spring

Python 正则表达式

若尘

正则表达式 正则 Python编程 5月日更

Golang 别名类型

escray

Go 学习 极客时间 5月日更

网络攻防学习笔记 Day16

穿过生命散发芬芳

5月日更 网络攻防

前端之变(一):技术的变与不变

御剑

程序员 架构 前端 代码人生

K8s二开之 client-go 初探

雪雷

Go Kubernetes

🍃【Spring原理系列】让你知道真正的“AOP”

李浩宇/Alex

spring aop 面向切面 spring aop 5月日更

CampusBulider(模模搭)学习笔记6:室内搭建

森友小锘

3D可视化 数字孪生

构建可靠的磁盘系统:故障判定和自动化处理

焱融科技

云原生 运维自动化 高性能 分布式存储 超融合

我的Serverless实战—玩转腾讯云Wordpress

liuzhen007

Serverless 5月日更

系统思考力建立3个简单操纵方法

风翱

系统性思考 5月日更

图像灰度与灰阶的纠结:gray level/scale译文释义

老猿Python

灰度 图形图像处理 数字图像处理 灰阶 gray scale

密码学系列之:IDEA

程序那些事

IDEA 密码学 程序那些事

下周极客时间课程学习计划

IT蜗壳-Tango

5月日更

Spring Cloud 与 K8s 在微服务层面的不同

Damon

k8s spring-cloud 5月日更

【LeetCode】二叉树的堂兄弟节点Java题解

HQ数字卡

算法 LeetCode 5月日更

数据cool谈(第1期)数据库寻路,开源有态度

数据cool谈(第1期)数据库寻路,开源有态度

90后开源老司机徐亮:从大学开始全职做开源是一种怎样的体验?-InfoQ