在打造一家蓬勃发展的企业过程中,软件公司要做出诸多决策。是否对技术进行开源,便是众多需要权衡的问题之一。这可是个重大决定,围绕开源的许可问题在科技圈备受关注。
部分原因在于,人们对开源各执己见。一旦大公司决定限制其软件许可,即便有充分理由,也可能遭遇诸多反对(就像 HashiCorp 和 Elastic 近年来所经历的那样)。另一方面,优秀的开源技术能迅速获得开源软件(OSS)社区的大力支持。
企业要决定走哪条路并不容易。我所在的公司决定通过 Linux 基金会旗下的云原生计算基金会(CNCF),将我们的云原生安全扫描器 Kubescape 开源,我们对这个决定感到非常满意。事实上,Kubescape 最近已晋升为孵化项目,全球数千家企业都在使用。总体而言,我们认为这是件有益的事,但在迈出这一步之前,我们确实仔细权衡了利弊。这绝非仓促之举,所以我想根据我们的经验分享一些建议。
消除开源采用的障碍
DevOps 团队有诸多理由对在其集群和环境中引入新代码持谨慎态度:新代码可能漏洞百出,破坏安全设置,或者扰乱现有配置。除非你提供的是完全基于软件即服务(SaaS)的解决方案,无需基于代理、在集群内或本地安装,否则你得消除 DevOps 团队的这些顾虑。
开源能在这方面提供帮助。它彰显了透明度和责任感,让团队有机会检查代码,同时通过贡献新代码或提出问题,使他们成为项目的一部分,并能对项目发展路线图产生影响。相比于要求他们信任一个封闭代码的方案,团队更愿意相信一个允许他们检查核心代码的解决方案。
如果你将代码捐赠给一个信誉良好、拥有活跃社区且极具吸引力的基金会,这种信任会进一步增强。一个知名基金会有助于验证产品质量,证明你已实施了正确的审核流程、节奏和管理机制。要是你的开源产品已获得广泛关注、拥有庞大的安装基数且在社区中颇受欢迎,那就更好了。
加速持续改进
持续改进可不只是一句口号。你肯定希望尽快发现并修复漏洞,优化产品,而实现这一目标的最佳途径就是增加产品的使用量。开源意味着你的技术会在现实世界中接受比私下销售多得多的用户的检验。
我们发现,在我们只有几十家企业客户的时候,我们的平台已部署在超过 20 万个集群中。这使我们能够收集大量用户的反馈、功能需求和验证信息,从而更快地学习并推出改进措施。
与此同时,产品的采用率也在上升,部分原因是我们的覆盖面更广了,还有部分原因是我们的产品改进速度非常快。你可以将开源社区当作测试环境,融入反馈并确保版本稳定后,再将改进应用到企业版中,反之亦然。同时采用这两种方式是个不错的选择。
开源意味着控制力减弱
这些是开源的主要优势,但开源也有缺点,务必牢记于心。主要的弊端在于,当你的产品开源后,你无法控制人们对它的使用方式。如果你决定通过社区论坛开源,情况更是如此,因为这相当于你把商标交给了一个中立的基金会。
尽管开源社区普遍互信,但仍有人会只使用你的开源代码,而避开你的付费版本和功能。(当然,你可以也应该把这些免费用户视为销售渠道的一部分,努力让他们升级到企业版,以获取更多功能和优势 。)
甚至还有人会利用你的心血打造商业产品,从你的创新成果以及你构建和管理的社区成果中获利。你得接受这个现实,因为你无法阻止这种情况发生。
开源要契合用户群体
决定是否进行开源项目的一个主要因素是你的用户群体。你需要了解并理解他们的关注点和动机,这样才能准确预测他们对开源产品的反应。如果你的受众技术水平较高,比如安全工程师、DevOps 团队和开发者,他们更有可能支持开源。
我们称之为 “开源社区” 是有原因的。开源不仅仅是一个许可决策:它是一套共同的信念,参与者远不止客户。它更像是一种信仰,而不只是购买选择。如果你的用户群体和你一样热爱开源理念,那么走开源这条路成功的可能性会大很多。
开源软件需要明确的盈利模式
对于任何企业而言,建立稳定的盈利途径都至关重要,对于开源公司来说更是如此。你必须清楚如何盈利,因为开源可能会让你面临现金流不足的问题。
例如,你可以选择在一年内完全开源所有技术,以推动产品渗透并收集反馈,然后再引入盈利方式。你也可以采用我们公司选择的 “开放核心” 模式,即开源核心代码,然后在此基础上销售额外的服务和功能。
许多公司决定同时推出开源版本和企业版本。这可行,但你需要在开源版本和付费客户专享版本所包含的功能及支持之间找到恰当的平衡。另一种选择是进行设置,使开源代码只能与企业版结合使用。这样开源版本除了展示透明度外没有其他价值。不过要注意,这可能与和基金会合作产生冲突。
一旦开源,就难以回头…… 某种程度上是这样
开源是个重大决定,而且它基本是条单行道。你可以随时从闭源转向开源,或者从限制较多的许可转向更开放的许可,这会赢得科技社区的一致称赞。
但要逆向转变就困难得多。你已分享的所有代码和信息将永远对公众开放,他们可以随时以任何方式使用。正如上文提到的,开源爱好者对任何收回开源产品的人都很严苛,他们不太可能再尊重你的代码。HashiCorp 就深刻体会到了这一点,在他们将 Terraform 的许可从 NPL 改为 BSL 后,粉丝们就对其进行了分叉。
话虽如此,在条件合适的情况下,开源会带来很棒的效果。如果你权衡了所有因素,发现用户群体与技术产品相契合,并且找到了认可你使命的知名基金会,那么你就能像我们一样,从开源中获得诸多优势。