谈谈开源

在接触开源和Github之后,确实学到了很多东西。了解了很多优秀的开源程序,也进而关注了一些大神,并且从他们身上学到了很多东西。后来,自己也开源了一些小项目,其中分布式微博爬虫应该算目前最成功的吧,在QQ群里的用户量已经达到了300了。看着自己辛苦维护的项目star一天天地往上涨。一方面,自己很高兴,毕竟自己的工作得到了别人的认可,而且还会有一小戳儿朋友进行打赏,也有一些朋友提出了宝贵的建议。我都很感激他们。另外一方面,自己也很忧虑,因为怕自己的能力配不上这些star,因为看到很多别的牛得多的人,项目也更好,star却寥寥无几。当然,也有一些骗star的行为,这种行为是我很不屑的,因为做得好别人自然会给star。

今天其实想说的是另外一件事情。从开源分布式微博爬虫以来,认识了很多同道的朋友(不只指做爬虫的,更多的是一些做别的技术的)。他们中有好些都已经有七八年的IT从业经验了,他们给的一些建议也是很宝贵的。此外,还有很多人,他们其实就只是伸手党而已。你辛辛苦苦维护项目,他们并不会特别感激你。文档写了十多篇,甚至连演示视频都录了,但是还会有人问“环境怎么配啊?为啥我输入命令了之后没反应?”之类的问题。这些在项目配置常见问题中都写得很清楚了,可是有人还是不想读,只想伸手让你帮他弄好。还有一些人,他们并不懂如何问问题,比如“我用两种方法登陆微博后,爬取时都出现重定向到登陆页面,这个咋整”,你不给代码,不给看看抓包的信息,我咋知道你具体的情况。还有一些人,在项目使用过程中如果遇到了问题,然后就放弃使用了,连issue都舍不得提一个。还有一些人,如果项目有一些bug,即使他解决了,即使他在群里明确提他解决了这个问题,但是并不想提PR,甚至连代码都舍不得分享一下。很多人都是手伸惯了,压根儿就没有回馈开源社区的意识。

以前,我也是个不会提问题的人(现在可能还是),但是我在描述问题的时候还是会站在回答者的角度考虑,做人要有同理心啊,你既然都不能提好一个问题,怎么能要求别人来回答你的问题呢?怎么要求别人能回答好你的问题呢?那么我们该如何正确的提问呢?提问的智慧这篇文章写得很好,深有感触,建议没读过的朋友都认真读读。

以前,我也是一个只懂得索取不懂付出的人。我也会在使用一个开源项目的时候,甚至抱怨怎么这么难用。也会在遇到bug的时候,自己找方法绕过,但是从来不反馈。后来,随着年龄的增长和认知上的改变,自己也会感激这些开源项目和他们的维护者了,自己也会做一些力所能及的事情去帮助自己用到的项目,让其变得更好。

开源项目的作者很少会有利益上的回报,很多都是出于兴趣或者技术驱动开源的某个项目,也有的是在写了一个工具后发现对别的人也有用,索性就开源出来了。我的情况是属于后者。开源分布式微博爬虫的时候,我也是有私心的,我希望它能得到更多的star,这样或许以后毕业能为我找工作增添不少筹码,也能增加我的一些社区影响力。但是到了后面,真的就是体力活了。核心的东西在完成后,技术活儿就变少了。爬虫这东西又是需要经常去维护的,因为页面改版,你就得跟着改。也无法奢求别人来和你一起维护,有的人有能力去改bug,但他总会以各种借口推脱,直到你修复了,他再捡起来用。除了身体的疲倦,精神上也会很孤独。曾经我以为某个同学愿意和我一起维护这个爬虫,他提了很多建设性的建议,并且贡献了一些非常重要的代码,但是坚持了没一个月,就放弃了。

从开源微博爬虫到现在,算下来已经有一年多了。回答过的问题早已经超过300个了,很多时候自己也会被一些很小白的问题搞烦,因为文档写得很清楚,但就有人不仔细读。现在自己还能坚持下来,真是一个奇迹,因为我看同时期一些同规模也是一些学生开源的个人项目(star更多)早以不维护了。我想,这其中很大一部分原因是由于有业内那些大牛如KennethPhodal等的正向激励吧,另外,和自己的性格也有一些关系,自己本来就是那种责任感非常强的人,既然开源了,要对得起给你点星星和给你捐赠的那些同学啊。

人的一生中要做那么多选择,我很庆幸自己选择了计算机,也庆幸自己拥抱了开源文化。不管未来如何,我还是会坚持开源的。同时,也希望中国的开源风气能有一些好转,少一些伸手党,多一些懂得感恩和回馈的人。