需要我怎么帮你?关于维护Nutsdb开源社区的思考

news2024/11/26 20:48:20

背景

近来有人问我打算怎么继续维护Nutsdb社区,他们当中不乏有开源项目的狂热爱好者,发起了好几个几千star的开源项目,也有对Nutsdb感兴趣的,想来问问后续的计划。这不禁让我回想到从刚开始参与这个项目到最近这段时间一个人维护整个项目这段时光。一开始我们组织了一个小团队,开发了大半年的时间,后面小伙伴们陆陆续续的离开,到最后剩下我一个留守儿童。这是为什么呢?为什么会这样呢?以后我该怎么做才可以继续推进这个项目呢?这引发了我一系列的思考。汇集成这篇文章,仅代表个人观点和感受,不当之处敬请谅解。

维护开源项目的核心是什么?

开源项目基本上都是一群用爱发电的人在开发迭代和维护,大家做开源项目的目的可能不太一样,一些是为了解决实际问题,比如很多大名鼎鼎的项目,Flink,Spring。一些是为了学习,复现一个项目。比如goleveldb,是为了在go中复现leveldb。虽然大家的目的可能不一样,但是不可否认的,开源项目让这个世界变得更好。

好了,不煽情了。那么如果想让一个开源项目不断前进,不断与时俱进,不断有人参与开发和迭代,该怎么做呢?首先为什么需要不断的前进?

  1. 因为技术标准和科技是不断的在进步的,如果不前进,总有别的项目会替代你。打个比方,rocksdb应该是LSM-tree实现的标杆,但是总会有新的技术不断出现,比如SSD,比如PMEM。也会有新的研究不断出现,提出各种优化方法,比如Monkey,Wisckey。如果新的技术新的方法,有人可以实现了贡献给这个项目,那么这个项目始终是与时俱进的。每次新潮流的出现总会有新的人把它也夹带在冲浪板上一起前进。
  2. 很多时候,一些开源项目刚开始的时候,有可能实现的并没有那么的好,但是由于它解决了实际的问题,所以积累了一些用户。这时候也需要人去维护迭代这些代码,让用户不断的反馈社区,社区不断迭代也不断反哺用户。形成一个良性循环。这种状态就类似于,我发起了这个项目的最初形态,但是开源出来之后,大家帮助我达成了他的理想状态。

当然我说的这些都是相对积极的想法,如果做完了就不想维护和迭代了,也不要怪罪开源人,毕竟用爱发电不是长久行为,总有厌倦的一天。我想做的是把Nutsdb打造成类似百年老店的样子,纵使人来人往,有人离开不在参与,也有人不断涌入,这个项目还在迭代,不断满足用户的需求和吸引更多用户。

那么该怎么做呢?我思索了一段时间,我觉得核心问题是,人。为什么这么说呢?

一个开源项目可能会以各种信息的形式出现在你的面前,但是吸引你关注他,甚至愿意提交代码贡献它。他愿意做这种事一定是因为这种行为本身就会给他带来一些东西。比如在这个项目上做了个牛逼的优化,可以写在简历上增加亮点。比如平时上班都在做比较枯燥的东西,来搞搞开源可以接触多一些有意思的人和事。比如刚开始学习Go,找个项目搞搞,可以加深对Go的理解。

可以看到,不同的人对于一个项目会有不同的要求,一个项目其实也可以同时提供多种多样的需求满足各种各样的人。比如Nutsdb,可以弄一些性能优化的专题(有意思的事),也可以弄一些补充单元测试的专题(熟悉这个项目也可以熟悉Go),也可以搞新增一些数据结构API给用户使用(有意思的事)。

这一切的一切我认为建立在下面这几个基准之上。

  1. 有人了解到这个项目。
  2. 他知道自己能给这个项目带来什么,也愿意去做。

在这简简单单的两条基准上,我认为其实大有文章,也有很多工作需要去做。

  1. 让别人了解到这个项目,需要现在就了解的人多做宣传,写文章甚至出视频分享之类的,这个可以参考Tidb,他们的分享基本上是做的最好的了,不过人家是商用的数据库,所以也不用跟人家比,仅仅是举个例子。
  2. 让别人知道他能做什么,需要现在了解这个项目的人把一些未来方向,比如下版本需要发布什么内容,什么是新加入的开发者可以做的。还有项目的长远规划。

你看,简简单单的几句话,对于项目的maintainer来说,需要做的事情还是很多的。也就是我,需要做的事情还是蛮多的。

我要怎么做呢?

刚开始维护这个项目的时候,我们组建了一个小的团队,五六个人这样子吧,基本上每周都有一些进度,每个月可以发布一个版本。后来人员慢慢就流失啦,这个其实是正常现象。我要说的是,现在看来,其实组建小团队,单独拉群做一些需求,可能不是维护社区的上上之策。这样子做相当于把开发者和外部的人隔绝开来,老人不断会因为失去热情而慢慢流失,由于社区封闭不对外,新的人也缺少加入的途径。那么社区的迭代速度势必会慢慢降下来。

