庄表伟:从软件工程师到开源人

1. 什么是开源人,我的定义

在我看来,成为开源人是一个标志性事件,是一种对于自我的身份认知的转变。从开源的使用者,到开源的爱好者,再到开源的从业者,最后将开源作为自己一生的“志业”,这个时候,我们才成为了一名开源人。就像那天听到谭中意说的:“开源人不退休”,我深有同感!

也许,不同的人会有不同的心路历程,也会对于开源人有不同的定义。我认同的开源人,就是对于开源有所信仰,有所坚持,努力推动开源向善,并且在日常的工作与生活之中,都奉行开源精神的人。

当然,对于什么是开源精神,往往见仁见智,莫衷一是。我将通过下文的讲述,聊聊我所理解的开源精神,以及我成为开源人的经历。

2. 我的社区生涯

在真正理解开源是什么之前,我已经对于开放源代码,有了粗浅的认识。当初是因为一个偶然的原因,我想要发起一个开源项目,因此进入了一个技术社区,而在当时,整个中国范围内,都还只有技术社区,没有开源社区。

1998~2002年,我当时在一家电子政务/电子商务的公司,直白一点说,就是一家替政府和商业企业制作门户网站的工作。因为制作网站的工作往往大同小异,于是我建议公司开发一个“框架”,通过这样的框架可以快速应对后续的各种各样的网站制作要求。但是,我自己是野路子出身,之前做过的几个网站都是用PHP开发的,远远不如用Java语言开发出来的Web网站,能够有更高的报价。

正好,这时候公司入职了一位正牌的Java工程师,他提出了一个标准的J2EE+EJB的企业级框架,非常的复杂,自然也非常的炫酷,于是我的框架方案就出局了。我自己很不服气,就找到了当时的Hibernate中文论坛,后来改名叫JavaEye,打算在那里结交一批朋友,同时发展自己的开源项目。

当时的想法很简单:我自己一个人肯定搞不完那么大一个项目,我得拉人一起干。一个无名小卒,大家都不认识,没人会理睬我,所以我得先积攒足够的人气(按照现在的说法:要先当网红)。幸好我在来JavaEye之前,有其他的社区经验1,相当熟悉标题党2,盖楼3等常规操作。比较重要的几篇文章是:《代码擂台》,《我来发邮件》以及《敲响OO时代的丧钟4》,毫不夸张的说,我是当时的盖楼高手!

另一个的重要动作,就是帮JavaEye当时的站长范凯改造网站,当时那个网站还是基于开源的BBS搭建的,叫phpBB,我给它加上了Blog的功能,每个用户,都可以把自己发布的帖子,转成一篇自己的博客。因为这样的贡献,我也成为了在当时的JavaEye,权限最高的五皇冠用户之一。

另外就是在社区聚会上发表演讲,这个以前真没干过。在JavaEye的社区成员大会上,我哆哆嗦嗦的上去发表青涩的演讲,介绍自己刚刚开始学习Ruby on Rails与RESTful的一些心得体会,真的是一次难忘的体验。

就这样,虽然我的开源项目最终并没有做出来,但是朋友是真的交到了好多!

3. 从开发者关系到开源活动运营

在进入盛大创新院之后,我开始负责开发者关系的工作,也开始意识到企业运营开源社区,发起并组织开源活动的重要性。因为发起了《我们的开源项目》活动,我也因此算是正式踏入了开源这个圈子,成为开源社区的一份子。

在多年以后,我在与老郭聊天中才知道,我是怎么能进盛大创新院的。老郭(郭忠祥)当时是盛大创新院的副院长,而我在一家小公司做项目经理。一方面是JavaEye的网友(T1)的推荐,另一方面是老郭跑到JavaEye去翻看我发的各种帖子,其中《OO丧钟》的那篇文章引起了他的注意。老郭说:“比如你那个时候自己设计一个语言,多数公司不会关注这个,但是我们是很关注的”。

进入创新院之后,我一开始在一个叫“格子客”的项目,后来就开始负责盛大与外部开发者的关系。我在一次给领导汇报的PPT里,仿造CRM(客户关系管理)创造了DRM(开发者关系管理)一词。现在开发者关系(DevRel)也已经是一门显学了5

