15 年开源路,从大厂搬砖到创业挖坑

图谱后端选型:Memgraph vs Neo4j vs 嵌入式 SQLite,什么时候该切换? 本文通过脚本自动探测代码图谱规模,对比SQLite、Memgraph与Neo4j在不同节点量级下的性能表现。实测表明:10万节点内嵌入式SQLite凭借低延迟和轻量部署仍具竞争力;超15万节点后,Memgraph适合低延迟、高并发场景;而Neo4j仅在百万级图谱且需复杂查询时才具备优势。配套提供一键测试延迟与平滑迁移后端的Python工具链,实现按需选型与无缝切换。 阅读详情

上个月回蚂蚁做了一场有关开源的分享,让我讲讲离开公司自己做开源创业后的感想。

file

正好借着端午节的时间,也更完整地回顾一下自己职业生涯 15 年来和开源结缘的经历。

邂逅 Cappuccino

file

08 年参加工作后,第一个投入精力的开源项目是 Objective-J 和 Cappuccino 框架,因为我的第一份工作是 Mac 应用开发,使用的是 Objective-C + Cocoa 框架。Objective-J 和 Cappuccino 是 Web 版的 Objective-C,Cocoa。这个对于我这样一个不想再单独学习 JS, CSS 这些,但又想开发 Web 应用的人来说很有吸引力。尤其是项目背后的公司 280 North 还专门做了一个网页版 PPT 软件 280slides.com 来展示他们这套方案的能力。

file

280 North 这家公司的名字取自 280 公路,它是连接硅谷核心地带和旧金山的两条高速公路之一,另一条是 101。但因为 280 沿途风景优美,所以大家更喜欢走 280。

file

我空下来时间就在捣鼓 Cappuccino,那时同事还发起了 CocoaHeads 北京的社区,我也去给大家分享了一下 Cappuccino,这也是我至今唯一一次参加的线下社区分享。后来 280 North 还出了一个 Web 版的 Xcode,虽然要收费,我也立刻去充值了信仰。

file

即使放到今天来看,Cappuccino 的技术和设计品味都不过时,就连它商业化产品采用的名字也和 MongoDB 一样,都叫 Atlas。也后来没过多久 280 North 这家公司就被摩托罗拉以 2000 万美金收购了,而公司就只有 3 个人。

file

去瞄了眼 GitHub 上 Cappuccino 的仓库,居然最近还有活跃。

file

file

虽然项目算是黄了,我购买的 Web IDE 也打了水漂,但还是从项目本身学到了不少,也感受了一把大厂的钞能力。

集成 libcurl

file

工作中第一次深度接触的开源项目是 cURL,更具体的说是它的库 libcurl。因为当时要实现一个通过脚本去调用 Web 服务的能力,而因为我们的产品需要同时支持 Mac, Windows 以及 iOS,所以就需要找一个 C 语言系跨平台的库。调研了一圈,发现了 cURL 以及 libcurl,看着支持各种协议,就决定选它了。

在产品里集成 libcurl 是那时工作以来挑战最大的一个任务,因为是添加一个底层框架组件,然后这个任务据说是 CTO 接到了用户需求,临时加塞进来的,实在没人了,就交给我这个 Junior 做。我还好对 Cocoa 框架熟悉,于是就照着它里面的 NSURL,NSConnection 设计了一版。记得印象很深的是 deadline 最后一晚,还在公司搞交叉编译,弄到半夜才搞定,没人 review,只好先提交完代码,结果开车回去,闯了个小路上的红灯,被埋伏在那里的警察逮个正着,吃了张巨额罚单。第二天到公司,QA 组长群发邮件,说 test build 坏了,一看果然是我干的,交叉编译的环境还是漏了,再给大家回了封致歉的邮件。修好后,QA 刚准备开测又疯了,因为 curl 本身支持各种协议,集成了 libcurl,就天然支持了各种协议,那理论上 QA 就要把各种协议都测一下。

