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

news2025/2/14 2:52:05

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

file

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

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

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

开源的好处

1. 增加渠道曝光度

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

file

2. 增加客户安全感

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

3. 构建生态壁垒

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

file

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

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

file

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

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,更多人知道的是他这本书的封面。

file

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

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

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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/863817.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件研发的道德情操

作者:许晓斌(晓斌) 两百多年前苏格兰出了一位大哲学家,他的名字叫做亚当斯密。今天人们对他的了解更多是在经济学家这个身份,都认为是他发现了“看不见的手”这一神奇的经济规律,以及他那本著名的《国富论》。然而除了这本书之外&…

一文详解自然语言处理两大任务与代码实战:NLU与NLG

目录 1. 自然语言处理定义NLP的定义和重要性NLP的主要挑战 2. 基础模型语言模型统计语言模型n-gram模型 连续词袋模型 3. 基础概念词向量Word2VecSkip-Gram GloVeFastText1. 子词表示2. 词向量训练3. 文本分类4. 预训练模型 4. 文本预处理分词去除停用词词干提取和词形还原文本…

R语言的物种气候生态位动态量化与分布特征模拟实践技术

在全球气候快速变化的背景下,理解并预测生物种群如何应对气候变化,特别是它们的地理分布如何变化,已经变得至关重要。利用R语言进行物种气候生态位动态量化与分布特征模拟,不仅可以量化描述物种对环境的需求和适应性,预…

2021年09月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题:数字判断 输入一个字符,如何输入的字符是数字,输出yes,否则输出no 输入 一个字符 输出 如何输入的字符是数字,输出yes,否则输出no 样例1输入 样例1输入 5 样例1输出 yes 样例2输入 A 样例2输出 no 下…

工程优化问题之三杆桁架设计研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【UniApp开发小程序】小程序首页(展示商品、商品搜索、商品分类搜索)【后端基于若依管理系统开发】

文章目录 界面效果界面实现工具js页面首页让文字只显示两行路由跳转传递对象将商品分为两列显示使用中划线划掉原价 后端商品controllerservicemappersql 界面效果 【说明】 界面中商品的图片来源于闲鱼,若侵权请联系删除关于商品分类页面的实现,请在我…

JVM——Java 内存区域详解

文章目录 写在前面 (常见面试题)基本问题拓展问题 一 概述二 运行时数据区域2.1 程序计数器2.2 Java 虚拟机栈2.3 本地方法栈2.4 堆2.5 方法区2.5.1 方法区和永久代的关系2.5.2 常用参数2.5.3 为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢? 2.6 运行时常量池2.7 直…

DP(背包模型)

求方案数初始化总结 二维 1.体积至多是 j f[0][i]1 (0<i<m) 其余为 0 &#xff08;因为体积是至多是j 它可以小于j f[0][0]1 是肯定的 f[0][i] 这当中 i也可以包括0 一定要get到至多 即便不选物品 f[0][i]也是 1 它可以包含f[0][0]) 2.体积恰好是 j f[0][0]1 其余都…

MATLAB | 绘图复刻(十一) | 截断的含散点及误差棒的分组柱状图

hey大家好久不见&#xff0c;本期带来一篇绘图复刻&#xff0c;居然已经出到第11篇了&#xff0c;不知道有朝一日有没有机会破百&#xff0c;本期绘制的是《PNAS》期刊中pnas.2200057120文章的figure03&#xff0c;文章题目为Intranasal delivery of full-length anti-Nogo-A a…

SaaS BI数据可视化工具:免下载安装,登录即分析

之前有人问我&#xff0c;说&#xff1a;“BI数据可视化工具总是要下载安装&#xff0c;过程繁琐&#xff0c;没点IT基础的人也不太搞得定&#xff0c;有没有不用下载安装就能用的数据可视化工具&#xff1f;”答案当然是有的&#xff0c;那就是SaaS BI数据可视化工具。 SaaS …

并发——AQS原理以及AQS同步组件总结