在负责开发者关系的团队期间,我提出了几个要点:

  • 好感同心圆理论
    • 从毫不关心(甚至敌视)公司,到略有了解,到有好感,到愿意建立合作,甚至成为公司的员工,这是一个逐步向企业靠拢的过程,也是一个好感不断加强的过程
  • 赢得好感的三个手段
    • 办比赛:通过举办各种开发竞赛,黑客松等活动,把奖金发出去,把好感赢回来
    • 赞助社区:积极赞助各种开发者社区活动(后来是开源社区活动),同时把公司内部的大牛包装之后,输送到社区,建立影响力
    • 对外开源:将公司内部的有价值的代码,想办法开源出去,甚至还创建了当时最早的代码托管平台(TeamHost)

到2012年的时候,我在微博上也有了不少粉丝(当时快到2万了),也结识了相当多的开源社区的朋友,于是我在微博上喊了一嗓子:“有没有可能组织一个技术聚会,大家各自聊聊自己做过的,正在做的,打算做的开源项目啊?”

没想到, 这条微博引起了远远超出我预期的反响,很多朋友都因此而积极的投入进来,比如程开源,比如杜玉杰,比如车库开源小组的赵乐天。还有很多很多我不认识的志愿者,愿意加入,愿意帮忙,愿意报名,愿意讲讲自己的开源项目。

在短短3个多月时间里,我们在北京、上海、成都、深圳,一共办了6场“我们的开源项目”活动,参与活动的总人次超过500人,其中志愿者约有40多人。20多个有分量的主题演讲,以及超过30个的5分钟闪电演讲。

经过这样的一段经历,我认识了开源社区的很多朋友,也算是正式踏入了开源这个圈子。

4. 从开源爱好者到理论研究者

进入华为之后,出于工作的需要,我开始认真阅读《大教堂与集市》这本书,并且开始思考开源相关的各种问题。在经过深度思考之后,我对于开源的认识,有了很大的变化。

2013年的时候,也是因为开源社区里一位朋友的推荐,我加入了华为公司,从事内源(Inner Source)相关的工作。说起来非常神奇,我在进入华为之前,从来没有听说过内源,只是知道:华为希望用开源的方法,在公司内部进行内部开源的尝试,所以找到我来试一试。

进入公司以后,我接到的第一个任务是写一个PPT:论证为什么要在华为公司推广内源。我当时就懵了,不是你们让我来干这个的吗?后来才知道,这正是华为的工作风格,让你做这件事,也需要你自己能够想清楚,把道理讲明白。

最初我的想法很简单,我就是来Change的,虽然改变华为肯定非常困难,但是一点一滴的从小事做起,日积月累总会不断进步的。既然想要将开源的思路与方法引进了,自然是应该引入原汁原味,而且是最先进的工具。因此,Github企业版,成为当然的首选。简单说:这都已经是业界最先进的平台了,你还想怎么样?

Github上线之后,我的工作重心发生了转移,从产品方案制定,转向在公司内部布道。或者直白点说:就是推销员。在布道的过程中,我有了最初的理论总结。

  1. 《开源的逻辑》——这个是开源发展历程与背后动力的介绍,主要参考了《大教堂与集市》一书,后来也有很多部门,大批量的采购这本书。
  2. 《开源项目的质量之谜》——这个主要是为了回答领导提出的一大疑问:为啥开源软件的开发者,松散、无严格管理,却能够开放出高质量的软件?
  3. 《开源项目的协作模式》——这个是在介绍社区的工作方式的,后来也由此形成了一篇文章《三代开源社区的协作模式

最后,我有了一个更加重要的活力三角理论,大概的意思是:

  1. 没有空余时间的人与团队,是无法在研发能力上获得进步的。因为一直埋头于自己的工作,根本没时间去交流与学习。

  2. 研发能力低下的个人与团队,工作紧张繁重,却无法通过自身努力,提升自己的研发效率

  3. 研发效率低下的个人与团队,除了加班,别无他法。这就最终构成了一个死循环!

