这一切就像听起来一样简单:将您的代码上传到GitHub或开始或加入Apache软件基金会(ASF)上的项目,建立志同道合的社区,开始一个公司,投入一些钱,IPO。或者可能不是。但有一件事是肯定的:经营一家开源公司会带来独特的挑战和机遇。虽然关于开源和社区建设的文章很多,但我想分享我作为一家风险投资支持的开源公司的联合创始人兼首席技术官学到的三个重要经验教训。一些背景知识:Lucidworks从事搜索和信息访问业务。我们的目标很简单,就是提高信息的可访问性。我们使用搜索、机器学习、自然语言处理和其他一些新技术来实现我们的目标。我们在实施过程中大量使用开源技术,在很多大型项目中我们既是贡献者又是用户。我们主要是基于ApacheLucene和Solr,当然还有ApacheSpark、Hadoop和Tika等其他项目。我有两种商业模式:基于开源项目(开源内核)创建商业产品,提高开发和部署效率。为部署Solr的组织提供企业级支持和SLA。这两种产品都以年度订阅的形式出售。***教训:什么是贡献,什么是营销?我们组织Lucidworks是为了建立一个现有的、完善的ASF社区。不像一些开源但不开放的项目(例如由仁慈的“独裁者”运行),我们必须与比我们更感兴趣的人一起工作。对于不习惯这种模式的人来说,这在开发、营销和销售方面可能是一个挑战。例如,社区可能会开发出不同的实现,作为一个分支可能会超越你已经开发的东西,甚至可能会贡献你已经开发了很长时间但无法添加到你的商业产品中的功能。另外,您甚至可能没有真正的权利说您是商业人士。解决方案的关键是全心全意地拥抱这种混乱:尽早将您的意图传达给开源贡献者,尝试通过线上和线下活动将社区聚集在一起,并与其他人密切合作以确保您的需求被包括在内。最重要的是,这使我们能够在几次尝试中做出正确的选择——寻找可以让您实现更高级别功能的贡献,而不是在您的产品中进行离线实现。比如我们可以贡献核心分析功能,让我们的产品有很强的推荐机制。我可能会问,“为什么要开源所有的源代码,只做技术支持?”,好问题,我想每个开源公司都很难回答这个问题,除非他们是数据公司(比如linkedIn,Facebook),一家咨询公司,或者一个可以独立生存并且对每个人都很重要的基础服务(比如操作系统)。很多公司初期都是靠开源获取资源,然后加入付费功能(被指卖),但也有一些公司走商业化再开源的路子。在公司内部,销售人员总是希望添加一些东西来完成它,但工程师倾向于完全开源,因为他们知道他们可以将他们的工作与之联系起来。在一个***的世界里,你可以两种方式都试一试,如果一个实验失败了就控制,但现在,我们决定采用多层次的方式:我们有一个工程师团队,他们只负责开源社区的产品开发开源项目。我们将与第三方的集成商业化,例如顶级UI。我们提供开箱即用的数据分析技术实现。尤其是第三条被证明是成功的,因为大部分公司没有技术团队可以做数据分析看板做推荐引擎,搜索分析等。第三条方式,我们可以专注于如何完成和扩展我们的open源成就,并确保我们努力建立的社区不被破坏。它还有助于澄清什么是有的,什么是没有的。第2课:支持或咨询,或客户成功Lucidworks早期,我们的主打产品是知识,在咨询时间采用“一包到底”的保险体系进行开源。我们当然有商业产品,但主要的盈利点是能够接触到底层代码知识的聪明人。我们卖了很多咨询和订阅支持,这对于通过我们的技术部署获取丰富的知识非常有好处,但是对于团队的长期发展是不利的,因为一旦解决了问题,我们就失去了价值。即使在长达一年的时间里,客户也认识到他们不需要中断修复保险,因为Solr只是存在了一段时间。那段时间发生了一件有趣的事情,虽然我们意识到Solr并没有崩溃(在很多方面,它毕竟只是软件),但我们的客户不断询问如何处理更难的事情。例如,当他们运行基本搜索时,他们想知道如何整合自然处理语言或其他客户反馈以提高相关性。这些问题往往需要一到两个小时的时间在电话中进行引导,并将用户最关心的大量信息反馈给产品管理团队。基于这个知识库,我们成功地解决了我们的支持模型,我们称之为客户成功模型。过去,我们倾向于将我们收到的任何疑难问题转化为咨询服务。现在,我们将这些问题视为正常的技术支持,并不断与用户交谈以确保他们得到解决。(但任何超过一天的服务仍可能变成咨询)类似的问题或建议会更多地反馈到我们的产品中,以使其变得更好。此外,我们对用户需要的支持功能变得更加可预测,我们不再需要等待电话催促我们。虽然很明显,但我已经看到很多建立在支持服务层上的开源公司通过转移或“自我服务”来解决这类问题,结果的差异对每个人来说都是显而易见的。更好的结果应该是你认真地专注于满足客户的需求,这样你的产品才能变得更好。因为只要你真正关心客户关心的事情,每个人都可以做得很好,包括你的销售团队。第3课:管理人员的部分与许多其他公司一样,您的成败不能仅取决于产品,还取决于您周围的人。在开源世界中招聘人员的一个关键问题是找到能够平衡公司的开源性质与您支付薪水的业务方面的人。假设您是完全开源的,那么很容易获得两个世界的最佳平衡(假设人们实际上会为单独的支持付费)。如果您免费付费,这可能会更具挑战性,因为有时来自封闭源代码世界的人不太了解事物的开源方面(由于开源无处不在,这在今天很少见)和那些开放源代码的人源工作,可能不会理解或不想做任何非开源的事情。许多你想在社区中聘用的工程师往往在不同的地方。这对做开源的人来说是挑战也是机会——你需要建立一个能够很好支持分布式远程办公环境的公司。我们遇到了一个有趣的挑战,尤其是前两年。它来自过去在办公室工作的工程师,但他们并没有因为这种“眼不见心不烦”的原因而被在家工作的员工所困扰。因为我们大部分员工过去都是分散的,也习惯于异步的、分布式的沟通方式。他们有很多根深蒂固的开源开发传统,不习惯于分组办公和各种开发工作流程。当然,沟通和文档是关键,但您可能直到意识到某个重要的连接中断事件后才意识到正在发生的重要事件。幸运的是,有许多很棒的工具可用于减少协作时的任何潜在摩擦,但一定要为面对面的聚会做好预算,如果团队规模较小,我们每年都会举行几次聚会。聚会也可以更频繁。***,你要意识到并不是每个人都有远程工作的能力。例如,需要高度协作或视觉导向的工作最好面对面完成。对我们来说,服务器端团队主要远程工作,而我们的绝大多数产品管理和UI团队集中工作。后者可以从快速的“嘿,来看看”交流中受益匪浅,因为每个人都在同一个房间里工作,而前者通常受益于有很长一段时间不受打扰。我们还在那里吗就像任何对它不够了解就开始创业的人一样,在寻找可以复制和扩展的商业模式时,总会有多次起伏。对我们来说,吸取的教训是,艰巨而艰巨的挑战不仅在于打造畅销产品,还在于如何聘请优秀人才以及如何建立广泛的用户社区。除此之外,如果说我在过去10年为开源社区做出的贡献中学到了一件事,那就是:你永远不知道下一个伟大的想法会从何而来,所以拥抱它并牢牢抓住它的控制权,就像一匹马。
