贡献超 10 万代码的新晋 committer,持续参与 Apache IoTDB 社区的“秘籍”是?

news2024/11/24 20:37:32

资深贡献者成为 Committer!

2023 年 5 月 5 日,经 Apache IoTDB 社区投票,周沛辰成为 Apache IoTDB Committer。但其实这位新 committer 已经是 GitHub 代码贡献量突破 10 万,排名靠前的“资深贡献者”了。这位 Apache IoTDB 的“老粉”会有怎样的社区成长故事呢?

09b7f56904d6a02337927bc6e17880ff.jpeg

周沛辰

我叫周沛辰,GitHub 用户名是 choubenson,来自宝岛台湾。我本科毕业于南京大学软件学院软件工程专业,目前仍在清华大学软件学院就读工学硕士。我从 2021 年 7 月开始参与 Apache IoTDB 开源社区贡献,目前贡献了 106606 行代码,排名 14/256

关于 Apache IoTDB

最开始你是怎么了解到 Apache IoTDB 这个项目的?

第一次听说 Apache IoTDB 要从大四说起,那个时候确认自己被清华大学软件学院录取攻读硕士学位,于是开始了解各个导师的研究方向。我的兴趣偏向做工程项目,因此在师长介绍下,了解到了清华赫赫有名的 IoTDB 组,也是从那开始对时序数据库有了进一步的了解,并对相关技术领域产生了兴趣,于是开始投入到 Apache IoTDB 项目的研究与开发中。

是什么让你最终选择参与到 Apache IoTDB 这个项目中?

本科做的项目比较多的是偏向应用层面的软件,第一次听说 Apache IoTDB 项目,属于底层的系统软件,对我来说其实是一个比较陌生且富有挑战性的领域。我开始接触并了解工业物联网的背景下产生数据的特点,包括大规模和高速度、多样性和复杂性、实时性要求高和高可靠等特点,而 Apache IoTDB 专注于处理时序数据,且足够硬核,在技术实现上具有一定的挑战性相较于学术理论研究,我更享受解决实际工程问题带来的成就感,并且在开源社区里可以和相关领域的专家和学者建立联系,共同交流想法、解决问题,让我有足够的成长空间。因此,我最终决定参与到 Apache IoTDB 这个项目中。

在 Apache IoTDB 中主要负责哪一部分的内容?

在项目中,我主要负责存储引擎方面的工作。刚开始是负责 TsFile 文件底层的读写接口,包括文件存储结构的设计与开发工作。从 2021 年 11 月开始至今,主要负责数据库的合并模块的设计与开发,从我接手合并以来,先后对 Apache IoTDB 的合并模块经历了三次大版本的迭代开发工作,从维护 0.12 的合并到开发 0.13 的 readPointCompaction,而后到 1.1 的 fastCompaction,很高兴看到伴随我的努力,Apache IoTDB 的存储引擎在内存、性能和 CPU 开销控制上都有了较大的提升

在参与 IoTDB 项目建设的过程中,有哪些收获?

从本科的应用层软件开发到当今的系统软件开发,最大的收获就是培养了我对工程项目的严谨性。由于是系统软件,就需要直接和计算机资源打交道,对操作系统和计算机资源分配要有足够的了解。为了要追求极致的性能,需要对每一行代码都有足够的了解,毕竟随手的一行代码都可能导致意想不到的蝴蝶效应。

有什么参与贡献过程中的故事分享?

让我记忆深刻的是 22 年初的时候,放寒假前的一次集中开发。当时临时拍版,决定开发一个新的较稳定的合并方案,又赶着放进新版本 0.13。当时我连着好多天地敲代码,还遇到了许多本地无法复现的问题,为了不影响整体进度,还和社区的刘旭鑫同学一起帮忙找问题。虽然很累,但是大家一起在实验室集中开发和联调代码,可以学到其他同学解决问题的思路和方法,最后通过大家一起努力,还是达到了新版本对于合并方案的要求,也是一段比较难忘的经历了。

是什么让你能一直坚持参与 Apache IoTDB 项目,最终成为 Committer 呢?

我认为在当今工业物联网场景下,Apache IoTDB 特有的系统架构和解决方案上可以很好的解决行业的许多痛点,诸如写入查询性能低、数据管理和存储成本高等问题。因此,我认为该项目是一个有美好前景和很大成长空间的项目。其次,Apache IoTDB 是个开源项目,拥有一个较活跃的社区,且在技术上具有一定的挑战性,通过参与该项目我可以和社区里的其他开发者和业内人士建立联系,一起交流和互相学习,让我有一个较大的成长空间

关于开源社区

之前有过参与开源社区的经验吗?对开源/开源社区有什么新的认识吗?