所以我要做的第一件事情,就是和用户,还有交流群中的小伙伴充分接触。充分听取大家的意见,我先开了一个issue,和大家互动,问题是,如果你想给这个项目做贡献,是什么阻碍着你。有意思的是这个issue吸引到了一个俄罗斯的小伙伴来评论。

image-20230717205346859

还有就是可以让用户知道你想干什么, 他看到这个感兴趣没准就乐意来贡献了?比如一些优化的想法,一些下个版本的计划,都可以分享到Nutsdb的交流群中。可以把下个版本需要做的事情列一下,看下有没有人愿意一起来参与。事实上这两个星期我就是这么做的,最近有陆陆续续收到一些PR,我都快速review并且合并进去了,所以最近还蛮开心的,心情倍棒。image-20230717204939039

拟定长远的计划,让大家清楚迭代方向。我首先写了一个简单版本的,我的想法。这个是有一天正好有一点空写下来的,还没来得及细化。后面会补充每个专题的内容,敬请关注。

image-20230717205523403

另外如果大家在看源码的过程中遇到问题怎么办呢?首先可以在群里提问,如果不在群里或者我没回复你,我建了一个单独的issue,可以在下面留言,我看到了会回复你的。目前我看到已经有四条留言了。

image-20230717205727101

最后的最后,当然是更进一步的和大家互动啦,我打算周期性的和大家搞个半小时的分享会,分享的内容试大家感兴趣的东西而定。录视频之后可以上传B站,这样可以提供更多的资料方便后面参与的人了解这个项目。

image-20230717205919881

目前已经有接近20人报名参加了。总的来说,这些都是很好的开端,希望可以有个比较好的结果!

总结

好了,这篇文章到此结束啦,感谢你这么有耐心可以看到最后。随着之前小伙伴陆陆续续的不再维护这个项目,我开始思考,有一天我或许也不会再活跃在这个项目上,趁着这个时间,我可以再努力一把,争取可以把这个项目做成一个百年老店的样子。所以。如果对这个项目感兴趣的话,可以联系我喔。找到我的时候,我认为可以这样,每个人对做一件事都是想要得到什么,这个是内在驱动力。你不妨告诉我,你想要什么,需要我怎么帮你?

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

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

相关文章

三维重建的工作

文章目录 一、北京:二、广州:三、深圳: 一、北京: 链接 三维重建技术是自动驾驶领域4D真值数据生成的核心基础能力。融合LiDAR、Camera、IMU、轮速计等传感器数据像BlockNeRF一样重建城市级别逼真精细的三维场景,将…

ArcGIS Pro 矢量数据的空间校正

GIS 数据通常来自多个源。当数据源之间出现不一致时,有时需要执行额外的工作以将新数据集与其余数据进行整合。相对于基础数据而言,一些数据会在几何上发生变形或旋转。 在编辑环境中,空间校正提供用于对齐和整合数据的交互式方法。 空间校正可执行的一些任务包括:将数据…

SQLite数据库安装

安装方式一: sudi apt-get install sqlite 安装方式二: https://www.sqlite.org/download.html 1. 把下载的文件 sqlite-autoconf-3420000.tar.gz 上传到开发板 2. tar xvf sqlite-autoconf-3420000.tar.gz 解压 3. cd sqlite-autoconf-3420000 进入…

[Mysql] 索引失效的情况详解~

