开源如何影响程序员 如何在国内做开源

Apple核心系统高级工程师Asta谢(谢孟军)就《开源如何影响程序员》这一主题,结合自身经历、从开源中得到的自我提升,详细阐述了自己对开源的理解,如何在国内做开源,并成为GitHub上Go语言领域中国排名第一,以及如何同国内外开源者一起参与开源的过程。

本篇主要讲诉我做开源经历的一些事及关于开源的影响。

我的开源成长之路

我在Github上做的一些事

做开源做了好多年。目前的状况是:在github所有的user里面,全球排名16。go语言领域里面,中国排名第一。世界排名第六,前五位排名均为组织。在Github(github.com/astaxie)上,我分享了一本书,一个beego,一些工具。希望写一本书。目前在准备一个秘密项目,之后会开源出来。同时也参与了一些其他的开源组织。刚刚说的TiDB的开源,也会去改一下代码,贡献一下么。贡献是一个享受的过程。

始于大二的开源生涯

最早做开源,是从大二接触世界上最好的语言PHP着手的。那时候接触了PHP3、fleaphp。一直在研究这些东西。机缘巧合的情况下,认识的库比较多一些,库积累的多了,就开始用一些框架。那时候,国内有一个框架,叫fleaphp。与此同时,我参与到了fleaphp框架组里面。

同样用之前提到的方式,如果你要参与一个项目,首先,你就要去用它。大学给别人做兼职做好多个网站。基本都是用fleaphp做的。所以对fleaphp几个源码级别的东西,已经掌握的非常熟练了,也知道哪一些方面可以改进,哪一方面做的不是很好。参与开源先使用,拼命的用它,到崩溃为止。只有把它用到崩溃为止,你才能找到他痛点在哪里。

我做开源fleaphp框架时,好像没有github,基本上我们就是通过一些qq群直接交流。哪一块代码不对,要修改一下,然后直接修改了。那时代码还是托管在Google的code上,协作也通过它。之后基于此做了很多视频教程,写了很多热门教程。fleaphp应该怎么去用?现在用的比较多的是thinkphp。其实thinkphp刚开始的时候,抄袭了我们很多的理念。然后,当年fleaphp,我们没有继续做下去,也是因为我们几个创始人开源方向不一样,我去了go领域,离开php界。

这里想分享大家的是,开源是谁主导并不重要,重要的是,你要怎么参与进去。就参与的过程,我给作者提供了一个PR。然后那个作者把PR给Merge进去了,然后成了Contributor,已经贡献进去了。我觉得我的思路和作者的思路,其实是一样的,都是在思考修改一个问题,都是为了改进一个东西。

当然,好的作者的话。比如说,你提供一个PR,过去有时候,人家会拒绝你。在整个交流过程中,其实,也是可以学到很多东西的。有时候,他为什么会拒绝这个东西?Code Review的时候,为什么会是这个样子?我觉得,这才是开源社区的一个氛围。只有参与进去了,你才能学到更多的东西。

再之后,做过一些边边角角的东西,比如写教程、做视频教程。再后来,才去思考做一些工具类,怎么样用一个脚本语言快速去生成一个我要的东西(基于fleaphp的),例如自动化生成结构。这些思想会影响我自己做beego,很多的东西其实都是自动化。怎么样自动化也是有历史渊源的。我以前做过这个东西,我知道这个的好处,可以生成我想要的东西。自动化都是为了节省我们的时间嘛。

为了让代码自动化,做工具类的尝试

代码自动化可以让我们有更多的时间做更多的事情。这个思想,促进了我做beego。文档和工具都是写beego的时候,脑子里立马生成的东西。如果我没有参与到fleaphp这整个开源过程的话,我不可能说,在做beego的时候,是一步而就的。所以说,所有的经历,就像乔布斯在斯坦福做毕业典礼的时候说的,人生是有各个点串起来的。你之前做某件事的时候,是不经意做的,但是你后面做另一件事的时候,其实你前面已经做了很多的铺垫。也就说人生的经验累积到一定的步骤,你就会爆发。所以这也就是一个由量变到质变的过程。