没有,这是我第一次接触开源社区。之前只是简单地认为,开源项目就是把项目代码开放出来,供其他用户自由地使用或修改。在我真正地参与开源社区的开发工作后,我才发现开源社区其实是一群对某个开源项目感兴趣的人组成的社区,其中包括了开发者、用户、贡献者、专家和相关利益方等。大家可以在社区里通过线下或线上等方式进行交流或者合作,达到互相促进和学习的作用

你觉得开源社区对 Apache IoTDB 的“加成”是?

第一,我觉得开源社区提供了一个平台,让感兴趣的开发者可以参与进来,一起分享自己的技术和经验,互相合作,汇集各种创意和技术点,共同推进 Apache IoTDB 的发展。第二,社区的用户可以提交使用的反馈,有能力的可以进行修复和代码贡献,帮助 Apache IoTDB 快速发现和修复问题,提高了项目质量和稳定性。第三是生态系统的发展,社区成员可以扩建和分享 Apache IoTDB 和其他项目的相关集成工具、插件,丰富其功能和应用范围

有没有给想要参与 Apache IoTDB 开源社区贡献的小伙伴一点小建议?

只要你对时序数据库的前沿技术感兴趣的或者想要在其他领域上做出贡献的,欢迎你加入!哪怕是一个小白,也不需要担心,欢迎一起进来学习和成长。毕竟,我自己在本科时,在数据库和系统软件上也是个完全的小白,现在在社区的师长和小伙伴的帮助下,已经逐渐地越会越多,还在不断的学习中!

成为 Committer 的感言!

成为 Apache IoTDB 社区的 committer,意味着我的工作和贡献得到了社区小伙伴的认可,我也很高兴可以加入到 IoTDB 社区这个大家庭和大家一起交流和学习。作为国人自主研发的时序数据库,能参与到其中的开发并被认可还是很荣幸的,后续我会不断提升自己,以推动项目的持续发展和创新。最后,祝愿 Apache IoTDB 成为工业物联网和时序数据库领域的先驱和领导者。

作为全球性开源项目,截至目前,Apache IoTDB 已拥有 257 名贡献者、3.3K Stars、906 Forks、9433 Commits。我们为大家提供了参与指南,欢迎越来越多的小伙伴助力 Apache IoTDB 项目的不断发展与前进,迈出加入 Apache IoTDB 社区的第一步!

b421ba39215cd3c11bf8f54f0a1e4ae7.gif

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

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

相关文章

百度、NVIDIA、Intel……各大厂商集结,共话文心与飞桨共享生态下的大模型训推部署创新实践计划...

由深度学习技术及应用国家工程研究中心主办、百度飞桨和文心大模型承办的WAVE SUMMIT 2023峰会重磅来袭!本届峰会聚焦AI技术、产业生态、未来趋势等主要方向,产、学、研、用各界大咖将围绕深度学习及大模型技术的发展与未来,带来行业前瞻洞察…

免费logo生成软件,总有一个适合你

随着互联网的发展,越来越多的企业开始注重品牌形象的塑造,而作为品牌形象的重要组成部分之一的logo也越来越受到关注。一个好的logo不仅可以传达企业的理念,还可以提升企业的知名度和美誉度。那么,在生成logo的过程中需要注意哪些…

Vue中使用qrcode说明

1.安装 npm i qrcode1.5.3 2.导入 import QRCode from qrcode 3.转换 说明:拿到服务器传来的字符串,转换成base64,然后通过img标签展示。 // 字符串转成二维码 let result await this.$API.reqPayInfo(this.orderId); 总结:

ChatGPT将会成为强者的外挂?—— 提高学习能力

目录 前言 一、提高学习力 🧑‍💻 1. 快速找到需要的知识 2. 组合自己的知识体系 3. 内化知识技能 二、提问能力❗ 三、思维、创新能力 🌟 1. 批判性思维 1.1 八大基本结构进行批判性提问 1.2 苏格拉底的提问分类方法 2. 结构化思…

Kubeflow Pipelines介绍与实例

1.背景 ML code仅是Machine Learning systems中的一小部分,像数据收集、特征抽取、配置管理、资源管理、模型部署、模型监控等同样十分的重要。一个典型的机器学习系统由这么多组件或子系统构成时,那么这么多子系统应该如何高效的配合起来? …

客户案例 | 永续发展,低代码助力“双碳”战略历史使命

关键发现 客户痛点:应对企业数字化转型,新技术能否提升绩效的不确定性,投资带来的风险性,以及企业组织架构的适应性等难点问题。作为业务驱动型企业,欠缺快速构建数字化产品方案的能力。 解决方案:利用西门…