一条查询语句走了索引和没走索引的查询效率是非常大的,但有很多情况导致我们的索引失去效果。这里总结一下常见的索引失效的情况~ 数据准备 我们准备一张简单的学生来做演示。 CREATE TABLE student (id int NOT NULL COMMENT id,name varchar(255) COLLATE utf8…

基于weka手工实现支持向量机smo算法

关于svm机器学习模型,我主要学习的是周志华老师的西瓜书(《机器学习》); 但是西瓜书中对于参数优化(即:Sequential Minimal Optimization,smo算法)部分讲解的十分简略,看…

Linux运维面试题(三)之shell编程类

Linux运维面试题(三)之shell编程类 文本截取有一个b.txt文本,要求将所有域名截取出来,并统计重复域名出现的次数统计当前服务器正在连接的IP地址,并按连接次数排序(cut不能以空格做分隔符) 随机…

Vis相关的期刊会议

中国计算机学会推荐国际学术会议和期刊目录 文档, 下载 link:CCF推荐国际学术刊物目录-中国计算机学会 一.可视化方向文章 1.IEEE VIS,是由 IEEE Visualization and Graphics Technical Committee(VGTC) 主办的数据可视化领域的顶级会议&a…

VMware桥接模式无法识别英特尔AX200无线网卡解决办法

1.先到英特尔网站下载最新驱动,更新网卡驱动适用于 Intel 无线网络卡的 Windows 10 和 Windows 11* Wi-Fi 驱动程序 2.到控制面板查看无线网卡属性是否有下图组件 没有的话,依次操作 安装---服务---添加---从磁盘安装----浏览--进入VMware安装目录&…

Linux系统的目录结构

目录 一、Linux系统使用注意 1、Linux严格区分大小写 2、Linux文件"扩展名" 3、Linux中所有内容以文件形式保存 4、Linux中存储设备都必须在挂载之后才能使用 二、目录结构 1、Linux分区与Windows分区 2、Linux系统文件架构 3、Linux系统的文件目录用途 一、…

Docker【安装与基本使用】

【1】Docker的安装 注意:如果之前安装过docker其他版本,请删除干净。 docker-01 10.0.0.51 2G docker-02 10.0.0.52 2G docker-01 [rootdocker-01 ~]# cp -rp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime cp: overwrite ‘/etc/localtime’? …

(中等)LeetCode146 LRU 缓存 Java

本题有两种实现操作&#xff0c;需要使用到一个哈希表和一个双向链表。在Java语言中&#xff0c;有一种结合了哈希表和双向链表的数据结构&#xff0c;LinkedHashMap import java.util.LinkedHashMap; import java.util.Map;class LRUCache extends LinkedHashMap<Integer,…

网络运维能转型到系统运维吗?

很多网工处于刚起步的初级阶段&#xff0c;各大公司有此专职&#xff0c;但重视或重要程度不高&#xff0c;可替代性强&#xff1b;小公司更多是由其它岗位来兼顾做这一块工作&#xff0c;没有专职&#xff0c;也不可能做得深入。 现在开始学习入门会有一些困难&#xff0c;不…

【深度学习】日常笔记13

前向传播&#xff08;forward propagation或forward pass&#xff09;指的是&#xff1a;按顺序&#xff08;从输⼊层到输出层&#xff09;计算和存储神经⽹络中每层的结果。 绘制计算图有助于我们可视化计算中操作符和变量的依赖关系。下图是与上述简单⽹络相对应的计算图&…

【C语言】深入了解分支和循环语句

&#x1f341; 博客主页:江池俊的博客 &#x1f341;收录专栏&#xff1a;C语言——探索高效编程的基石 &#x1f341; 如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏&#x1f31f; 三连支持一下博主&#x1f49e; &#x1f4ab;“每一天都是一个全新的机会…

【优选算法题练习】day7

文章目录 一、35. 搜索插入位置1.题目简介2.解题思路3.代码4.运行结果 二、69. x 的平方根1.题目简介2.解题思路3.代码4.运行结果 三、852. 山脉数组的峰顶索引1.题目简介2.解题思路3.代码4.运行结果 总结 一、35. 搜索插入位置 1.题目简介 35. 搜索插入位置 给定一个排序数组…

浅谈自动化测试工具 Appium

目录 前言&#xff1a; 一、简单介绍 &#xff08;一&#xff09;测试对象 &#xff08;二&#xff09;支持平台及语言 &#xff08;三&#xff09;工作原理 &#xff08;四&#xff09;安装工具 二、环境搭建 &#xff08;一&#xff09;安装 Android SDK &#xff0…

08 - 线性表的类型定义 - 循环双向链表

双向链表可以分为普通双向链表(前面我们已经学习过了)与循环双向链表。 循环双向链表的定义 循环双向链表就是在双向链表的基础之上,头结点的Prev指向尾结点,尾结点的Next指针则指向头结点,从而形成闭环结构。 内存中的结构 双向链表与循环双向链表的区别 双向链表 …

Vue项目中你是如何解决跨域的呢?

一、跨域是什么 跨域本质是浏览器基于同源策略的一种安全手段 同源策略&#xff08;Sameoriginpolicy&#xff09;&#xff0c;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能 所谓同源&#xff08;即指在同一个域&#xff09;具有以下三个相同点 协议相同&…

微信小程序开发入门指南

微信小程序商城是一种方便快捷的电商平台&#xff0c;让商家能够在微信平台上展示和销售自己的商品。本文将详细介绍如何使用乔拓云平台创建自己的小程序商城。即使是对编程没有任何基础的小白用户&#xff0c;也可以轻松创建自己的微信小程序商城。 第一步&#xff0c;登录乔拓…

上门服务小程序|上门家政小程序开发

随着现代生活节奏的加快和人们对便利性的追求&#xff0c;上门家政服务逐渐成为了许多家庭的首选。然而&#xff0c;传统的家政服务存在着信息不透明、服务质量不稳定等问题&#xff0c;给用户带来了困扰。为了解决这些问题&#xff0c;上门家政小程序应运而生。上门家政小程序…