file

所以后来讨论了一下,就缩减到第一版只支持 FILE, HTTP 这两个协议。随着工作年限的深入,我才知道 curl 的影响力之大,几乎所有的技术文档都有它的身影。其实当时做完需求,我只是觉得这玩意真不错,居然能支持那么多协议,这也是我第一次在工作中用开源组件解决问题,算是尝到了开源的甜头。

维护 MySQL & PostgreSQL 分支

13 年去了 Google,做的是数据库云计算服务 Cloud SQL,一开始它提供的是基于 MySQL 的云服务。Cloud SQL 团队自己维护了一个 MySQL 分支,我后来成为了分支的主维护者,负责每次同步上游的新版本。到 Cloud SQL 要推出 PostgreSQL 服务时,我也负责整个研发,第一步先是把当时最新版的 PostgreSQL 在 Google 内部的 Blaze 系统进行编译,而这个过程中最折腾的是 PostgreSQL 的 PostGIS 插件,这个插件是 PostgreSQL 的杀手级组件,一定要有,但是这个插件本身又依赖另外几个处理 GIS 数据的开源项目,所以就又扯上了 Geo 部门。

之后 Google 的 MySQL & PostgreSQL 分支一直就由我在维护着,我们本身提供的是原生的 MySQL & PostgreSQL 服务,所以对于内核的改动不算太大。但这个职责让我和上游社区有了更多的接触,同时和 Google 内部的开源管理团队打了一些交道。

旁观开源

2018 年回国后入职蚂蚁,首先加入的是 OceanBase 的 DBA 团队。OceanBase 现在是开源的,在我加入前也曾开源过,不过我在团队的那段时间正好在闭源阶段。后来我还先后去了研发效能部和体验技术部,但我负责的那块正好也都没有采用或者维护开源项目。不过那段时间海外的几家头部开源公司都跑通了商业化,国内也有像 PingCAP 这样的开源标杆,大厂也越来越重视开源这块,蚂蚁也成立了开源技术委员会,我也代表所在部门参与其中。蚂蚁也是优秀开源项目云集的地方,突出的像前端的 Ant Design,数据库的 OceanBase。可惜在蚂蚁的时候,没有契机参与到开源项目中。而从旁观者的角度看,蚂蚁和 Google 很类似,作为各自地区开源领域的标杆公司,既是开源很大的受益者,也是开源很大的贡献者。不同的是,相比于 Google 有相对充足的开源支持资源,蚂蚁投身开源的同学业务压力更重,经常要用爱发电,殊为不易。

虽然在蚂蚁没有参与过开源项目,但是几个不同部门任职的经验帮我找到了创业的点子,而且我知道最好的路径就是通过开源。

创业做开源

在蚂蚁呆过 3 个团队,也做了 3 块业务:数据库工具平台,开发者工具平台,生产力协同平台。而现在做的开源项目 Bytebase 便是这 3 者的结合,一个围绕数据库开发活动,帮助开发者和 DBA 协同的开发者工具 - Bytebase。

file

也有人会和我讨论,从商业角度考虑,Bytebase 是否并不需要开源,对方的观点也有逻辑,业界也有 Snowflake, Datadog 这样的闭源成功案例。但我从一开始就相信,开源的 Bytebase 是更优的商业选择。或许正好是我接触的开源始终是和商业结合在一起的,第一段提到的 280 North 其实是 YC 早期投的一家公司,也是 YC 历史上第一个比较大的退出回报。贴上当年 YC 掌门人 Paul Graham 在 HN 上的回复:

file

10 年来到硅谷,看到一个叫 Mongo 的开源 NoSQL 数据库在四处布道,看着它连事务都不支持的样子,作为 ACID 原教旨主义派的我是嗤之以鼻。而时至今日,MongoDB 已经是商业上最成功的开源公司了。

file