【T3】固定资产模块点击资产增加时 提示“由于互斥功能正在运行或者相关设置步骤未完成,此功能暂时不可用”。

【问题描述】 在用友通T3软件中, 固定资产模块点击资产增加时 提示“由于互斥功能正在运行或者相关设置步骤未完成,此功能暂时不可用”。 【原因分析】 (1)可能之前出现过非正常关闭软件的行为导致功能被锁定 (2&…

LC-1289. 下降路径最小和 II(记忆化搜索==> 动态规划)

1289. 下降路径最小和 II 难度困难108 给你一个 n x n 整数矩阵 grid ,请你返回 非零偏移下降路径 数字和的最小值。 非零偏移下降路径 定义为:从 grid 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组…

♥ vue中$set用法详细讲解

♥ vue中$set用法详细讲解 1、认识 在vue中,并不是任何时候数据都是双向绑定的。 官方文档介绍 使用场景 当数据没有被双向绑定的时候,我们就需要使用set了 举个例子: vue的data里边声明或者已经赋值过的对象或者数组(数组里…

C#版本LINQ增强开源库

LINQ对应的中文名称是:语言集成查询,是对一系列直接将查询功能集成到C#语言技术的统称,我们最常用的场景是,用于数据库的查询功能。 在.Net中,本身对Objects也支持LINQ的扩展,但是对于一些特定的功能&…

Linux C 语言 mosquitto 方式 MQTT 发布消息

1 说明 采用 mosquitto 库,实现对主题发布消息。 其中服务器有做限制,需要对应的 cilent id ,cafile 、certfile 、keyfile 等配置 2 开发环境 采用ubuntu 直接编译调试 安装mosquitto 库 sudo apt install libmosquitto-dev sudo apt-ge…

Nginx虚拟主机和日志详解

目录 1.Nginx虚拟主机1.1基于IP虚拟主机1.2基于端口虚拟主机1.3基于域名实现的虚拟主机 2.日志详解 1.Nginx虚拟主机 虚拟主机,Nginx配置中的多个server{}区域对应不同的业务(站点) 虚拟主机方式基于域名的虚拟主机不同的域名访问不同的站点基于IP的虚拟主机不同的…

跨境电商线上店铺智能装修系统源码开发

搭建一个跨境电商线上店铺智能装修系统源码开发需要以下步骤: 1. 确定需求:首先,需要明确线上店铺智能装修系统的具体需求。 2. 选择开发语言和框架:根据需求,选择合适的开发语言和框架进行开发,可以提高…

选读SQL经典实例笔记21_字符串处理

1. SQL 并不专门用于处理复杂的字符串 1.1. 需要有逐字遍历字符串的能力。但是,使用SQL 进行这样的操作并不容易 1.2. SQL 没有Loop循环功能 1.2.1. Oracle的MODEL子句除外 2. 遍历字符串 2.1. 把EMP表的ENAME等于KING的字符串拆开来显示为4行,每行…

提速计算机运行速度方法

提速计算机运行速度方法 1,首先看这一步情况运行负载是否很高,很高就容易产生迟钝!2,安装一个清理电脑空间的软件,深度清理的。3,点击这里,看开机自启动的软件有哪些,如下图所示。4&…

CEC2013(MATLAB):淘金优化算法GRO求解CEC2013的28个函数

一、淘金优化算法GRO 淘金优化算法(Gold rush optimizer,GRO)由Kamran Zolf于2023年提出,其灵感来自淘金热,模拟淘金者进行黄金勘探行为。淘金优化算法(Gold rush optimizer,GRO)提…

logstash日志换行处理小解

logstash主用于日志实时数据收集、解析,并将数据转发的工具,内置的功能也相当强大。但,同时意味着,他可能接收到各种情况的数据。 此处,我们主要讲解我实际使用中,碰到的一个小问题,换行(\n)。…

斗轮机与程控站之间开关量双向无线通讯

斗轮堆取料机是一种对散料进行连续堆取作业的高效装卸大型机械,被广泛使用于火力发电厂和炼焦厂的输煤系统中。目前对斗轮机的技改主要为将斗轮机的部分程控信号改为无线传输,取代卷筒电机和电缆的应用。 多数情况下都是利用无线通讯做媒介,让工作人员通…

display 属性有哪些值,分别表示什么意思

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ display 属性是什么?⭐ display 属性有哪些值?⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&…

C# PDF加盖电子章

winform界面 1.选择加签pdf按钮代码实现 private void button1_Click(object sender, EventArgs e){OpenFileDialog op = new OpenFileDialog();op.Filter = "PDF文件(*.pdf)|*.pdf";bool flag = op.ShowDialog() == DialogResult.OK;if (flag){string pdfPath = P…