那这之后呢,我就去了盛大云,做CDN的开发。那个时候,也只是做一些管理系统(用PHP的)。那个时候,认识了老徐,开始接触一些go语言的东西。那个时候,go语言是R60版本,还没有正式的release版本之前。就开始尝试写一些go语言的东西。为了尝试用go语言去写呢,因为php确实折磨了我好长一段时间。

特别是我加入盛大珈学院之前,我在百事通也是用php做我们自己的TBIB系统,遇到很多的性能问题。我记得有次熬通宵熬了两个通宵。为了把那个并发从300提高到400,整个熬了两个通宵。但是大家想,从300到400,性能呢没有提升多少,但是你就花了好长时间做这个。每一个小细节都需要花心思去优化。

后来,接触了go语言之后,就感觉,随便一写都是php的好几倍。当然,现在php7出来之后,也是性能提升了好多。那是你相比于go语言,go语言毕竟是静态语言,性能还是天生的比较好。就开始接触了go语言,就开始写我们自己的应用大文件分发系统、调度系统,然后短域名啊,就发现go语言写起来就有一个非常好的好处:就是我只要编译过后(前提逻辑通畅),跑到线上,性能非常好。

所以那个时候就开始深入的学习go语言起来。那个时候,我们组里还有一个小伙子李辉,他是做C++的么,会了解到很多底层的东西。所以很多底层的东西,我会和他交流,在交流当中就开始不断的学习。也是那个时候,自己每天回家就利用业余的时间,不断地把我自己学习go语言的整个过程来全部写下来。然后,才有了这个《goWeb编程》这本书。其实,写了很长时间的。我估计,那个时候,是第一本有关于go语言的第一本书。应该肯定是。

被编辑一句话打动,写了一本书

这本开源之后呢,大家反馈比较好。然后,出版社就开始联系我,问我要不要出版?我的理念是,开源嘛,知识是要共享的,是要帮助到其他人的。因为,我刚刚和大家说过,我在做fleaphp的时候,做过以及写过很多的教程,教大家怎么去学习。在写这个《goWeb编程》的时候,也是怀着一份让大家怎么样更好学习go语言的心事编写的。

当出版社来找我的时候,我就感觉,我又不赚钱,我为什么要出版。然后,我被一句话打动了。他说,其实有些人是热爱看书的,看书也是知识传播的一种渠道。我想了想,也对。确实有些人是这样的。上厕所的时候,可能就是喜欢看书。在不同的场景下,有需求在么,多一个渠道,何乐而不为呢?然后就答应了他们,但是说实在的,出版很复杂。要审稿,审计。要各种英文字正规范。就不符合我这闲惯了的心。

在写这本的时候,也是在盛大做了好几个下午。把那些基础的组件抽取出来之后,在写书的过程中,在最后两章,我就思考着,给大家介绍下,怎么教大家写出一个框架来。所以,才有了beego框架的原型。在写beego之前,我用的是python的Tornado。所以beego的最初版本就是Tornado的go实现。大家现在还可以看到保留了那个风格。

我觉得control里面对应的就是(莱斯特for)的post,get方法。那后面的就是逐步地增加才有了现在的很多的模块。当然了,今天我也是打算做beego的2.0版本。也是经过这么多年,也是积累了一些很多用户的需求吧。也是打算直接来一个2.0版本吧。

开源对技术人的影响

影响一:眼界

我们自己在写这个东西的时候,就是为了给自己解决事情的。当你把他开源出去,你的眼界就会开拓很多。你想我的用户群里面,其实他们有各种的需求。这各种各样的需求哪里来呢?很多情况下,我自己都没有想到,他们还没有这么用。然后,我们机会可以一起来改进它。这就是开源社区。他们能够让我看得到,我在工作当中遇不到的问题。让我的眼界放的更阔。设计的时候,项目就可以更flexible。特别是,像我以前写的时候,就会犹豫导出还是不导出,都无所谓么。