MongoDB 的官网设计也是开源商业化公司的典范,字体颜色的搭配,既专业也不失亲切。

大厂和创业做开源的异同

在蚂蚁分享了 3 个点,「以终为始」,「大鱼大池」,「无与伦比」。

以终为始

圈内有一个认知是「技术」->「产品」->「商品」这三点不能正着连,而是要以终点「商品」开始往回连。这个对于像 Bytebase 这样的开源商业公司是没错的。但是对于有其他主营业务的大厂来说,则完全就不是这条线。因为即使拿全球最成功的开源商业公司 MongoDB 来说,它一年的营收可能只是蚂蚁这样的公司几周的利润。所以大厂做开源的「终」不是靠开源产品本身挣钱,还是回到赋能自身业务,赋能品牌上。

file

大鱼大池

要么做基础核心软件,要么做全球市场,最好是兼而有之。大厂有资源从一开始就投入基础软件的研发,并且直接面向全球市场。而创业公司资源有限的情况下,尽量能选其一,或者再退一步,有到达其一的实现路径。

无与伦比

开源没有疆界,基本是赢家通吃,一张 SSS 卡 > 一箱 SS 卡。开源有很多的品类可以做,Apache, CNCF 一个品类下也有不少的项目。

file

但基本每一个品类往往只有一家最多两家的机会。Kubernetes 让 Mesosphere 和 Docker Swarm 都消亡了,Prometheus 始终统治着监控的江山,一将功成万骨枯。大厂开源项目多,但却很难孵化出 SSS 级的项目。因为战略的错位,使得无法保证持续的投入,没有持续投入,就很难做出精品。反倒是团队从大厂出来单飞后更能做成,像离开 LinkedIn 后的 Kafka / Confluent,脱离 Uber 后的 Temporal。
无论是在大厂还是创业,投身开源的同学多少都带着点理想主义,去业务线做个纯粹的 CRUD boy/girl 往往晋升更快,拿钱更多。但大家做开源,是因为在帮公司创造商业价值的时候,也想帮自己实现自我价值。希望自己写的代码不只用于营销场景,去套路一个个的用户,也能间接地驱动一个太阳能设备,探索一片空间,灌溉一方水土。

file

最后

蝴蝶扇动翅膀,万里之外飓风。假如 15 年前的我没有通过 Cappuccino 接触到开源社区,很可能现在的我也不会以开源为业。若是当年 Cappuccino 背后的 North 280 没有被摩托罗拉高价收购,成为早期 YC 投资的标杆案例,或许也没有后面出自 YC 的 Sam Altman,以及现在 OpenAI 引发的新一轮技术革命。
而在这一轮的 AI 革命中,开源将扮演更加重要的角色。即使 OpenAI 逐渐不再 Open, AI 领域的开源项目依然欣欣向荣。前有 Auto-GPT,后有 GPT Engineer,各种开源模型每天还在竞相刷新纪录。之前顶尖开源项目的增长趋势在 AI 开源项目下完全不值一提。

file

很可能在自己来到下一个 15 年之前, 开源的 AI 项目们就会吞噬掉整个世界吧。


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

SpringBoot+Vue+MySQL 高校学科竞赛平台 完整可运行版(源码+文档) 本项目基于SpringBoot+Vue+MySQL构建高校学科竞赛管理平台,覆盖学生、教师、领队教师、管理员四大角色,实现竞赛发布、报名、刷题、评分、公示等全流程闭环管理。系统架构清晰,技术主流,配套完整源码、数据库脚本、万字论文、开题报告、答辩PPT及部署文档,支持一键运行,适用于毕业设计、课程设计及院系二次开发,真正实现“开箱即用”。 阅读详情

相关推荐

CLIP-Count代码配置以及踩坑记录

CLIP-Count代码配置以及踩坑记录

学术菜鸡 1011

Docker Compose:搭建本地多服务开发环境

