开源共同体--程序员的乌托邦


| 转载自:ALC Beijing

| 作者:姜宁

| 编辑:钱睿

| 设计:周颖


这是《开源共同体-- 程序员的乌托邦》演讲的文字稿,大家可以点击下文章最后视频链接观看完整的演讲。  


大家好,今天很高兴能和大家分享《开源共同体,程序员的乌托邦》这一话题。

首先介绍一下我自己, 我叫姜宁,我是华为开源能力中心的技术专家。 


在加入华为之前,我曾担任红帽软件的主任软件工程师。我是2011年成为Apache软件基金会的会员,2015年成为基金会的孵化导师2020年我发起了Apache 北京本地社区这个组织,2022年当选ASF董事会董事



在开始正式话题之前,大家先看一个我们团队倾情出演制作的一个小短片。 

看完短片,大家是不是已经心动了呢?


这里我把 OpenSource Community 翻译成开源共同体,共同体中生产者和消费者之间的地位是平等的。这张照片是 ApacheCon 最吸引开发者的一项活动 hackthon就是在大会几天的时间里,大家聚集在这样的圆桌周围面对面对进行编程活动。


2007年第一参加 ApacheCon 的时候,就被这样一群开源项目开发人员的忘我的技术热情所感染,一连写了两天的代码,那种用思维碰撞带来的顿悟与编码实现的愉悦让我至今难以忘怀。


在我眼中的开源共同体是一群热爱开源的人,他们对开源项目或者与开源相关的活动很高的热情。他们专注于自己感兴趣的领域,他可能是某个开源项目的用户,也可能是某个开源项目的核心开发人员,对项目的共同的兴趣爱好让他们走到一起,开发出足以改变世界的开源软件  



在这里我们一起交流编程心得,一同协作开发项目,在这里你不但能够得到高手的帮助,而且还能为新人提供指导。好的开源共同体会倾听更多用户的反馈,并以可持续发展的方式,不断打磨需求,创建更加好用的软件


加入到开源共同体中你将结交很多志同道合的朋友,快速提升你的技能,收获比你想象更多的成就感


接下来我将为大家分享我在开源共同体中的一些亲身经历。  


16年前,我和 XFire项目的创始人,后来CXF的联合创始人Dan Diephouse在北京闲聊。当时他才25岁,就开始在世界各地为大家提供XFire的咨询服务了。 我惊奇地发现他当年大学的专业居然是化学,而不是计算机。

要知道从头独立写一个WebService 框架对一个科班出生的人来说也是一件非常难的事,何况是对一个非计算机专业的人来说。 


我非常好奇地向他询问起他创建项目的整个过程,

他说,他是在酒吧里开始写这个项目的,当时得到了开源圈里面很多高手的帮助。


开源共同体是一个程序员不断成长的好地方


我当时因为工作的关系刚刚踏入开源圈,不是很理解他说的这些话,没有体会到开源共同体的强大魔力。只是觉得他比较幸运,可能是因为美国的开发环境比较好吧。


在结识Dan之前,我曾经在一家国企工作,我的工作经历是这样的:在绝大部分的时间里,我的工作是被指派的,我很少有机会能够选择自己感兴趣的工作 


我的日常工作是按照需求编码实现一个具体的功能,大家都是独立开发维护自己写的那块代码。我写的代码除了我自己,很少有人会关心。我经常是独自一人完成功能,我不需要关注代码是否整洁,是否易于维护。因为我的老板只是关注我是否能够按时按量的交付功能。


我写好的代码的通常也不会马上得到反馈,往往是一个月之后,到了上线的那天,我才能知道我的代码是否能够新上线的系统上正常工作。 


所以每当上线或者发版的时候,大家都会很忙,也会特别紧张,

如果程序出了问题,大家通常需要熬夜来做紧急修补。  


因为当时国企的空余的时间比较多,而我所在的部门做的业务就是用C++来写一个通信服务程序,为了提升技能,我开始研究开源的ACE这个C++网络编程编程框架。



通过阅读用户手册,学习软件架构模式,让我对ACE 框架有了一点基本的认识。 

但因为在公司内部没有其他人可以交流,我需要花费大量时间读文档,看教程,挖代码要知道这么多的代码不是小说,如果不是带着问题去读代码的话,很难有所收获。 


我花费了大量时间研读代码,但是我的学习进展却非常缓慢。 



