最近有朋友问我,想要做一个开源项目,但是不知道做什么好。WebMagic虽然还很小,但是写的过程中总会有些感悟,提出来跟大家分享。
开源要有需求
“创始人”、“作者”这样的光环吸引了不少人,就跟很多人吼着要去“创业”一样,于是大家加入了“重复发明轮子”大潮。最经典的大概算是“Web框架”了。
我不反对大家为了学习自己写写框架,从菜鸟一步步走来嘛,为了考验下自己的能力,大家都可以理解的。这样的项目走远的几率很小,请放平心态,冷静看待,你要的是过程,不是结果。
还有一种是真的想要结果的,想要成为“知名项目创始人”的,我觉得你可以用“创业”的思路去想想这件事。开源项目本质也是一种产品,一种给开发者的产品,所以一样要有需求。你抓住了需求,自然就有了参与者。Web框架有需求吗?我想是有的,但是要么是更特殊的场景,要么是更便捷的使用,要么是更高的性能,如果仅仅想证明“我代码比xxx写得好”,或者“我做了xxx”,我觉得还是趁早收手好。抓不住需求的创业是死路一条,开源项目也不例外。
举个例子,我之前写过一个DNS服务器BlackHole,差不多就是为了提高自己的技术而写的。那段时间每天既写代码,又写博客,提高倒是非常快,但是项目本身积累不多,因为少有需求,所以也少有人参与。现在开发完了,我自己也懒得用了。这个项目对我自己来说是挺好的,但是价值产出就比较小了。
开源请选择熟悉的领域
首先,把日常工作做好。如果日常工作实在不是你喜欢的领域,我觉得倒不如换一个工作,但是请分清什么是真的不喜欢,什么是懒得去工作的借口。
在日常工作中,总会用到一些开源产品,工作中遇到问题,做到求甚解,乃至于深入进去,这样很可能会找到官方也不曾发现的东西,从而反馈官方,这样既做出了贡献,又对日常工作本身也有帮助。而且随着你对这个项目越来越熟悉,你成为核心commiter也并非不可能。这样创造的价值,可能比自己发起一个项目更大。
另一个可能是日常工作中需要的东西,却没有开源产品作为替代,那么你倒是可以自己尝试做一个。你的需求也是别人的需求。《大教堂与集市》里就说过,好的开源项目都是挠到了自己的痒处。WebMagic应该属于此类。WebMagic可能不具有说服力,那么Github上star最高的Bootstrap,或者是Google的MapReduce技术,其实都是来源于工作中的需求,乃至于开发者自己的需求。
开源与工作的关系
很多公司都支持员工参与开源项目,国外的不列了,国内的阿里是代表,其他大公司基本上也是不排斥的。好的公司甚至能申请到资源,组建一个小团队来做这个事情。
当然如果你的项目跟工作关系不大,那么可能会过的难过一点,但是这不是绝对的。比如我日常工作是做Web开发,但是WebMagic是一个爬虫。但是我也会把WebMagic用在日常工作中,例如健康检查、自动化测试、简单的数据采集等地方。
如果老板不满意你做开源,觉得你工作不饱和的话。首先,你确保不在工作时间做。其次,如果这样老板还有意见,我觉得可以考虑换一个老板,因为这样的老板见不得员工发展,对你长期来讲也没什么好处。如果时机不成熟,我觉得还是偷偷做吧,别放Github了,换个名字建私有库吧,http://git.oschina.net/是个不错的选择。
开源贵在坚持
WebMagic从发布第一版到现在已经半年了。最开始功能比较简单,但是慢慢的完善起来。完善的过程中也有很多朋友参与,提出了不错的建议,从而促进产品的演化。
WebMagic开源半年,发布了8个版本,已经有150多个star,差不多一天一个,并且基本是平稳增长。算个不负责任的数,坚持2年,那么能达到700个star,这算是一个中型项目的规模了。但是坚持绝非易事,相信大家都有体会。
记得有人说,在国内做一个项目,如果作者不维护,基本上这个项目也就死掉了。就实际来看也差不多,大家自己感受一下。
拥抱开源社区
Github是个非常不错的平台,但是缺乏对于小项目的推广。WebMagic能有一些用户,得感谢oschina这个社区。oschina关于软件的归类、搜索都很好,PR也挺高,还能将问答、博客和项目关联起来。
经过我这半年的经验,转化率最高的是“投递新闻”,所以大家多多发布版本吧!