从一个 Java API、PostgreSQL 和 Redis 开始,配置服务名、端口、环境变量、健康检查、数据卷和依赖关系。理解 Compose 文件如何被解析、项目如何隔离,以及哪些数据不能依赖“重建容器”保留,能够把个人开发环境整理成团队可复用的启动入口。

m0_62221377的博客 474

从DWS到设备树:MTK平台LK阶段GPIO初始化的隐秘路径与调试实战

本文深入探讨了MTK平台LK阶段GPIO初始化的完整流程,揭示了从DWS配置到设备树生成的隐秘转换路径。通过分析MT6768等平台的启动框架,提供了针对preloader到LK阶段GPIO初始化异常的实战调试方法与最佳实践,帮助开发者有效解决硬件与软件配置不匹配的常见问题。

h9j8k7l6m5n的博客 1003

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 425

正直摄影方式的精度估算式_利用BDS数据反演大气可降水量及其精度分析

可降水量(PWV)对中小尺度灾害性天气预报具有指示意义,是降雨强度预报的重要参数之一。自20世纪80、90年代起,国外已经对GPS探测大气可降水量进行了大量研究。国内最早由毛节泰引进并详细介绍了地基GPS反演大气可降水量的方法,近年来发展迅速并取得了一定的成果。随着中国北斗卫星导航系统(BDS)提供服务并不断地建设完善,其已经能够应用到气象学领域,可以获得大气可降水量。文献[11]利用...

weixin_39796752的博客 1246

Halcon实战:5分钟搞定灰度图转热力图(附完整代码)

本文提供了一份Halcon实战指南,详细讲解如何在5分钟内将灰度图转换为直观的热力图。通过核心代码演示了利用HSV颜色模型进行色彩映射的原理与步骤,包括图像归一化、通道构建与空间转换,并附赠了深度图可视化等进阶应用技巧,帮助工程师快速提升图像分析效果。

weixin_29240343的博客 283

【基于 WebSocket 的多用户网页五子棋】—— 数据管理模块

但行好事,莫问前程

qq_42996461的博客 241

常用的数据结构以及常用的算法

常用的数据结构以及常用的算法 常用数据结构 数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 数据结构往往同高效的检索算法和索引技术有关。 一、线性表 线性结构: 最常用、最简单的一种数据结构。 线性表: 典型的线性结构。基本特点是线性表中的 数据元素有序且有限。结构中: ① 存在一个唯一的被称为“第一个”的数据元素; ② 存在一个唯一的被称为“最后一个”的数据元素; ③ 除第一个元素外,每

qq_47605698的博客 1454

C++算法(七)

C++ stack算法题和一些客观题

2503_94479566的博客 378

ESP32-IDF开发之旅 基础篇⑨ ESP-IDF的FreeRTOS任务间通信和同步

本文介绍了FreeRTOS任务间通信中的队列机制,重点讲解了队列的创建、发送和接收数据的API使用方法。文章提供了详细的技术说明和示例代码,包括xQueueCreate、xQueueSend、xQueueReceive等核心函数的参数说明和返回值解释。通过一个2生产者+1消费者的实际案例,展示了如何在ESP-IDF环境下使用FreeRTOS队列实现任务间通信。示例中包含了数据发送失败处理和接收数据验证等实用技巧,为开发者提供了可参考的实现模式。

单片机菜鸟哥的博客 430

一桶令牌的时间账本:四类限流算法的边界推演与Guava RateLimiter源码精读

限流的难点不在背出算法名,而在算清每一笔账:按哪一秒计数、超额请求排队还是拒绝、空闲后能否突发、集群总量如何约束。本文在可复现的虚拟时间实验台上对比固定窗口、滑动窗口、漏桶与令牌桶,实测边界双倍突发与分桶滑动的真实上界,拆解Nginx limit_req的千分位记账与延迟机制,纠正Resilience4j常被误称漏桶的说法,并逐行精读Guava SmoothRateLimiter的预消费、懒惰补账与预热积分,复刻迷你限流器与其完成七万次零差异对账,最后给出集群配额、分层防护与参数确定的方法。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 86万+

