开源社区健康指的是围绕一个开源项目形成的社区中关于项目的技术迭代、社区的组织架构、成员构成、开源治理、上下游协作、社区生态、商业化等多方面的多样性与管理、运作能力状态。这些因素在指导开源项目与相应社区不断发展的过程中至关重要。
今天为大家介绍的开源社区健康案例是 NebulaGraph 社区,其是 2022 年度 OSC 中国开源项目评选 ——「2022 中国开源社区健康案例」获奖社区之一。
NebulaGraph 是一款开源的、分布式的、易扩展的原生图数据库,底层数据模型是属性图,项目基于 C++ 编写,能够承载包含数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。它提供高吞吐量、低延时的读写能力,内置 ACL 机制和用户鉴权,为用户提供安全的数据库访问方式。在查询语言方面,开发团队完全自研开发查询语言——nGQL,并兼容开源的图查询语言 openCypher。项目从 2019 年 5 月开源至今,先后经历了 v1.0-alpha、v1.0-beta 到如今的 v3.3.0 等 30 个大小版本,期间有 200 + 开源爱好者参与了 NebulaGraph 的项目开发,他们分布在 NebulaGraph 相关的 40+ 开源仓中,其中 contributor 较为集中的仓库有内核的 nebula、文档的 nebula-docs。在这个过程中,NebulaGraph 项目收集了 20,019 个 pr,15,211 个 commit。下图为 pr 的分布图:除了与 NebulaGraph 同行的代码贡献者之外,社区还有 10 位 NebulaGraph 大使在各个技术会场布道图技术,61 位写手在官方博客或者其他技术平台分享他们的 NebulaGraph 最佳实践,243 名启蒙者在社区论坛回复他人的问题并被对方接受以及 114 名社区用户捕捉到了 30 个版本中的 bug。在 NebulaGraph 开源的过程中,也深入了金融、保险、通信、能源、电力、制造、公安、数字政府、新零售等等多个行业领域,被国内外多家诸如:美团、腾讯、快手、华为、中国移动等等企业青睐,运行在 1,000+ 企业的业务环境中。这些采用 NebulaGraph 作为作为他们图技术底座的企业对 NebulaGraph 有着一致的反馈:社区活跃,问题响应快;
性能极佳,能解决业务痛点;
稳定持久,保障业务高可用;
国产开源,产品快速迭代;
未来可期,能应对未来的业务增长;
Part.02 治理模式
NebulaGraph 是开源的分布式图数据库,在开源的过程中社区规模的增长之余,也带来了社区的治理的不断完善,形成了一套相对成体系的社区用户成长体系。而这一切都有赖于社区用户和 NebulaGraph 的努力与大多数社区项目不同的是,NebulaGraph 的社区构成分成了两部分:开发者(Dev Group)和用户(User Group)。Dev Group
Dev Group 是由活跃在 NebulaGraph 及其周边工具仓库的开发者组成,他们主要负责让 NebulaGraph 产品更加稳定、功能更加丰富、性能更佳。根据他们对整个 NebulaGraph 仓库的贡献,分为 4 种角色:PMC、Committer、Active Contributor 和 Contributor。PMC,全称 Project Management Committee,负责制定 NebulaGraph 产品功能规划和主导 NebulaGraph 项目开发。
Contributor,由给 NebulaGraph 及其周边仓库做出贡献的开发者组成。
Active Contributor,由给 NebulaGraph 及其周边仓库做出大贡献的开发者组成。
Committer,由给 NebulaGraph 及其周边仓库做出巨大贡献的开发者组成,具有对应仓库的 pr 的 approve 权限。
User Group
User Group 由活跃在 NebulaGraph 论坛及其微信群、Slack 的用户组成,他们引导其他用户更好地了解、实践 NebulaGraph,同 NebulaGraph 官方共建 NebulaGraph 社区。根据他们引导用户的方法不同,我们将他们分为了 4 种角色:Participant、Writer、Ambassador 和 Partner。Participant,他们尝试帮忙解决他人问题,因此他们在论坛的身份标识是 好心人。根据他们后续的建设 NebulaGraph 社区的方式,分为:捉虫小能手 Hunter、创造者 Creator 和启蒙者 Explainer 等 3 种角色。
Writer,他们用文字的形式记录他们的使用过程,帮助其他用户更好地使用 NebulaGraph。根据他们产出文章的数量,分为:特约写手 Writer、资深作家 Author、布道师 Preacher。
Ambassador,NebulaGraph 大使用音、视频形式向他人分享图技术,帮助其他开发者更好地认识、了解 NebulaGraph。
Partner,他们积极地组织线上、线下活动同其他开发者交流图技术,帮助其他开发者更好地认识、了解 NebulaGraph。
Part.03 运营体验
开源社区的运营,归根到底是人的关系维护,而 NebulaGraph 所属领域为图数据库是最擅长解决关系的数据库。NebulaGraph 在项目运营过程中,一直非常关注开发者和社区用户对社区的认同感。运营人员重视解决开发者、用户的问题解决与否之余,时刻关注者社区用户的成长,开启了帮助开发者成长、深入项目开发的「源码解读」系列了解项目的架构、代码设计思路以及编码风格。此外,还提供了供社区用户交流技术的论坛、微信群、Slack 等平台,让用户在彼此的实践中了解更多的 NebulaGraph 的使用方法。一言蔽之,用心去做开源社区的运营让用户感受到真诚以及温暖,并一起共建 NebulaGraph 开源社区。Part.04 生态共建
NebulaGraph 社区不只是专注于自身的产品发展,还致力于同其他的开源项目一起。有对接 Spark 大数据生态的图计算开源项目 nebula-algorithm、数据处理工具 nebula-spark-connector 和 nebula-exchange,还有对接 Flink 生态的 nebula-flink-connector,以及对接图计算 Plato 框架的 nebula-plato。此外,在自研的路上,NebulaGraph 社区也积极参与其他开源社区的项目开发,给数据治理框架 Amundsen 提交了相关的存储支持 pr#1817。有来有往的是,NebulaGraph 社区用户也反馈、捐献了社区他们的项目实践:大数据生态
客户端补充
nebula-node:Node.js 客户端
nebula-php:PHP 客户端
nebula-net:.NET 客户端
Java 相关工具
ngbatis:针对 NebulaGraph + Springboot 的数据库 ORM 框架
nebula-jdbc:JDBC 连接器
graph-ocean:nebula-java 的 ORM
graph-gateway:使用 Java 语言开发对接 NebulaGraph 图数据库的后端基础服务工程
nebula-swagger-demo:NebulaGraph Swagger Springboot Demo Project
nebula2-demo:Nebula2.0 Java Client 使用 Demo
Python 相关工具
Golang 相关工具
最后,谢谢参与到 NebulaGraph 社区的建设中各位,以及欢迎新的家伙伴加入我们 https://github.com/vesoft-inc/nebula :D
更多开源社区健康案例可查看【开源社区健康案例合集】仓库:https://gitee.com/gitee-community/osscommunity-cases/tree/master/2022