从表面上看起来,运营一家开源软件公司似乎很简单:把代码放到 GitHub 上,或者发起一个 Apache 软件基金会的项目,然后建立一个社区,把有相同想法的人聚拢来,接下来就是开公司,拉投资,最后可能上市,也可能不上市。一切看起来都水到渠成。而在 Grant Ingersoll 看来,运营一家开源软件公司意味着独有的机遇和挑战。Ingersoll 是 LucidWorks 的联合创始人兼 CTO,有丰富的创业经验,日前他在 opensource.com 上分享了他从自己的经历中学到的三个教训。
Lucidworks 公司的目标是利用搜索、机器学习、自然语言处理等技术,使信息访问变得更容易,他们的主要项目是围绕 Apache Lucene 和 Solr 来构建的。所以他们面临的第一个问题就是:哪些功能应该贡献给社区,哪些功能应该当作商业卖点?
开源社区通常不是由一个人控制的,基于开源社区创立的公司会面临各种冲突。有时候对于同一个功能,社区的实现思路和公司不一样;有时候公司规划了一个商业功能,结果社区提前做出来了;最糟糕的情况可能是,公司想要把某个产品商业化,结果却连它的品牌所有权都没有。对此,Grant 给出的建议是,必须坦然面对,利用沟通解决问题。当公司想为社区贡献某个功能的时候,及早地公布计划,以免别人做重复的工作;如果已经有人在做类似的功能,更要跟他们好好沟通,争取让他们把公司的诉求也考虑进去;此外,可以经常搞点社区聚会,把社区团结起来。
除了沟通,Grant 认为更重要的一点就是,必须贡献对内容。公司应该寻求贡献底层的、通用的组件,这些组件可以用来构建更高层的功能。而这些高层功能,很适合作为公司的商业卖点。Lucidworks 也是反复尝试才走对了路。他们给社区贡献了核心的分析功能,而他们产品中的推荐功能,就是基于此构建的。Grant 给出了 Lucidworks 处理此问题的三条原则:
- 保持专职的工程师团队,他们不做其他事情,只为开源社区贡献代码。而这些开源项目,则会成为公司商业产品的基石。
- 将中间件、第三方集成和 UI 作为商业化产品。
- 提供开箱即用的各种常用数据分析技术的实现。
这三条原则使得 Lucidworks 在给社区作出贡献的同时,不对社区产生不利的影响。
Grant 遇到的第二个棘手的问题是,如何定位开源软件公司的商业模式。在 Lucidworks 初创时期,主要产品就是“知识”。虽然他们也有过商业化产品,但是最核心的价值还是那些熟知开源代码的工程师的知识。用户在部署开源软件遇到问题时,就会向他们求助,他们就依靠提供咨询服务来赚钱。Lucidworks 逐渐意识到这不是长久之计,因为问题一旦解决,用户就不再需要他们。而且那时用户和他们签的支持合同也只有一年,因为 Solr 通常拿来就能用,所以用户也不大需要强有力的技术保障。
Lucidworks 还是慢慢地从用户身上得到了一些启发。他们发现虽然 Solr 开箱即用,但是用户会不断地来问一些越来越深入的问题,比如,基本的搜索功能可以工作后,用户就想知道如何把自然语言处理工具集成进去。用户经常会把他们最关注的一些问题反馈给 Lucidworks 的产品管理团队。据此,Lucidworks 逐渐把自己的模式演化为一种他们称之为“客户成功”的模式。这个模式最大的不同在于,以前工程师们坐在办公室里等电话响,做的都是一锤子买卖;而现在,对于提出问题的客户,他们会不断跟踪,帮助他们成功地部署、使用这些开源软件。另一方面收集这些用户的诉求,不断地反馈给产品团队,做出用户真正需要的、愿意为之付钱的功能。这样,用户的距离拉近了,产品也越来越出色。
Grantz 最后谈到的问题是人的问题。这有几个方面,首先要找到合适的人,这对于一个基于开源项目开发收费产品的公司来说,并不是一件很容易的事。公司招募的工程师既要熟悉开源软件的运作模式,也要认同基于此来开发收费软件的做法。通常,这是难以两全的,做惯了闭源软件的人,很可能搞不清楚开源社区的模式、流程、文化等,当然反之也一样,而且认同开源软件的人还有个问题,他们经常不愿意为收费软件贡献力量。第二个难题是,Lucidworks 从开源社区招募的工程师,通常都分布在各个地方,他们只能远程办公。开发开源软件的工程师习惯于松散的沟通方式,这种习惯跟一个商业公司的流程是格格不入的。Grantz 认为解决这个问题的办法就是多交流以及规范文档。他认为现在有不少出色的工具可以帮助不同地点的人协同工作,减少摩擦,应该尽可能利用这些工具。另外,公司应该留出预算,定期把这些分布在各地人聚拢来,拉近距离,促进交流。
当然,不是什么人都适合远程工作的。在 Lucidworks,服务器软件团队的很多人是远程的,而产品管理和 UI 团队通常是在办公室一起工作的。有时候这些员工需要对同伴说,“赶紧来看看这个设计”,只有大家在一间房间里工作才能办到。而开发服务器的工程师,他们则希望不被人打扰,潜心钻研。
一个开源软件创业公司在找到可复制、可规模化的商业模式之前,总是要经过各种起起伏伏,Lucidworks 在成长过程中,也无时无刻不在与上面几个问题做斗争,所以 Grantz 希望把他们学到的经验教训分享出来,帮助更多的公司战胜困难。如果要让 Grantz 用一句话来总结他十多年的开源软件创业生涯学到的经验,那就是:“你永远不知道下一个创意在哪里,所以敞开心扉,随时准备拥抱它。”
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。
评论