OpenClaw 深度调查:把 AI 助手做成你自己的控制平面

对 openclaw/openclaw 的完整技术尽调:Gateway 架构、Agent 运行时、工具与沙箱、30 个消息通道、181 个插件、安全信任边界、工程代价与采用建议。17 章 / 10 张图,全部数字标注口径,数据截至 2026-10-31。

厚积薄发 257

【Mode】微带传输线阻抗

微带线,英文名称为 (Microstrip) 是一种常见的平面传输线,主要用于传输微波频率信号(通常在射频和微波电路重中使用)。

u011699626的博客 245

不用再为文本搜索单独维护一套系统!全文检索深度解析

为了给商品、客服工单或者企业知识库增加一个搜索框,企业往往需要在业务数据库之外,再部署一套Elasticsearch。数据库保存商品、订单和用户等真实业务数据,搜索引擎保存另一份文本索引;两套系统之间,还需要通过CDC、消息队列或者同步程序持续传输数据。一个看似简单的搜索需求,最后可能变成两套集群、两份数据和一条必须保持稳定的数据链路。由此产生的问题并不少:数据库已经完成更新,搜索结果却可能尚未同步;业务查询同时涉及文本、库存、权限和订单状态时,应用需要在两个系统之间来回组合结果;

TiDB 社区干货传送门 305

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

IDEA 简介:从零认识 IntelliJ IDEA

IDEA 全称,是由 JetBrains 公司开发的一款主流 Java 集成开发环境(IDE)。它集代码编辑、编译、调试、测试、版本控制、构建管理等功能于一体,被大量 Java 开发者视为日常开发的首选工具。所谓 IDE(Integrated Development Environment,集成开发环境),就是把写代码所需的各类工具整合到同一个界面中。相比只用文本编辑器加命令行编译,IDE 能显著减少重复操作,让开发者把精力集中在业务逻辑上。

ztI10的博客 173

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

TransactionInactiveError:await 之后事务已经不活跃了

TransactionInactiveError 出现于 IndexedDB 事务已结束(非 active 状态)时调用 put、get 等操作。常见于 await 后或 setTimeout 中执行请求,因任务已完成,事务已提交或进入 finished 状态。请求必须在创建事务的同一任务中挂起,否则无效。解决方法:在 onsuccess 回调内同步发起后续操作,或提前将所有请求挂入事务。避免在异步上下文中使用事务操作,确保请求在事务活跃期内完成。

qq_40822000的博客 154

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

云计算课程小组PPT汇报任务书

36人分为6组,每组6人;形式:生活案例调研 + 理论解读;汇报时长7‑9min;PPT建议10‑14页。

Michelle8023的博客 196

市场调查与统计分析专业大学期间考证怎么安排?

市场调查与统计分析专业的考证规划,适合从一份完整的调查报告倒推:能不能设计问卷、判断样本是否合理、清洗数据,再把分析结果转化为业务建议?围绕这条能力链安排证书,比单纯按“热门程度”报名更有针对性。结合2026年的学习安排,并为2027年的实习、升学和求职预留时间,大学期间可以重点考虑六类证书:全国计算机等级考试证书、大学英语四级或六级成绩报告单、CDA数据分析师、初级统计专业技术资格证书、微软办公软件国际认证中的Excel相关证书,以及软考数据库系统工程师资格证书。

cc572502653的博客 166

软件项目交付时,源代码之外还应该交付哪些技术资料?

软件项目交付时,除可运行程序外,还应核对源代码、数据库结构、接口文档、部署运维、测试验收和账号资产。本文从实际交付环节拆解完整资料清单,并说明合同如何约定交付范围、知识产权与维护边界。

chengduyoushu的博客 298