直到我有幸真正加入到开源项目开发后,

我才逐步体会到融入开源共同体会对个人的成长巨大帮助。


与公司封闭的环境不同, 在开源共同体中,我可以找到与开源项目相关所有信息,并且随时能得到项目资深成员的指导和帮助 



在开源共同体中, 资深开发者非常关注我提交的代码,经常review我的代码,并提出中肯的建议。我现在还记得第一次代码合入到主干的艰辛与喜悦,


在大神们的帮助下,通过一行一行的代码切磋,我一步一步地加深了对项目的理解,同时还能不断提升着我的编码技能。 为了提升效率保证开发质量,资深的程序员通常会编写好用的测试框架, 搭建持续集成测试环境。这样大家提交的代码都有各项测试帮我们保驾护航。



有了好用的自动化测试系统,项目release,我都可以从容应对而不再焦虑。 


在开源共同体中,人们为了生产更好的开源软件这一共同目标自愿地组织在一起。在这里没有传统公司的组织形式,大家的关系是平等的,开源共同体是一个自发形成的组织。



在开源共同体中,没有指手画脚的经理,只有脚踏实地技术领袖。


在这里大家可以自由的表达自己的技术想法,每个人都可以通过参与邮件列表的讨论来贡献自己的想法,在这里,公开讨论建议都会被大家关注 好的想法总能获得大家的认可和嘉奖 



ASF 没有一个人能够单独的做出决定,我们是通过共识决策的方式来做出决定的。正因为如此,我们可以打破公司的边界,让来自于世界各地的人更好地更好地协作起来。 在这里没有人会拿你的个人背景来评判你的能力, 这里不会讨论你是毕业于哪所学校,更不会询问你的国籍或者种族, 大家关注的是你为共同体做了什么贡献。


在这里,程序员可以聚精会神地编写他们的代码,而不用做那些溜须拍马的事情。


开源共同体的成员往往来自不同的公司,我们很难用传统的升职加薪的方式来激励大家。


ASF是如何工作的这篇博文中提到了 Meritocracy 这个词 。我们把这一基本的原则称为任人唯贤,精英治理 就是按照功绩来赋予权力,而不是靠金钱或者地位来获取权力。在开源共同体这种公开的环境下,大家的技术影响力,是由日常点滴的贡献积累起来的功绩  这种把代码提交权或者是投票权赋予给实际干活的人的治理方式特别适合志愿者团体。 


Meritocracy鼓励让大家站在整个共同体的福祉角度来想问题,在这种指导原则下,整个组织合作氛围就会特别好,大家不会只关注自己的眼前的蝇头小利而拒绝合作,也不会因为没有得到授权就放弃掉。如果一件事情对整个组织有很大的意义的话,那么这件事情就值得去做。因为这么做所积累功绩可以赢得大家的认可和尊重。


大家通过为组织做贡献赢得开源共同体的认可的方式来积累功绩一旦你赢得了足够的功绩,你可以成为开发者团队中的一员。你将会获得代码库的提交权限,得到大家的认可,成为项目的 Committer


开源共同体是一个虚拟的组织。开源共同体中成员是非常乐意帮助他人的。如果你遇到有关开源软件的问题,可以直接在邮件列表中寻求帮助。 在这里你可以直接和软件开发者近距离沟通,获得免费的指导。 


日常参与开源项目开发的过程中,我的主要工作就是每天查看邮件列表, 参与大家的讨论,帮助大家解决问题。 从问问题到回答问题,通过参与这样的讨论我感觉我的能力在不断得到提升。  


我在开源共同体的实际经历,真正的向大家证明了之前Dan所说的:

开源共同体是一个程序员不断成长的好地方。 



如果说开源代码是程序员之间相互馈赠的礼物 开源共同体就为这些相互馈赠的赋予了生命,把它们变了在共同体内部能够流动增值的知识


在这里大家能够相互交流,相互帮助,共同成长,开源共同体是最好的的编程练兵场。当我们开发了一个新的功能,很快就能收到用户的反馈。 在这里,开发者可以通过帮助用户解决问题,扩展自己的视野,提升自己的技术水平


在这里,你总能找到和你有着同样兴趣爱好,愿意分享问题和解决方案的小伙伴,共同成长

年轻的程序员也许会迷茫选择什么样技术路线,当然没人有时间把所有的技术路线都探索一遍之后,再选择哪个技术是最适合他的。


