以下文章来源于CSDN ,作者朱佳顺、王伟冰
【CSDN编者按】时至今日,Apache bRPC 在 GitHub 上已经收获了 14,356 个 Star,并正式从 Apache 孵化器毕业成为顶级开源项目。但 bRPC 的成功并不是一蹴而就的,开源近 6 年,遭遇过 KPI 方式的失败;团队来自不同公司,都有各自的本职工作,导致一些社区功能没有办法通过团队及时开发;国内外讨论文化的不同、语言的障碍等等。
前言
从 baidu-rpc 到 Apache bRPC;
从轻量级的 RPC 库到全功能、高性能、云原生的 C++ RPC 框架;
从 2015 年第一行代码到现今的 20 万行代码;
从寥寥无几的关注到 GitHub 14,000+ 的 Star;
从无人问津的社区到 100+ 位贡献者;
从公司内部的 RPC 库到 20+ 的采用公司列表;
从寻找 Mentor 到顺利成为 Apache 顶级项目。
……
Apache bRPC 团队核心初创人员将讲述开源过程中从零到一的跌宕起伏,并以时间轴为线索为你呈现它开源之路背后的故事。读者通过本文可以收获对 bRPC 和 Apache 软件基金会的基本了解、bRPC 在顺利毕业前所遇到的困难和我们对此的思考和解决方案,以及开源的力量和参与开源过程中的收获。
项目介绍
Apache bRPC 是用 C++ 语言编写的工业级 RPC 框架,常用于搜索、存储、机器学习、广告、推荐等高性能系统。
Apache bRPC 的亮点主要包括:
- 支持多种开源通信协议,如 HTTP、gRPC、Thrift、Redis 等;
- 丰富的服务发现、负载均衡、组合访问支持;
- 高度可扩展设计,很容易添加自定义协议和策略;
- 极致的性能优化;
- 可视化的内置服务和调试工具。
下图展示了 bRPC 丰富的功能和无所不在的扩展性:
为什么要加入 Apache 软件基金会
Apache 软件基金会(ASF)旨在为全世界提供优质的开源软件,同时欢迎全世界的朋友加入 Apache 社区贡献力量,并在这个过程中不断成长、得到肯定、共建开源社区。无论是否从事软件开发工作,大家多少都知道它的存在及其提供的优质开源项目,可见其影响之大、之深远。
此外,参与 Apache 开源社区,并在自己的努力下成为 Apache Committer 和 PMC 成员,更是大多数软件开发工程师心之所向。
bRPC 在开源之初,就有进入 Apache 软件基金会的计划。其原因有以下几点:
- Apache 软件基金会独特的 Apache Way 和社区建设思想会让一个开源项目更规范、更有生命力;
- Apache 软件基金会的导师制度会给一个开源社区带来优秀的指导和帮助;
- Apache 软件基金会会为旗下的开源项目带来版权和商标上的法律保护;
- Apache 软件基金会在全世界范围内的影响不言而喻,若是能进入 Apache 软件基金会,则会扩大项目的影响力,使其进入世界范围的开源领域;
但同样,进入 Apache 开源基金会的门槛可并不简单,特别对于国内的项目来说,语言和地域的障碍无疑雪上加霜。
成功进入 Apache 孵化器
在 2017 年,我们把 bRPC 开源在 GitHub 上,定期会把百度内部的改动同步到 GitHub 上,此时 bRPC 主要改动的来源是百度内部。开源以后,几个核心开发者陆续离开百度,如何让 bRPC 可以长久可靠地维护下去,并留住项目核心人员,成为我们最需要考虑的首要问题。
决定之后,我们首先需要获得百度内部管理层的许可,签署捐献项目所需要的文档。其次,进入孵化,我们需要找到一位领路人和三位导师。当时负责百度开源整体推进的谭中意找到 bRPC 项目当时的负责总监,完成了 Apache Software Grant Agreement 文件的签署。其后谭老师又通过各种关系,为我们找到了领路人和导师。领路人是 Dave Fisher,Apache 软件基金会非常有名望的导师之一,三位导师分别是 Jean-Baptiste Onofré(我们简称他为 JB),Von(冯嘉)和 Kevin A. McGrail,后来 Kevin 因为太繁忙而中途退出,我们又找了 Apache 软件基金会中国地区的第一位女性成员——潘娟作为导师。他们给 bRPC 在建立社区和代码 License 规范上提供了不少的建议。我们也借鉴了不同开源项目的经验,在 2018 年成功发了第一个 Apache(WIP)版本。后来的发版过程也越来越顺利。
整个过程不在这里详细说明了,简单来说主要做了如下几件事情:
- 将所有文件的 License 改成 Apache 软件许可协议(ASL) ,并检查第三方代码是否和 Apache 兼容;
- 把所有的文档翻译成英文;
- 提交一份提案来申请进入 Apache 孵化器。
社区之火如何燎起
用户、贡献者、Committer 和 PMC 的逐渐增加和多样性的变化
进入了 Apache 孵化器以后,我们面临的问题是:怎么让社区活跃进而扩大?社区的活跃对于开源项目尤为重要,无论是用户、贡献者还是 Committer 的活跃都会给项目带来收益。活跃的社区会带来活跃的开发者,活跃的开发者又促成活跃的社区。
在初期我们很难找到合适的新人加入开发队伍。关键在于:开源项目不是公司项目,没有明确的 OKR/KPI 驱动,大家参与的动力主要是兴趣和技术驱动;C++ 是一门复杂的语言,入门门槛比较高;C++ 场景的多样性在慢慢变小,以致于不是所有开发者都知道 bRPC,也就没办法参与。
针对上面这些问题我们也采取了一些措施来尝试解决。
对于第二点,我们写了入门文档(https://brpc.apache.org/zh/do...\_started/),以及在 GitHub 上标注了 Good First Issue(对新人友好的 issues)方便开发者提交一些基本的代码和完成整个提交流程。我们还举行了若干个线下的活动。
2019 年开源年会上,bRPC Workshop 合影
截止到目前为止,bRPC 已经有 16 位 Committers,129 位贡献者(2023.01 数据)。
来自社区贡献的功能持续增加
开源 5 年(包含 4 年的 Apache 孵化过程)中团队遇到的困难以及成长
开源以来我们主要遇到下面几个问题。
(1)精力问题
由于大部分 Committers 都有自己的本职工作,参与开源工作需要平衡好本职工作和开源工作,作为社区的一员,可能会出现因为优先级的原因要离开 bRPC 的开发工作一段时间然后之后再回来继续参与开发,这在 bRPC 目前的社区下完全是可能的:工作会由社区其他同学完成。社区的存在让团队由 Single Point of Failure 变成了分布式的。参与开源会增加额外的工作量,这里开发者就要更加小心去平衡好这些额外的工作量。避免由本职+开源的长工时引起的职业倦怠(Burnout) 是让生活和工作可持续进行的重要因素。
(2)社区的建立和本土化。
由于 Apache 社区鼓励用邮件列表和订阅的方式来讨论问题,这样做的好处是所有的讨论都可以留档,方便之后再次查看和搜索;但这种方式并不适合国内的讨论文化,大家更喜欢拉一个群,在群里讨论问题。于是在初期,为了更好地与用户交流,我们就建立了一个 QQ 群和微信群,来讨论各种问题。后来经过实践,我们采用了一种折中的方案:用 GitHub Issues 来记录一些值得留档的内容,比如需要开发的功能描述、某一个需要解决的 Bug 或者一个反复出现的问题;用微信群来解决一些需要及时沟通的问题,让用户遇到问题时可以更快联系到开发者。
(3)团队来自不同公司,大家有各自的本职工作,导致一些社区 Feature 没有办法通过团队及时开发。
(4)社区的可扩展性。
开源的力量
bRPC 已经是真正意义上的开源项目,Committers 的公司分布非常广泛,大部分新合入的功能也是由社区共同完成。本篇主要介绍我们理解的开源带来的力量。
KPI 方式的失败
bRPC 刚加入 Apache 孵化器不久的那一段时间,当时百度还是很重视 bRPC 的发展,在内部找了一些同学,给他们设置了 KPI,比如一个季度要合入多少个 PR、要在什么时间毕业等,但实际的效果并不好。原因是这些同学并不是真正的对 bRPC 项目感兴趣,缺乏持续贡献的动力。另一个原因是来自百度内部的 PR 和社区的需求并不完全一致,缺少和社区成员的沟通,因此难以被社区接受。KPI 的方法维持了不到几个月就宣告失败,事实证明社区的力量才是推动项目发展的真正动力。
社区与土壤
参与开源社区的收获
参与开源社区是需要花额外精力的,除了可以为产品本身做贡献,我认为它为工程师自身带来的收获也是巨大的。
(1)开源项目提供有别于公司项目的视角,可以学到不同的技术栈和开发流程;
(4)参与社区是一份公开的简历,由于所有的讨论和提交记录都是公开的,所有人都能看到你提交和讨论了什么;
(5)紧跟业界动态:知道业界需要的是什么样的 RPC 框架,以及上层使用 bRPC 的应用有什么具体的需求。
从孵化器毕业,成为顶级项目
所有孵化器的项目最终都希望能走向 TLP(Top Level Project,顶级项目)。在 Mentor 的指导、PPMC 的探索、Committer 和 Contributor 的支持与付出下,bRPC 开始筹备从 Apache 孵化器毕业。
Apache 成熟度评估模型
依据如上所示的 Apache 的成熟度评估模型,可以很好地评估社区和项目是否成熟。其实在 Apache 项目社区的初建阶段,建议大家就在这几个方面发力,因为这是官方给予的毕业标准及指导方针。以此为方向,探索属于各自项目的独特社区运作方式,也可谓是百花齐放。
经历 Release、社区建设、Apache Member 的指导、Meetup 举办等一系列事件,bRPC 终于在社区发起了毕业讨论,开始接受 Apache Member 及所有 Apache 成员的指导和评估。即便是经过四年多的社区建设,项目基本成熟,但面对毕业还是有很多工作要合乎规范,例如确认商标是否可使用、完成项目官网有关 Apache brand 和 trademark 的陈述、网站符合 Apache Way 等。
最终,bRPC 以 16 +1 binding votes、9 +1 non-binding votes 和 no -1 or +/-0 votes 顺利通过毕业投票。
2022 年 12 月 22 日,Apache bRPC 最终通过基金会董事会决议,加入了 TLP 行列。2023 年 1 月 26 日,Apache 软件基金会正式官宣,Apache bRPC 成为顶级项目。
Apache 软件基金会官宣博文
未来之路
回首这一路,收获与付出兼存,而在文章结尾,我们也特别想对开发者朋友说:
感谢所有参与 bRPC 项目的贡献者!你们是这个项目能够成功毕业的基础,你们的贡献和支持是我们最大的动力,你们的积极参与和不懈努力让 bRPC 能够不断成长,特性更加丰富、更加稳定可靠、更加灵活易用。我们真诚地感谢你们,希望你们继续在 bRPC 开源社区中做出贡献。
虽然未来的路不可预测,但我们还是坚定地立足于当下,眺望未来,持续地追求我们的愿景。
Apache bRPC Committer 列表
Mentor
- Jean-Baptiste Onofré
- Von 冯嘉
- 潘娟
PMC
- 戈君,字节跳动
- 何磊,字节跳动
- 朱佳顺,Google
- 陈章义,Momenta.AI
- 蒋如杰,字节跳动
- 王耀,百度
- 王伟冰,百度
- 谭中意,第四范式
- 蔡道进,Shopee
- 李磊,自由职业
Committer
- 牟盖东,腾讯
- 王维,腾讯
- 刘帅,百度
- 王晓峰,百度
- 胡希国,百度
- 陈光明,欢聚时代
Apache bRPC 官网:
GitHub 地址:
https://github.com/apache/brpc
作者 | 朱佳顺、王伟冰,Apache bRPC PMC
编辑 | 唐凌波
作者信息:
朱佳顺,Apache bRPC PMC,目前就职于Google
王伟冰,Apache bRPC PMC,目前就职于百度
相
关
阅
读
金兔迎福报、新春第一炮【2022 中国开源年度报告】
开源社 2023年度理事会成员官宣
开源的未来 10 年:中国开源社区建立是关键
开源社简介
开源社成立于 2014 年,是由志愿贡献于开源事业的个人成员,依 “贡献、共识、共治” 原则所组成,始终维持厂商中立、公益、非营利的特点,是最早以 “开源治理、国际接轨、社区发展、开源项目” 为使命的开源社区联合体。开源社积极与支持开源的社区、企业以及政府相关单位紧密合作,以 “立足中国、贡献全球” 为愿景,旨在共创健康可持续发展的开源生态,推动中国开源社区成为全球开源体系的积极参与及贡献者。
2017 年,开源社转型为完全由个人成员组成,参照 ASF 等国际顶级开源基金会的治理模式运作。近九年来,链接了数万名开源人,集聚了上千名社区成员及志愿者、海内外数百位讲师,合作了数百家赞助、媒体、社区伙伴。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。