大表 ALTER TABLE 怎么做?NineData OnlineDDL 配置与执行实践

介绍NineData OnlineDDL大表变更实践,涵盖执行策略、切表控制、拷贝批次与可视化进度追踪。

dbasenewbie的博客 292

MySQL报Too many open files?句柄耗尽的排查与参数配置

文章讲清 max_connections 与 open_files_limit 两个额度、句柄被谁占走、分区表为什么最容易踩,给出从 error log 到 /proc/pid/limits 的定位顺序与句柄预算算法。

「一个在数据库赛道上边学边分享的学妹」——聚焦国产数据库/信创方向、分享学习笔记、踩坑经验和行业观察。 322

Agent 安全实战:间接提示注入的四个攻击面与防御体系

当 Agent 从 "生成内容" 走向 "执行动作",安全边界就从内容合规变成了权限越界。本文拆解间接提示注入在网页抓取、工具返回值、MCP 连接器、长期记忆四个位置的真实攻击路径,对照 Claude、GPT、Gemini 在工具调用权限模型上的设计差异,给出可直接落地的五层防御体系。

阡陌数智,专注大模型网关与 LLM 工程落地 269

Redis 入门详解:核心特性、重要文件与全局命令实战

本文系统介绍了Redis的核心特性、重要文件及全局命令。Redis凭借内存存储、C语言实现和单线程设计,具备极高的读写性能;支持持久化(RDB/AOF)、主从复制与集群架构,适用于缓存、排行榜、计数器等场景,但不适合存储海量冷数据。文中还解析了常见面试题,如为何快速、单线程原理、持久化机制、KEYS *禁用原因及过期键处理策略,强调其在高并发场景下的优势与局限。

2303_77004089的博客 204

【FDE前沿部署工程师实战教程】第62章:Enterprise AI Developer Platform——企业级 AI 开发者平台与低代码 AI 应用工厂

企业从AI能力平台迈向AI应用生产平台,需构建统一的企业级AI开发者平台,将模型、RAG、Agent、Workflow等能力封装为可视化、可复用的开发工具。通过PromptIDE、AgentBuilder、WorkflowBuilder等模块,实现低代码与专业代码协同,降低开发门槛。平台覆盖应用全生命周期管理,集成测试评估、安全治理与CI/CD发布体系,推动AI应用规模化、标准化交付。最终形成“需求→设计→开发→测试→发布→运营”的企业AI应用工厂模式,助力制造等行业的智能化转型。

IT古董 312

5个陷阱和解决方案:MongoDB源码中自动化测试平台的数

在现代软件工程实践中,自动化测试平台扮演着至关重要的角色,它确保了系统的稳定性和迭代的可靠性。然而,随着业务数据量的快速增长以及并发写入需求的不断上升,基于MongoDB构建的自动化测试平台常常面临性能瓶颈和数据一致性问题。本文将围绕MongoDB源码中一个关键模块——,通过一行一行代码的解读,揭示其设计原理、性能调优点及常见陷阱,适合希望深入理解数据库实现机制的高级工程师。

wuchangjian的专栏 150

PostgreSQL 全文搜索与推荐系统中的高并发处理方案

引言在构建一个需要支持全文搜索与推荐系统的应用时,PostgreSQL 的性能表现和稳定性至关重要。面对高并发请求、数据一致性要求以及系统可用性挑战,许多开发者往往忽略了 PostgreSQL 所提供的一系列高级特性。本文将结合生产环境经验,从高可用、幂等性、限流降级等角度出发,探讨如何在 PostgreSQL 中高效实现全文搜索与推荐系统,并分享 5 个实用技巧与方案。

qq_41106321的博客 152
上一篇: Bytebase 2.3.0 - Snowflake SQL 审核,Oracle 数据脱敏和数据导出中心
下一篇: Bytebase VS Yearning
Bytebase
博客等级 码龄5年 1348粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值