开源是种生活方式

走上开源道路

清晨六点钟,被儿子闹醒,第一件事是打开邮箱,迎面而来的是数以百计的邮件,我知道新一天的工作开始了。

这是一个典型的场景, 过去四年多的时间, 我一直在家工作,全职参与Apache旗下多个开源项目的开发。以开源社区为核心, 以maillinglistIRCJIRASVNGitMaven等为工具,参与全球化协作的开源项目。


走上Apache开源道路,要从2006年谈起,当时源于ObjectWeb社区的Celtix和源于Codehaus社区的Xfire合并,成为了Apache旗下的一个新项目CXF。我当时所服务的公司IONA是开源项目Celtix的主要推动者,也是Celtix的代码提交者(Committer), 因此成为了Apache CXFInitial Committer。 从那之后, 我一直从事开源软件开发工作,期间伴随着IONAProgress收购, 以及Progress成立独立的专门从事开源项目的子公司FuseSource。根据项目发展的需要,我从事的工作也从最初的Apache CXF扩展到了Apache旗下的多个开源项目。目前,我是Apache CXFServicemixKarafCamelFelixCommitter(在Apache开源社区中我使用Freeman Fang这个名字),并且是Apache CXFServicemixKarafPMC member(项目管理委员会成员)。


我想读者最为关心的问题是,全职从事开源软件的开发,靠什么来生活?是完全凭兴趣吗?如何保证自身的可持续性发展?

Ok,要回答这些问题, 必须先谈一种基于开源的商业模式—围绕开源社区和开源软件, 通过雇用主要的开源项目开发者, 向外提供付费的商业服务, 这种付费服务包括订阅、咨询、培训等。我的雇主就是提供类似服务的商业公司。这种开源商业模式在基础软件架构领域(如开源操作系统、开源数据库和开源基础中间件)已被证明是一种行之有效的方式,在欧美市场被广泛接受。但在国内, 这种商业模式还没有被普遍认可,很多人还认为开源就是免费,不愿意承认特定领域专家的价值,这种现象很值得深思。


在我看来,这种开源商业模式下,开源项目和开源社区因为有了商业公司的介入更加活跃,开源开发者有了稳定的收入获得了可持续发展,付费用户由于有了商业支持能更有效地使用开源软件,非付费用户也能从活跃的开源社区获得支持,构成了一个共赢的生态环境。

回到本文开头,我的日常工作是:阅读大量我所从事的Apache开源项目的邮件和公司论坛帖子,回答社区用户问题;实现新功能或者修复Bug,提交代码到Apache代码库中。同时,如果付费用户提交了问题,那么高优先级处理付费用户问题,但实现的新功能或者修复的Bug都会第一时间回馈到相关Apache项目的代码库中。



为什么从事开源项目

如果一个人能很长时间做一件事情并乐此不疲,那么只有一个解释,他很喜欢做这件事。我喜欢开源的原因很多,且听我一一道来。


原因之一:开源意味着最大程度的分享,降低了知识学习的壁垒, 给了后发者赶超的机会。

在从事开源软件开发的过程中,我经历了这样一个心理变化,从很自信到很不自信到慢慢找回自信。 由于有机会和世界上最好的一群软件工程师一起工作,我可以很清楚地看到自身的差距,但开源意味着一切都是透明的,不仅仅是代码,公开的社区讨论也能给你很大的启发。时间长了,你会看到自己的进步,慢慢找回自信的过程就是进步的过程。对于一个喜欢技术、追求技术的人, 开源是一个能提供无限可能的大平台。


原因之二:开源给了我最大程度的自由。

我不用去办公室工作,能自由安排自己的工作时间。在北京这个大都市里,不用去办公室意味着每天能节省2~3个小时的通勤时间, 我可以用这个时间来学习、健身、娱乐,甚至加班。有了孩子之后,我每天早7点之前开始工作, 通常下午4点我会将工作停下, 接管照顾孩子的任务。在晚上8点孩子睡了之后,我会最后再工作一会儿。

随着Internet等基础设施的飞速发展,伴随着大量辅助工具软件的出现,远程办公成为可能,越来越多的工作由集中式变成分散式,我们的工作模式正在改变。这种模式降低了大城市的交通压力,办公场地的压力,更加节能环保,同时也提高了工作者的生活质量。


原因之三:开源给了我成就感。

每次获得一个Apache项目的Committer权限,都是一次被认可的过程。通常意味着你要不断地提交高质量的Patch给该项目,积极参与该项目的社区讨论,之后该项目PMC才会提名和投票表决。每当收到一个项目的Committer邀请,都会带给我巨大的喜悦和强烈的成就感。此外,参与社区讨论,回答别人的问题,也是一件非常愉快的事情,这真的是可以上瘾的。 

从事开源,就有机会和最好的工程师一起工作,做领先的技术和项目,这些项目不仅能直接服务最终用户,还能成为其他项目的重要组成部分。例如,Apache Geronimo选择基于Apache Karaf来实现OSGi容器;还例如Apache CXF作为但不限于JAX-WS协议的一个实现,得到了很广泛的应用。 多个JEE服务器如Apache GeronimoJBossJOnASPramati选择CXF作为自己的JAX-WS实现(从JEE5开始则要通过TCK认证且需要有JAX-WS的支持)。


