为什么商业基础软件需要开源

Bytebase 本身是一家商业软件公司,而作为最核心资产的代码从 Day 0 却是开源的。同时我们还是 star-history.com 的运营者,大家在各种开源渠道会看到它生成的图:

一直以来,常会被别人问起的一个问题,就是为什么 Bytebase 要开源。结合这 2 年多的实战经验,一次性把能想到的写下来。

先圈定一下范围,就是标题中的 2 个定语:

  • 基础软件。基础软件的特质就是基本没有行业属性,各行各业都能用,底层的如操作系统,数据库,往上走一点的如开发框架,消息队列,再往上层一点的开发者工具都属于基础软件的范畴。
  • 商业。商业就是以盈利为目的的。与之相对应的则是非营利性,依靠赞助和爱好者用爱发电。

开源的好处

1. 增加渠道曝光度

GitHub 作为全球最大的程序员社交平台,成为了现在基础软件最大和最优质的分发渠道。从 Bytebase 自己官网的流量统计看,从 GitHub 引来的流量,跳转率和驻留时长指标都远远优于其他渠道。而 Bytebase 目前的付费客户中,也有超过 7 成的线索是通过 GitHub 和相关开源渠道过来的。

2. 增加客户安全感

因为是基础软件,处于底层,所以通常都会支撑到客户的核心系统。商业化公司对于软件是要收费的,动辄每年几万到几十万不等。客户花不少钱采购支持他们核心业务的软件,肯定是要挑选更放心的产品。开源软件的代码是全公开的,整个的研发过程也被 GitHub 记录的一清二楚。从原材料到最终成品的整个制作过程都是完全透明的。开源厂商不敢堂而皇之地植入恶意代码,另外如果厂商本身跑路了,社区或者客户本身至少还有继续维护下去的途径。

3. 构建生态壁垒

同类软件,开源的只要能达到闭源水平的 50% 甚至更低,就有资格挑战了。移动时代的 Android 之于 iOS,到现在的各种开源大模型之于 OpenAI。而要用一款开源产品去替代另一款占据市场多年的开源产品,难度可就高多了。像 web 服务器,Nginx 和 Apache 同为开源产品,Apache 发布于 1995 年,Nginx 发布于 2004 年,Nginx 的架构领先 Apache 一代,但即使过了那么多年,从市场占有率看,Nginx 也只领先了几个点。

前不久 Redpoint 发布的 InfraRed 100 榜单里,新兴者挑战在位者的模式有:

  • 用开源挑战闭源,比如 Supabase 挑战 Firebase,ClickHouse 挑战 Snowflake,MINIO 挑战 S3。
  • 用开源挑战开源,比如 Deno 挑战 Node。
  • 用闭源挑战闭源,比如 Linear 挑战 Jira。

最常见的是用开源挑战闭源,而唯独没有的是用闭源挑战开源的模式。

4. 让用户自助

代码就是最好的文档,一些错误定位,文档要是缺失,根据错误提示搜索代码仓库,就能自己定位问题。

打消开源的顾虑

1. 商业版被破解

他人可以不遵守开源软件的商业协议,肆意篡改代码,在没有购买商业证书的情况下使用商业版。盗版的问题也并不是开源软件独有的,像微软,Adobe,Oracle 这样先睁一只眼闭一只眼,等到时机成熟了,再让律师出马。使用破解版的风险始终在使用者这边,在基础软件这块,风险更加会被放大,没有售后 SLA 支持,出现问题无法解决,遭受的损失往往要大的多。

2. 泄露核心商业机密

代码是公司的核心资产是没有错,但是这个代码本身包含了多少独特的商业机密,需要打个大大的问号。基础软件主要是各种 API,算法模块的组装,业务软件里才会藏着各种独门策略。就像提供搜索能力的基础软件并非什么机密,机密的是具体的搜索排序规则。

3. 开源代码的安全性

代码开源后,别人就可以研究代码,找漏洞,进行攻击。但正因为代码开源,也更容易让别人帮忙找到漏洞,进行修复。既然连 OpenSSL 都是开源的,其他项目也没什么好担心的。

4. 代码写得太烂,拿不出手

写好的代码不是为了取悦他人,而是为了让软件变得可扩展,可维护。客户也不会为了好的代码买单,而是为能解决的问题买单。

剩下的一些摇摆 ⚖️

1. 外部贡献者的参与究竟是好是坏

Bytebase 历史上也有同学贡献过比较大的功能点,比如集成 GitHub,集成 OceanBase,集成达梦。但从总的代码量来说,Bytebase 外部贡献者的代码量大概只占 1%。当然也有不少开源项目培养出了积极的外部贡献者,但商业驱动的开源项目和靠着兴趣和解决个人问题驱动的个体贡献者,两者的目标还是不同的。从纯时间投入来说,指导,审核,协调外部贡献者未必比自己团队操刀来得更高效。

2. 维护成本是增加还是减少

因为代码都开源了,也就少了需要把代码保密的需要。其实国内采购软件的客户,往往也都需要软件的源代码。代码开源,也就少了这个麻烦。但另一方面,因为代码完全开源,一些密钥配置就更加不能直接放在代码里了,这增加了代码的复杂度。

写在最后

最近国外开源圈也有一次交锋,MongoDB 开发者关系副总裁 Matt Asay「The open source licensing war is over」vs RedMonk 创始人 Stephen O'Grady「Why Open Source Matters」。双方都是开源圈的资深人士,Matt 在 AWS 和 MongoDB 间反复横跳,至于 Stephen,更多人知道的是他这本书的封面。

首先双方都认可开源的价值,分歧点在谁有权力分配价值上。国外这两年争议的焦点都是围绕开源的定义以及开源协议,他们是已经在开源的价值上形成了共识,剩下就在掰扯怎么分配开源的蛋糕。

而在国内,对于基础软件是否开源尚未达成共识。当然也因为这个原因,Bytebase 作为一个开源项目还能享受到不少红利,而像本篇这样宣扬开源的文字也还显得有所价值。

希望 2 年后回看这篇文章,那剩下的摇摆也已经找到了答案,至于其它的,就让它们全都变成废话吧。


💡 你可以访问官网,免费注册云账号,立即体验 Bytebase。

相关推荐
Hello.Reader4 小时前
Redis 延迟监控深度指南
数据库·redis·缓存
ybq195133454314 小时前
Redis-主从复制-分布式系统
java·数据库·redis
好奇的菜鸟7 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
tan180°7 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
满昕欢喜7 小时前
SQL Server从入门到项目实践(超值版)读书笔记 20
数据库·sql·sqlserver
AI生存日记7 小时前
百度文心大模型 4.5 系列全面开源 英特尔同步支持端侧部署
人工智能·百度·开源·open ai大模型
wuk9987 小时前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
步、步、为营8 小时前
.net开源库SignalR
开源·.net
Hello.Reader8 小时前
Redis 延迟排查与优化全攻略
数据库·redis·缓存
ai小鬼头9 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github