但是,现在很多时候,我都不大敢导出,因为导出的时候,用户用了,就会很麻烦。现在就实现最小化导出。思考思考再思考。一旦要导出,就会思考2遍,到底需不需要导出,因为后面再撤掉,影响就会比较大。

第二个眼界,就是你把这个项目,放到github上面。那github上,有全世界各个地方的人。你会接触到各种各样的人,90%的人都是很nice的人。他们也很愿意和你交流,愿意得到我们的帮助。或者说,他们的需求是什么样子的。我觉得他们各种各样的信息,对我来说都是一个输入吧。这里面各种各样的信息,对我也是一个很好地学习方式。

影响二:心态

做开源的时候,刚开始就是从一个年轻小伙子,年轻气盛。和别人对喷,到后来无所谓。其实,是越来越享受这个开源的过程了。而不是愿意花时间和别人对喷。人家去骂你的时候,你可以欣然接受。ok。也无所谓。你觉得心情不好就骂几句。实际上,你就讲道理的和别人讲。如果说那个人是在没办法讲道理讲得通。ok.那我们就没必要理睬这样的人就好了。这个也不是你的用户群,对吧。你也不应该把你的时间浪费在这些人身上,应该把你的时间花在喜欢你的人以及你的开源项目的人身上。服务好他们,这才是我们应该真正做的事。

影响三:个人提升

这是最多的方面。例如,我写出来的代码是不是很好,高质量的代码。当然是尽量好一点。没有说,我一写出来的,就是非常完美的。很多时候,你就回看发现,半年前的代码,怎么会这么烂呢。因为你个人是在不断提升,很多时候,他开源代码都是会选择做出接近完美的代码,才会公开。这个也是个人的平衡,就是说做完美了才公布呢,还是小步快跑呢?我个人喜欢小步快跑,赶快实现原型。然后持续的去改进他。因为我想知道,当用户用了之后,这个东西是不是他们想用的东西。

影响四:沟通能力

你需要去写文档们需要去github回复,需要去qq群、微信群里去沟通交流。那怎么样,很好的去和用户沟通交流,把你自己的信息直接通过最短的时间传递你最明确的意思。其实这是非常锻炼人的。到底,怎么样一个好信息?怎么样一个直接传达的方式,这是非常锻炼一个人沟通能力的。

影响五:team work团队精神

你单兵作战,是可以做一个好项目。但是你持续要有一个团队是很有必要的。像beego,有很多人可以维护的,像小黑同学,余双棋同学,有一个貌似意大利的很牛的。只有你很积极地参与进来,我才会认可你,才会把你纳为contributor,才会是团队的人。那团队的人要怎么样一起工作,怎么样相互的review,怎么样把代码做好,怎么样去完善它,协调好各方面。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,978评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,954评论 2 384
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,623评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,324评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,390评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,741评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,892评论 3 405
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,655评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,104评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,451评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,569评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,254评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,834评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,725评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,950评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,260评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,446评论 2 348

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,732评论 25 707
  • 1.主题是什么? 别跟我讲什么大道理,还不都是为了你自己! 2.事件是什么? 助教班我经过思想斗争把自己定位在学员...
    尚灵心阅读 205评论 0 8
  • 面向iOS新手写的...内容较水..见谅 这个demo主要是利用CHTcollectionViewWaterfal...
    轩辕小羽阅读 1,086评论 0 6
  • 一直很喜欢张爱玲文笔,看她的小说,总有种故事的主角在舞台上演的感觉,将人性的种种撕裂开来,任亲观瞻,今天再读,都觉...
    晓之淼淼阅读 214评论 0 0
  • 悄悄地起床 哈欠连天 梦还正香 两个馍馍 一碗汤 摸起昨晚磨好的银镰 外面一地月光 鸡还在喔喔地叫 影子拉得好长 ...
    脆弱的唯美阅读 189评论 0 1