当然,我们也可以将这个循环变成一个正向的循环:能力提升促进效率改善;效率提升增加空余时间,使得研发活力有可能增加;研发活力的提升,则能够增进研发能力;以上三种要素之间的互相促进,构成了一个「使能环」。

在企业的层面,往往会更加注重效率与能力,而在社区的层面,会更具有活力。这就是为什么企业要向社区学习,引入开源文化的根本原因。

image-20230417231354589

当然,因为一直有写博客的习惯,我这些年也写了不少的开源相关的文章,曾经在2017年集结出版了一本电子书《开源思索集》6,当然,后续又写了不少文章,也许可以再次集结一下。

总之,在华为的这些年,我开始从一个爱好者,变成了真正的开源从业者,变成了开源理论的研究者,变成了自觉自愿的开源布道者,也就是说:不知道在哪一天,我已经成为了一名开源人

5. 在开源社的这8年

无论从哪个角度来说,开源社都是我的开源经历中,最为重要的组成部分(没有之一)。从2015年加入开源社,2016年当选为开源社理事,到2017年受命重构开源社,将开源社转型为完全由个人成员组成的非盈利组织。到了2018~2019年担任执行长,2020~2021年担任理事长,直到现在我也依然乐此不疲地在开源社承担各种工作,也发起各种新的创意,推动他人一起“搞事情”。

可以记述的事情,实在是太多了!我只能挑选两个故事来讲。

首先是开源社的重构。2014年开源社成立的时候,其实是有好几家公司发起并成立的。所以开源社一开始只有单位成员,没有个人成员。到了2015年,我以个人身份加入开源社的时候,开源社开始同时接纳两类成员,不过在开源社的章程里,并没有明确的说明与界定,不同成员的权利与义务。再到后来,开源社的发起成员单位发生了各种各样的变故,比如:微软开放技术有限公司被重新吸收回到母公司,GitCafe公司被收购。于是我们就在考虑:我们应该更加专注于发展个人成员,理事会也应该在全体开源社成员中选举产生。所以,2017年我在开源社接到的第一项重大的任务,就是重新撰写开源社章程,并且提交理事会批准。

修改一个组织的章程,其实就是在规划这个组织的未来。在这个过程中,我也得以从一个开放式组织的结构与权力分配的角度,有了更多的思考。

另一个故事发生在2019年的上海,我们已经决定了在上海的华东师范大学(我的母校)召开第四届中国开源年会,那一年,我们的年会主题是:开源无疆 携手出航(Let’s Cross the Boundaries Together!)

在大会召开前的一个晚上,我们布置完会场,找到了一家烧烤店一起聚餐。虽然又忙又累,却因为新老朋友相聚而谈兴正浓。联想到到2019年5月发生的大事7,世界可能走向分裂的阴影正在向我们笼罩过来,于是我们都开始思考:作为开源人,我们能够做些什么呢?

最终,由我起草,大家共同修订的《开源人宣言8》于2020年发布了。作为开源的爱好者与信仰者,在这份宣言中,我们谈到了我们所理解的开源精神:分享(Sharing)、开放(Openness)、开放(Openness)、协作(Collaboration)以及创造美好世界(Build a better world)。

img

最后,我们用一段结语表达了我们的心声:面对一个急速变幻、急速下坠、甚至可能变得撕裂的世界,我们更应该推广开源精神,凝聚众人向善之力,汇聚众人向善之智,开放协作、互惠共赢,为这个世界变得更好做出贡献!

在这样的宣言中,我再一次确认了自己开源人的身份,并且由此深刻的意识到:让世界变得更好,是我们这些开源人,无可推卸的责任!


  1. 我的野蛮成长 - 读书、思考、生活 - ITeye博客 ↩︎

  2. 标题党:为吸引眼球所起的,特别耸人听闻的文章标题 ↩︎

  3. 盖楼:在BBS,一个主题帖下面,有非常非常多的回帖,被称为盖楼 ↩︎

  4. 敲响OO时代的丧钟! ↩︎

  5. 开发者关系:方法与实践 ↩︎

  6. 开源思索集 ↩︎

  7. https://www.reuters.com/article/huawei-affiliates-us-trade-blacklist-051-idCNKCS1SM014 ↩︎

  8. 开源人宣言 ↩︎