博主是一个不是很聪明的码农。完美主义者,强迫症中期。这里会记录一些回忆和点滴,以博为镜。
武器库:
项目地址:https://github.com/jingege/datax-oraclejdbcwriter
取之于开源,用之于开源
淘宝的DataX开源版本只提供了OCI方式的oracle writer plugin,部署起来有点麻烦。基于JDBC驱动的话,性能虽然不及OCI,但一般只要不是太苛刻的需求,还是能满足的。
DataX的插件机制让对其扩展变得十分简单,所以实现一个插件并非难事,而且笔者提交的代码也并不漂亮,故此次开源仅仅是作为对开源社区的一次微不足道的回馈,理所应当。
项目地址:https://github.com/jingege/yaserde
其实当我决定写这个框架的时候,我突然意识到,我想要的正如hadoop的Writable
做的,而且hadoop已经做得相当好了。可我还是决定要按自己的思路造一个轮子出来。一来自娱自乐,二来也算是对过去几年遗憾的稍许弥补。目前只做了个雏形,但对于简单场景还是可用的。
“月亮还是外国的圆”
这话放到IT行业,我感觉让人不好去否认。
IT技术发源自西方(没算盘什么事吧?!),根基也在西方。先不说各种各样的网络协议、有名无名的编程语言,即使比较优秀的框架或库什么的也都难觅中国智造。这有语言、文化、国情等多方面原因,不想吐槽过多,今天只想聊聊“中国式开源”。
这两年IT圈子不知怎么,突然一改只从开源社区索取,绝不向社区贡献的猥琐姿态,各种中国智造的开源项目如雨后春笋般出现。但笔者感觉这些项目大都是中国特色的,属于中国式的。什么是中国式开源?我觉得下面三个字概括的很好(出处不详):
晒 代 码
最近业余在看国外一个著名开源项目的源码。深感其社区之活跃,笔者读书那会虽然已经经常在sourceforge.net(日薄西山)爬来爬去,但对社区(community)这个概念理解并不深,毕竟那会太嫩,几百上千行代码写出来就敢自称框架,还厚颜无耻地扔到sourceforge.net给人看。扯远了。
前几日,由于工作需要,去看了国内一家互联网大厂开源的某项目(就不点名了,该项目自称用户很多)。两相比较,感慨万千,正好反映了我本文想表达的“三宗罪”。下面细数一下。
###代码品质###
我没有用代码质量这个词。因为代码质量直接让人联想到项目的源码写的好不好、格式工不工整、逻辑清不清晰、抽象优不优雅等,这些我不够格来评判。这里说品质,包括几方面。
首先是测试用例。有时候测试用例可以从侧面反映出某些类的用法,也可以暴露某些关键逻辑,这对于代码的学习者,还是比较关键的。可是我看的那个项目源码,一个用例都没有。
其次是代码内容。这里有个关键问题就是出自中国的开源项目,很多都是来自企业内部的改造,即把内部运行良好的项目,抽取适宜公开的部分包装而成。这就导致这些项目里有时会残留有这家企业的业务气息。导致不能很好的抽象大众化的需求。
###文档###
中国式文档也不得不让人吐槽。该大厂的这个开源项目,我翻遍网络,只觅得一份架构简介、安装说明,区区几页纸。不过好在有一些javadoc,可以生成源码的文档。但谈到前面所说的某国外项目,从README到如何为本项目贡献代码,从WIKI到tutorial,从ISSUES到maillist,一应俱全。甚至作者在采纳了你的patch,要把你加到contributor列表之前,都要先签一份agreement才行。不得不佩服老外的职业和专业精神。
至于为什么我们很难写出一份好文档,我觉得和国情有关,也和文化有关。中国人码农大都年轻,而且大都忙于糊口,公司也大都在压榨员工。很多时候大家都在赶工期。代码都写不完,何谈文档?虽然没有和老外共事过,也没出过国,但从很多老外的博客来看,很多人年龄都比较大,属于经验派,同时,生活压力也不会太大,爱好广泛,生活安逸。饱暖思淫欲,这话放到ITer身上,便是饱暖思代码,一个道理。
###社区活跃度###
上文谈到的国外的开源项目,社区活跃,contributor很多,项目的leader也经常出来和社区互动,言辞亲切。
我在阅读大厂的开源代码时,遇到一些不解的问题,由于文档太少,搜索引擎上关于此项目的讨论也不多,无奈便去微博@了一下几位该项目的开发者,至今杳无音讯。何故?项目主页不是说了有问题可以这么问的么。除此之外,我没看到如何能贡献patch,没看到邮件列表。
综上所述,我认为中国式开源就是在晒代码,虎头蛇尾般。有如小树成长为大树,开源项目亦是如此。好的开源项目,码农乐于参与,维护者做得好的话,肯定会朝着好的方向演进。但面对晒代码式的开源项目维护者,再好的项目都怕是让人望而却步。
临了,此文绝非对大厂的开发者不回答笔者问题的打击报复。实乃多年码农生涯积累下来的吐槽。希望中国码农少一些浮躁。多一些对技术的真挚追求。国内企业少一些压榨,多给码农一些时间和空间。码农从来不是企业的成本,而是企业难得的财富。