文章目录 1 AQS 简单介绍2 AQS 原理2.1 AQS 原理概览2.2 AQS 对资源的共享方式2.3 AQS 底层使用了模板方法模式 3 Semaphore(信号量)-允许多个线程同时访问4 CountDownLatch &#xff08;倒计时器&#xff09;4.1 CountDownLatch 的两种典型用法4.2 CountDownLatch 的使用示例4…

生信豆芽菜-箱线图使用说明

网站&#xff1a;http://www.sxdyc.com/visualsBoxplot 一、使用方法 1.打开网址&#xff08;http://www.sxdyc.com/singleCollectionTool?href-diff&#xff09;&#xff0c;选择“箱线图”。 准备数据&#xff1a; 第一个文件为特征的表达文件&#xff0c;第一列为样本&am…

机器人CPP编程基础-05完结The End

非常不可思议……之前四篇博文竟然有超过100的阅读量…… 此文此部分终结&#xff0c;没有继续写下去的必要了。 插入一个分享&#xff1a; 编程基础不重要了&#xff0c;只要明确需求&#xff0c;借助AI工具就能完成一个项目。 当然也不是一次成功&#xff0c;工具使用也需要…

PP模块生产过程检验(工序检验)

质量检验是在一些情形下对物料进行检查的一个操作,用于检验物料是否符合标准。 1.常见检验类型: (1)进货检验(Incoming material Quality Check,IQC) (2) 生产过程检验(In Process Quality Check,IQPC) (3) 最终检验/产品检验(Final Quality Check,FQC) (4)出…

【产品应用】一体化步进伺服电机在自动液体处理工作站中的应用

随着工业自动化的快速发展&#xff0c;自动液体处理工作站在医药、食品、化工等领域中发挥着越来越重要的作用。一体化步进伺服电机作为一种高集成的驱动元件&#xff0c;具有高精度、高速度和高稳定性的特点&#xff0c;被广泛应用于自动液体处理工作站中。本文将详细介绍一体…

同源建模-build loop

对于有残基缺失的晶体结构往往采用同源建模的方式补全&#xff0c;但常规的同源建模方法往往造成非缺失区域残基的挪动&#xff0c;有时我们并不想出现这种状况&#xff0c;尤其是涉及到多个截短体拼合的情况&#xff0c;这时就需要用到约束性同源建模的方法&#xff0c;只对缺…

对一线大厂游戏测试员的访谈实录,带你了解游戏测试

今天采访了一个在游戏行业做测试的同学&#xff0c;他所在的游戏公司是做大型多人在线角色扮演类的游戏&#xff0c;类似传奇游戏。他所在的公司目前有1200多人&#xff0c;是上市公司&#xff0c;目前游戏产品在国内海外都有市场。 因为我是一个对游戏无感的人&#xff0c;所…

户外组网摆脱布线困扰,工业5G网关实现无人值守、远程实时监控

在物联网通信技术发达的2023&#xff0c;网络覆盖对所及之处的全面覆盖&#xff0c;科技发展的促使下很多高危户外场景也在思考如何利用无线技术提高人员安全及现场无人化管理。 煤矿是我们国家不可缺少的重要能源&#xff0c;其开采过程的危险系数也是众所皆知的&#xff0c;…

CANdelaStudio 使用介绍

CANdela Studio使用_哔哩哔哩_bilibili 一.CANdelaStudio使用tips 1.开始菜单打开软件&#xff0c;避免软件字体是德文的 2.打开软件之后&#xff0c;用“Open”打开.cdd或者.cddt文件&#xff0c;不要双击文件打开&#xff0c;这样容易报错 3.查看软件版本信息 4.只有Admin版…

CKA认证真题(3)-- 绝对干货!

目录 前言 15. sidecar边车容器 16. 升级集群 17.备份还原etcd 前言 17道真题难度等级 一级 rbac cpu 扩容 pod指定节点 pv pod日志 排障 查看可用节点 多容器pod 节点维护 二级 networkpolicy service ingress pvc 三级 sidecar 升级集群 备份还原etcd 本系列有三篇博客…