原因之四:开源让我更好地了解世界。

从事开源项目的开发人员,来自世界各地,具备不同的文化背景、教育背景和思维方式。通过和他们交流, 我更好地了解了他们的技术水平以及引发了我思考人家为什么会达到这样的技术水平。

举个例子,西方的工程师从事开源软件只有一个理由—兴趣。英文里有一个单词是Geek, 翻译成中文是极客,代指狂热于技术、思维异于常人的人群。用Geek来形容开源开发者再合适不过了,他们对技术的追求无止境,他们喜欢创造新的东西,他们渴望改变和引导技术发展的进程。对比国内研发工程师经常忧虑一些现实的困境,他们从来不考虑30或者35岁之后老了没有竞争力的问题, 他们很少考虑转型做管理者。他们通常年龄在35岁或者更大一些,10余年的行业技术积累让他们知识的深度和广度都很好。由于社会文化真正认可技术的价值,他们只凭做工程师就能生活得非常好(真的是非常好),他们要考虑的内容相对单纯一些, 就是从兴趣出发,完全以技术为导向。当一个人真正对自己从事的工作有极大兴趣、引以为豪且有多年的经验积累之后, 其创造力和生产力是惊人的。


技术专家的产生需要土壤,需要社会价值观作为导向,让有天赋的研发人员愿意长期从事技术积累且无后顾之忧,并能获取相应的回报是产生群体性技术专家的基本前提。如果我们的技术人员都在考虑找机会转型, 那么恐怕永远只能做低水平的简单重复,离诞生伟大的软件公司这个目标会越来越远,与和世界一流的软件水平之间的差距会越来越大。


原因之五:开源已经、正在和将继续改变软件业的发展以及我们的生活。

基于成本优势;代码可见,可深度定制;系统高度自由,无需绑定到特定厂商;更敏捷等原因, 越来越多的公司采用开源软件和开源架构,这种趋势也使更多的商业公司开源自己的产品, 以适应市场的发展。

且不说国外开源应用风起云涌, 国内也有很多公司重视开源技术,采用开源架构,例如国内某著名电商互联网公司。该公司重视技术积累,有自己的给力技术团队,有能力对开源解决方案深度定制,快速满足自身需求。该公司的系统每天都在承受超大规模的并发请求但依然很稳定。我一直认为在大压力复杂应用环境中,只有自己是自己的上帝,开源给了你主宰自己命运的机会。这个例子说明真正重视技术积累,有给力技术团队对企业自身的应用是多么的重要。



为什么国人参与开源力度不够大

参与Apache开源项目以来,有一个现象非常困扰我,就是很少有同胞在相关项目邮件列表/论坛问问题,是国人很少使用这些开源项目吗?显然不是,以Apache CXF为例子,如果我们使用Google Trend来查看关键字CXFGoogle被搜索的统计,我们可以看到最多的搜索请求来自中国,搜索者使用的语言排在第一位的是中文;同时,我可以在互联网上搜索到大量的关于使用Apache CXF的中文技术博客。以上都能证明, Apache CXF在国内被大量使用,但我为什么在Apache CXF的邮件列表中很少看到中国人问问题, 更不要说参与讨论、解答问题甚至打Patch了。我在这里想尝试分析一下为何同胞很少参与讨论,并帮您打消顾虑。


我认为最主要的原因是文化上的差异,它首先表现为语言上面的障碍。开源社区的参与人员来自世界各地,为了保证大家的交流,采用的语言是英语,毕竟英语目前是国际上最为通用的语言。在线下交流中,我了解到,很多人因为要用英语问问题而迟疑,甚至放弃问问题。其实大可不必,因为Apache社区很多参与讨论的人员的母语都不是英语,这并不妨碍大家用英语讨论技术问题;再者,我和欧美同行交流过语言方面的问题,他们(尤其是英语是母语的同行)认为很多中国人过于低估自己的英语交流水平。实际把自己的问题用英语描述清楚并没有那么难,别担心,没有人会像针对我们的英语考试中短文改错那样对待你的邮件/帖子。毕竟, 我们掌握英语的程度远远超过西方人掌握中文的程度。另外,多参与讨论, 对实用英语的挺高也很有帮助。


文化上第二个差异体现在不同的学习方式上,我们擅长的学习方式是有系统的教材,有标准的大纲, 最好再有大量的练习题来强化知识点。我们习惯于这种学习方式,我们对规划好的知识点可以掌握得非常好,具体的体现是我们很擅长考试,但我们很少主动问问题。大多数人在考完试之后, 马上就会忘掉之前死记硬背的东西。西方人要学习一个东西,习惯自己找材料,找问题,讨论问题,因此,讨论问题本身就是他们所习惯的学习方式的一部分。而通过这种方式获得的知识更让人记忆深刻。我认为他们更善于学习新东西,尤其是需要自己主动学习时,他们的学习方式让他们更有优势。我们害怕没有面子,害怕问出不靠谱的问题,回避交流。不要这样,要更开放一些,善于利用Apache社区这个很好的资源,和技术专家讨论问题。况且,英语有一句俗语,“No question is stupid”,就是在鼓励大家问问题。

Leave a Reply

Your email address will not be published.