• 开源是种生活方式
    时间:2012-08-12   作者:方越   出处:programmer.com.cn

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

    走上开源道路

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

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

    走上Apache开源道路,要从2006年谈起,当时源于ObjectWeb社区的Celtix和源于Codehaus社区的Xfire合并,成为了Apache旗下的一个新项目CXF。我当时所服务的公司IONA是开源项目Celtix的主要推动者,也是Celtix的代码提交者(Committer), 因此成为了Apache CXF的Initial Committer。 从那之后, 我一直从事开源软件开发工作,期间伴随着IONA被Progress收购, 以及Progress成立独立的专门从事开源项目的子公司FuseSource。根据项目发展的需要,我从事的工作也从最初的Apache CXF扩展到了Apache旗下的多个开源项目。目前,我是Apache CXF、Servicemix、Karaf、Camel、Felix的Committer(在Apache开源社区中我使用Freeman Fang这个名字),并且是Apache CXF、Servicemix、Karaf的PMC 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 Geronimo、JBoss、JOnAS和Pramati选择CXF作为自己的JAX-WS实现(从JEE5开始则要通过TCK认证且需要有JAX-WS的支持)。

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


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

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

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

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

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

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

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


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

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

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

    本文简单总结了我是如何走上Apache开源道路的及从事开源项目的一些感想,很多思考来自于新浪微博和各位朋友的交流过程(我的微博@Freeman小屋)。如果本文能鼓励更多的同胞积极参与开源项目,写作本文的目的就达到了 。

    另外,本文一家之言, 纯属个人观点,不代表任何机构、组织和商业公司。

    最后想说,能有机会全职参与Apache开源软件的开发,是我的机会好。我不是技术专家,我和技术专家一起工作, 我一直在努力,我是Freeman。

    网友留言/评论

    我要留言/评论

    相关文章

    大势所趋话开源——中国开源现状分析:随着计算机技术的发展,尤其是互联网技术和相关企业的兴起,开源软件在操作系统、编译工具链、数据库、Web服务器、移动操作系统等各方面已成为主流。而且许多企业利用开源软件形成了独特的商业模式。比如Google的Android操作系统,从2007年开源发布第一个版本起,到今天已经发展到4.1版本,占据了智能手机操作系统一半以上的市场份额,Google也通过Android操作系统在移动互联网这一新兴行业中占据了领先和主导地位。以前一直和开源软件做斗争的微软公司,为顺应潮流,也开始拥抱开源,比如向Samba项目贡献代码,放弃自己研发多年的大数据项目而选择Hadoop为其大数据的核心等。
    聊聊语言之争:寒冬也凑热闹写了一篇,之前还有@左耳朵耗子、@tinyfool、@老赵、@Laruence等人,看起来挺热闹的,我也说说我的想法吧。
    当我谈开源时,我谈些什么?:关于开源,我有很多的感想,但是在一篇文章之中,我可以谈些什么呢?在与程序员杂志的编辑杨爽聊天时,我虽尚未理清自己的思路,却想到了一个听起来不错的标题《当我谈开源时,我谈些什么?》因为像这样一个看起来完全开放的标题,似乎什么都可以往里面装。简直可以随便涂涂就写出一篇形散神不散的散文了。
    如何招到烂程序员:我已经阅读了大量的关于如何 招募优秀开发人员的文章, 但如果你只对烂程序员感兴趣 – 哪该怎么办? 也许你并不需要用人才去挣钱,或者你觉得保质保量的完成工作并不是最重要的事。 不管是出于何种原因,本系列的关于烂程序员的文章都是关于这方面的窍门。 欢迎阅读第一篇:‘如何发现烂程序员’。
    移动互联网的十种支付方式:产品经理和开发者们将热度飙升的“移动支付”分为“远程支付”和“近场支付”,但更多的用户并不关心原理,只关心这些新鲜的支付方式是否有足够的“未来感”,是否足够好用。在这个移动互联网的时代,连“花钱”的姿势也变得时髦起来。
    草根微博的粉丝4大来源:如果仅凭一己之力发点微博,能获得上万的粉丝量就说明已经很不错了,而快速获得动辄十几万、几十万的微博大号的粉丝从那里来呢,我总结大致分为四类。
    爸爸和无我编程十条诫律:在爸爸去世前,我和他谈论了2个星期关于编程的事。
    从KPI谈产品的“抓大放小、合理规划、需求驱动”:KPI,Key Performance Indicator,互联网产品工作也离不开KPI。产品设计之初就要考虑转化率、用户注册量、活跃用户量、UV/PV、日登等等,并且在今后的产品成长中对这些指标负责,不断的改进完善,完成阶段目标的KPI。与此同时能起到第二个潜移默化的作用:施加一定压力,督促产品经理工作。
    创业总结:创业公司怎样留人:创业阶段的公司,人是第一位的,事儿是人做的、资源在人手里,团队决定了项目的路能走多远,投资人最看重的也是团队。创业公司没钱没名气,招人、留人都很难,团队人员流失,不仅耽误项目进度,也影响士气,招人和留人是创业团队最头疼的问题之一,根据我创业时验证的结果总结已下几点经验。
    编程让我知道自己在变老:编程让我知道自己在变老