正文
目前国内开源存在不好的状态是,一言不合就动口,看到不爽就开骂,开发者做开源,需要用户的一些吐槽。更好的交流方式是,吐槽诸如某功能如何,哪里做的不好,又如何去改进。而不是去埋怨吐槽这个代码有多烂。从大学开始做开源直到现在,我碰过各种各样的人。当然久而久之心态会变得非常好,读者的负面评论并不会伤及到我的内心。
其次,开源也是一种商业模式。好的现象是现在也有很多成功的开源公司,他们把开源的商业模式做的非常非常成熟。例如 redhat 是开源的操作系统,也要用到商业的支持。MySQL 被 ORacle 收购以后也是这样。以上两个例子应该是在商界模式上做开源做的非常好的公司。
云计算领域,做的比较好的如 openstack、docker、kubernetes,开源项目非常成熟,背后的商业模式也已经逐步做起来。尤其 openstack 在私有云领域,已然做的非常完善。前天(1 月 10 日晚),OpenStack 开源云计算企业 EasyStack 宣布完成 5000 万美元 C 轮融资,这也说明了开源并不表示免费。我们可以去提供很好的商业支持和商业模式去发家致富。OpenResty 和 BigBang 是开源项目。没有商业运作。
一个好的开源项目,如果要做的更加成功,背后需要有一个更好的商业模式去支持他。因为开源并不等于免费。这是从商业模式角度。思考,开源是一种营销模式,它使得以往封闭的需要很长周期技术验证的项目,以开源的方式可以很快进行验证。
首先,要有一个能解决问题的 idea。无论是工作,做产品,根本上是怎样解决别人的某一个痛点。不管这个痛点多大多小。创业也是为了解决某一批的一个痛点。有了能解决问题痛点的东西,才能拿出来说,自己要去创业了,要写项目了。因而开源的前提,是解决某些人一个痛点的东西。
其次,善用身边的小工具。很多时候我们身边的一些小工具,是可以锻炼出来,做一些开源的东西。例如,我在我开源的一个东西 bat (github.com/astaxie/bat) 下,忘记原来是 java 还是 python 写的了,有一个叫 httpIE 的命令行工具,开源测试 lastfor 的 api 的。
于是 go 语言,自己重新写一个。这个就是结合我自己的 beego, 因为里面有很多 api,然后用 bat 测这些 api。后面,我又考虑,用 bat 是不是可以写一个 desl 的语言。就是我要测的。写一个 json,然后 request 应该怎么样。response 应该怎么样。也就说类似黑盒测试一样的东西。你只要写那个我的请求是什么,返回是什么。你用 bat 运行下。是不是就可以测试结果出来了。
这是比较容易入手的。因为你能解决你自己的那些问题,同时大家可能同事之间也好,圈子里面也好。大家平常的时候是怎么去处理这些问题的。然后这个问题,我怎么样把它做的更好。很多时候,我们都是说,更好。那怎么样才能更好呢?我们用某一个东西的时候,感觉它不是很好或者不是我想要的东西。我怎么样让它变得更好?当你有一个想法的时候,其实,你已经有一个 idea 了。有了一个 idea 时候,怎么样变得更好。变得更好的过程,其实是已经产生了一个开源项目了。
再次是完善的文档。开源项目做好之后,你的文档要跟上。因为只有有了完善的文档,才能把各方面的人才给聚起来。我现在记得非常清楚的一句话,大学时候,教我电路原理的一个老师,他说过的一句话 “你要记住你做的任何东西,你的用户都是小白。只有把你的用户当做小白, 你的文档才能写的非常好,每一步才会清晰易懂。每一步处理下来是不是可以行得通?你只有这样直白的文档,才能让最没有编程技术的人也能看得懂。
这样的文档才是好文档。这样的话,人家才能看了你的文档,感觉你这个人好有水平。同时,在写文档的时候,也能提升你的技术。如果感觉步骤非常多,就可以思考如何进行简化?这同时也是一种提升。我们应该思考,我们怎么与社区中的其他人进行很好的交流。后面,我会讲到,如果,你做开源做多了,这个能力就自然地上升了。
再然后,就是开始把你的东西推广到全球,能够链接全世界的开发者交流这个东西。那怎么做到这一步呢?对我们程序员来说,现在是最好的年代。因为我们有了 github,github 是给我们程序员一个交流平台。因为,很多人说,“Talk is cheap, show me the code.” 把代码放在那里,文档也有了。这个时候,github 的星星也就一颗两颗,没人来理睬。
这个时候,你需要去一定的圈子里面,做一定的宣传。现在确实是一个信息爆炸的时代。再好的酒也怕巷子深了。所以,你要去社区里面进行宣传。比如说 go 语言的开源项目,去 Google 的 Groups 里面去宣传。或者莱推特瑞或者 prezi 或者 facebook 的群组去宣传。当大家看到这个东西,是我们想要的,那么一切自然行云流水了。
最后,就是我们要去找到目标人群。时间长了,还是会积累起来一部分用户。这一部分用户就是我们所说的目标用户。看看这批用户,他们的分级。有开发者,有 CTO, 有架构师。他们都是为了什么,用你的这个东西的。每个人的目的是什么?一整个的过程,又可以促使你项目急速发展。相当于社区反馈的过程。同时,在这整个过程中,我们就可以了解,我们的开源项目是为了解决哪些人的哪些问题。一旦你这个开源项目做成功了,类似 Apache 麒麟、TiDB 这样。那你就具备了可以创业的资本了。
为什么?因为我们已经找到目标人物了。这些目标人物需要我的支持和我的产品。进一步,他们需要我的产品,也需要商业支持。一开始,会可能项目的维护升级跟不上,可有了商业支持就会不一样的。付钱了,才会享受更好的服务,才会有一整套的商业模式。对于你的将来来说,你的创业目标也就找到了。