当然开源共同体有很多大神级的程序员, 他们都乐意扮演项目导师的角色,无条件地将他们的经验和建议传授给年轻的程序员,帮助他们找到技术拓展方向。  


有时候资深程序员的分享与指导可以非常轻松地点燃大家的热情


我就非常幸运地能和James Strachan这位卓越的程序员共事。 每当他在谈论一个新的热点技术,他就会滔滔不绝地聊起来你能从他的眼睛里看到那种异常兴奋的火光,他对技术的热情深深地感染了我。 


从他发明的Groovy 到将面向领域的特定语言到Apache Camel的企业集成模式的实现,再到最近的JenkinsX 。每一个十年他都会发起一个新的项目,用他敏锐的技术洞察,引领业界的潮流。直到今天我还能清晰地回忆起他在2013Dublin团队会议期间他兴奋地向我们介绍Kubernetes时的场景。 



开源共同体让我能够近距离地与这些卓越的程序员一起工作在日常的开发中,James 不但给予我很多代码的指导,而且通过邮件列表帮我解答了很多疑惑。

他真的扩展了我的眼界,带领我去追求最新的前沿技术。 



从参与开源项目,到融入开源共同体其实并不难。你可以通过项目的官网, README文件获得与项目相关的基本信息,以及如何为项目进行相关的贡献。 



基于这些开放共享的信息,大家可以结合自己的使用场景做很多微创新。在这里协作的意识是被放大的,大家非常乐意以公开的方式毫无保留提出自己的问题,分享自己的经验 在这里有价值的话题是会得到非常快速的响应和反馈的。

 

有时候当我在项目的邮件列表介绍了新提交的功能, 几天之内就能收到来自共同体用户的使用反馈。 有时候,如果我们遇到了一个棘手的技术问题, 大家会在邮件列表或者github issue上面进行激烈地讨论,并尝试找到更好的解决方案。 



依托互联网基础设施,以及成熟高效的开发环境,开源项目团队人员在异地实现高效地协作。无论是问题解答,提案讨论,亦或是代码审查 你总会能在共同体中获得志同道合小伙伴的反馈。也许你们未曾谋面,也许你们素昧平生,但是你总能得到这些人最真诚的帮助和反馈。 


接下来我想分享一下ASF前董事会主席 Craig Russell的开源共同体黄金原则

你待人如人之待你、谦逊有礼、达诚申信、虚怀若谷、敢于担当、求同存异、同心协力、共创未来。


当人们觉得自己在是团队中重要的,有价值的一份分子,他们是会更加协作,会更具有创造力,并且更加愿意为团队付出更多


综上所述,开源共同体真的是程序员的乌托邦


对于想加入这一乌托邦的小伙伴,我有以下几点建议:


1.在进入开源项目之前需要学会倾听

阅读项目的官网页面,quick start,阅读邮件列表或者issue的历史讨论,了解大家是如何提问题的,如何进行代码评审,如何解决问题的。



2. 理解规则

通过阅读贡献者手册,社区行为规范了解社区规则,通过阅读代码评审日志学习代码编程规范。


3.  展示工作

学会和共同体成员进行沟通,尽量使用邮件列表,issue 公开地进行讨论。不要害怕公开展示自己的设计和代码,要知道眼睛越多,bug无处躲藏。



4. 注意细节

在提问过程中,分享你所做的尝试,给出详细的日志和错误信息。展示新功能,需要提供完善的上下文信息,给出详细的指导说明。



5. 赢得尊重

乐于助人,不止局限在代码贡献上。需要站在共同体的角度上思考问题,承担繁琐但又必要的工作:例如修订文档,举办会议, 协助社区宣传。 建立良好的人际关系,赢得共同体的尊敬。



最后祝大家在开源共同体中, 找到自己的乌托邦!



相关阅读 | Related Reading


代码穿流-迷失的开源乌托邦之三



仅剩2天,110+社区已报名2022开源之夏!


大话开源|操作系统十年磨一剑,幕后的坚挺、不懈与客户第一 @龙蜥社区·马涛



开源社简介

开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。


2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近七年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了近百家赞助、媒体、社区伙伴。



本文分享自微信公众号 - 开源社KAIYUANSHE(kaiyuanshe)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

{{o.name}}
{{m.name}}

猜你喜欢

转载自my.oschina.net/u/3727380/blog/5515577
今日推荐