从社区贡献者到加入核心团队,开源给他带来了这些变化

2023-05-16

作者 | 尔悦

采访嘉宾 | 谭雪峰

就在今年六月份,又一位社区Contributor成功入职涛思数据,他的身份也从TDengine的社区贡献者转变为专职的研发人员。在身份变换的同时,他对于自身的成长和发展、对于代码的品质和要求、对于开源的理解和融入都有了一个新的认知和提升。

“你是怎么看待开源的?你觉得开源能带来什么?

如何才能成为一名优秀的Contributor?

参与开源项目,成为Contributor后可以获得什么?

......”

带着这些问题,看看他眼中的答案是否和你所见略同。

选择成为逆流而上的“逆行者”

作为大连人的谭雪峰,从小到大基本都生活在大连这座海滨城市,大学毕业后,基于自身兴趣出发便在家附近找了一份研发工作,如果没有成为TDengine GitHub开源社区的贡献者,或许他的生活和工作轨迹也不会这么快从大连转移到首都北京。在众多年轻人“逃离北上广”的大潮中,谭雪峰成为从家乡到北京逆流而上的“逆行者”之一。

132609643f18632247af4a22db5467f4.png

谭雪峰

从一个熟悉的城市转移到另一个陌生的城市,这其实是一件说起来容易但做起来并不简单的事情,在这之前,95年出生的谭雪峰可以说已经在大连扎根了26年,贸然间从故土抽身总会产生一些不适和纠结,但谭雪峰却并没有给自己太多的思考时间,他很快就接下了涛思数据投来的橄榄枝。

“虽然一直呆在大连是离家近了,工作生活会更加安逸平静,亲戚朋友之间也能有个照应,但对于研发行业来说还是北京的大环境更好。”在“苟且生活”和“诗和远方”里谭雪峰一个都没选,他选择了“未来和成长”,这是一条攀登的路,但是无疑将会看到更好的风景。

事实上,谭雪峰并非科班出身,他喜欢研究逆向和安全,凭借着自身的热爱他开始自学编程,毕业之后顺理成章成为了一位研发工程师。谭雪峰直言,刚开始工作时因为自己基础打的不够牢固,在工作推进时困难重重,但他并没有因此退缩,通过汲取书本上的专业知识以及参与GitHub上的一些开源项目,来丰富自己的专业理论和实战技能,同时这种学习方式也为他结识TDengine埋下了伏笔

“此前我是在工业物联网行业,对各种时序数据库都了解一些,以便于更好地开展工作。国产的时序数据库还是比较少的,其中能做到开源的就更少了,因此我一直都比较关注开源,在这些开源数据库里面,TDengine的性能是非常高的,当时就想将它引入到平台系统中,这样一来二去就和涛思的人认识了。”

那谭雪峰为什么会加入到涛思数据?这其中还发生了哪些故事?

业内人都知道,涛思数据有很多学历背景强大、专业能力突出的研发工程师,他们有的来自国内外知名大学,有的是研究生、博士生,还有一些人拥有大厂研发背景,整体团队实力非常强劲。作为一个非科班出身的工程师,谭雪凭借着什么得到了涛思数据的青睐?

与涛思数据结缘,从开源开始

“我现在在涛思数据主要负责TDengine的应用研发和周边生态建设工作,说起来加入涛思数据的始末,除了工作上的合作加深彼此了解外,也和关注开源这件事有很直接的关系。”

据谭雪峰回忆,刚开始接触涛思数据其实还是因为自身工作的原因,为了完成开发任务了解了TDengine的源码,并为了能让其在Windows上使用通过GCC编译做了一些修改,他也因此成为TDengine的贡献者之一。

因为谭雪峰一直通过学习开源的代码来提升能力,从反哺精神出发也就想做一些事情来回馈开源社区。正好这时涛思数据举办了一场开源比赛——做TDengine和HiveMQ的对接,作为Contributor的谭雪峰略经思考便进行了报名,还取得了一个不错的结果。“这是我第一次参加开源社区活动,展示自己的同时还能够回馈社区,也正是通过这次活动让我更加深入地了解了涛思数据,萌生了想要加入的想法。”

进入涛思数据后的谭雪峰并没有给自己太多的适应时间,就立刻投入到工作中,他将整个Go连接器进行了重构,在此过程中对CGO有了更多地了解,但不可避免也遇到了一些问题。

“遇到比较大的问题是CGO的调优上面,如果C的方法阻塞的话会独占线程,这样一来并发性就会显著降低,当时为了解决这个性能问题我看了不少的文章,但是相关调优方法也比较少。之后在Go的GitHub开源社区上发掘了一些可以借鉴的经验,最后综合了几个渠道获取到的方案一一做benchmark并选了其中比较优的进行业务尝试。

在涛思数据工作的过程中,谭雪峰深刻感受到了如涛思这类纯技术驱动的企业技术和产品管理上的正规性,对于功能的探讨、代码的提交、review以及质量的管理都有着非常严格的要求。由于基础软件的bug和性能瓶颈会直接影响所有上层应用,因此研发会更注重单元测试和benchmark。

谈及到未来发展方向,谭雪峰表示还是要投身到开源项目中,从其中学习的同时贡献自己的力量推动项目发展。“目前我的工作是在为TDengine做周边应用,其代码也都已经开源在Github(https://github.com/taosdata/TDengine)上了,欢迎大家关注。”

开源帮助谭雪峰找到了一个前进的实现自我价值的方向。那么对于开源,谭雪峰又有哪些深刻理解呢?对于Contributor的成长,他又有哪些不一样的建议呢?

Contributor三要素:敢写、开源精神、社区意识

“我认为开源是一种发展趋势,项目在开源之后会得到各个方面的反馈,使用者发现不合理的地方会提交issue,继而社区用户会认领issue提交自己的修改,使用者、开发团队和社区用户三个角色共同丰富项目内容、推动项目发展,这是一个良性循环的过程。”

在谈到开源的价值时,谭雪峰觉得闭门造车式的项目开发势必没有开放开源力量大、速度快,俗话说众人拾柴火焰高,开源的项目成为众多开发者学习观摩的对象,反过来,开发者们也愿意用自己所学去扶持项目前进。

对于谭雪峰来说,他所维护的TDengine就是一款非常吸引开发者的开源项目,“TDengine本身的高性能就让人眼前一亮,作为后端开发者对于性能的追求是没有止境的。”同时他认为社区维护者对于反馈的处理态度也是衡量一个开源项目优质与否的重要指标,谭雪峰回忆,在他第一次给TDengine提交pr的时候,就有专门的人联系上他进行验证和指导修改,最直观的感受就是这个社区是活的,自己提的pr是有价值的。

谈及如何成为一名优的Contributor,谭雪峰认为主要在于三点。“首先是要有开源精神,参与开源就像是一个爱好一样,愿意为之付出时间和努力,再就是要敢写,提交issue或pr之后共同开发者会和你讨论提交的代码是否是合理,格式和性能是否满足,这个过程也会逐渐提高能力。最后是要有社区意识,Contributor的头衔除了给我们个人带来荣誉外,更重要的是带来一份责任感,要发自内心地回馈社区。”

而且成为Contributor之后,开发者会更加注重代码的质量,因为这不再是只在自己的一方小世界里创造,目的仅仅是为了“跑起来”,不需要注重格式和质量,也不必太过于上心性能和调优。在开源世界里有很多人都会看到你的代码,社区将成为一种正向的鞭策力量。

说到自己的成长之道,谭雪峰也有一番深刻见解。“在我们进入社会之后,大部分时刻都是要靠自觉去学习和提升技能,如果在工作中缺乏自信,感觉安排下来的工作都非常困难,就更应该多看多写,不光要写代码还要把优化的过程写出来,最简单的办法就是写完一段代码之后隔半个月再去看,如果觉得当时自己写的非常low那就说明有成长了。”

“我觉得开发者最好的状态就是把自己写的代码开源出来,帮助别人的同时与开源项目一起成长。加入涛思数据后,我才是真正实现了这个‘最好’。”


👇点击下方【阅读原文】,进入TDengine GitHub开源社区,即刻开始你的开源之旅!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从社区贡献者到加入核心团队,开源给他带来了这些变化 的相关文章

  • 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——④转换成PASCAL VOC格式数据集

    文章目录 关于PASCAL VOC数据集目录结构 创建VOC数据集的几个相关目录XML文件的形式 读取dcm文件与xml文件的配对关系 创建VOC格式数据集 创建训练 验证集 本文所用代码见文末Github链接 关于PASCAL VOC数据
  • Ubuntu与win10 修改开机启动顺序

    lfg 64 lfg ubuntu cd boot grub 打开grub cfg所在文件夹 lfg 64 lfg ubuntu boot grub sudo chmod a 43 w grub cfg 修改权限为所有可写 sudo pas
  • 小觅双目相机标准彩色版SDK的环境配置

    一 初用MYNTEYE双目相机标准彩色版 xff08 SC xff09 1 小觅相机目前标准版有三款 xff0c 详见 xff1a 小觅双目摄像头标准版系列参数比较 2 彩色工程版有以下7种分辨率可选 xff0c 数据输出格式为YUYV x
  • 小觅双目摄像头标准版系列产品参数比较

  • java for无限循环

    for无限循环的几个情况 判断条件为true 会无限循环 省略了判断条件 会无限循环 判断条件为true 会无限循环 package test010 public class Main nbsp nbsp nbsp public stati
  • 计数器与定时器有何区别

    计数器是当你开始从0开始计数时一直不停的开始记数 除非你让他停下来要不他会不停的记下去 而定时器则是不一样的 是需要你自己先设定一个时间然后开始倒计时 当你的所定时间倒计完以后 他就自动停止下来了 懂了吗 至于用哪个就要看你干什么而定了 8
  • C++基础知识

    1 面向对象的程序设计思想是什么 xff1f 答 xff1a 把数据结构和对数据结构进行操作的方法封装形成一个个的对象 2 什么是类 xff1f 答 xff1a 把一些 具有共性的对象归类后形成一个集合 xff0c 也就是所谓的类 3 对象
  • 【开关电源】降压变换器(BUCK)的断续模式建模

    1 前言 在DCDC变换器中BUCK变换器是最基础的一类降压型变换器 xff0c 它可以将输入电压降低后输出 在连续模式CCM下 xff0c 输出和输入之间的比值是D xff08 D为占空比 xff09 这种开关变换器是一种通过电子开关周期
  • 变量命名规范

    本文转载于https blog csdn net ZCF1002797280 article details 51495229 是我见过的描述最精炼 最好懂的命名文档 xff0c 故收藏转载推荐 1 驼峰命名法 1 1 小驼峰法 除第一个单
  • C++实现websocket服务器握手协议(使用Qt)

    前提 xff1a 笔者在开发server程序时 xff0c 要求websocket与server连接 websocket的机制是在第一次连接时进行握手协议 xff0c 协议通过 xff0c 才可以进行正常的通信 xff0c 否则websoc
  • 00011__ARM和STM32的区别

    https blog csdn net qq 34385566 article details 79668280
  • linux中查看系统资源占用情况的命令

    size 61 large top size 主要参数 d xff1a 指定更新的间隔 xff0c 以秒计算 q xff1a 没有任何延迟的更新 如果使用者有超级用户 xff0c 则top命令将会以最高的优先序执行 c xff1a 显示进程
  • 关于PendSV异常和SVC异常

    这里先说什么是异常 xff0c 什么是中断 xff1f 请下这张图 颜色加深的表项为异常 xff0c 这些属于cm3内核自带的 其中 3 xff0c 2 xff0c 1异常的优先级固定 xff0c 是不可更改的 xff0c 其余的异常中断优
  • FreeRTOS学习4-任务创建和删除

    关于任务创建有3个函数 1 动态创建一个任务 可以自动分配任务堆栈和TCB FreeRTOSConfig h中 xff0c 需要定义 define configSUPPORT DYNAMIC ALLOCATION 1 支持动态内存申请 Ba
  • java里 equals和== 区别

    1 java中equals和 61 61 的区别 值类型是存储在内存中的堆栈 xff08 简称栈 xff09 xff0c 而引用类型的变量在栈中仅仅是存储引用类型变量的地址 xff0c 而其本身则存储在堆中 2 61 61 操作比较的是两个
  • VRPTW建模与求解—基于粒子群算法

    VRPTW建模与求解 基于粒子群算法 1 VRPTW简要描述 VRPTW xff08 Vehicle Routing Problem with Time Windows xff09 是指在经典VRP的前提上 xff0c 给每个客户增添时间窗
  • 伽马分布,指数分布,泊松分布的关系 -转自简书

    原文链接 xff1a https www jianshu com p 6ee90ba47b4a 伽马分布 xff0c 指数分布 xff0c 泊松分布的关系 thinkando 关注 2018 09 25 21 13 字数 714 阅读 29
  • 双轴驱动步进电机云台二自由度单片机控制程序PTU57

    高精度云台由两个电机驱动 xff0c 可控制方位角和高度角 xff0c 具有两自由度的机械电子设备 可用于机器视觉 摄影摄像 监控安防 天文观测 雷达扫描 DIY雕刻机 转盘转台 智能机械手臂 双轴跟踪太阳能定日镜等各类应用高精度云台的场合
  • php使用curl获取需要认证的https请求

    lt php php使用curl获取需要认证的https请求的方法 url 61 34 XXXXXX 34 arr header 61 34 Accept application json 34 arr header 61 34 Autho
  • i-vector本质剖析

    1 i vector的由来 基于因子分析理论 xff0c 句子h的超向量可以描述成 其中为ubm模型的均值超向量 xff0c 即为i vector 2 i vector的计算 2 1 T矩阵的估计 为句子h的观察特征 xff0c 可以对应于

随机推荐

  • C++程序设计基础实验-实验七 多态性

    实验七多态性 一 实验目的 掌握运算符重载的方法 xff1b 掌握使用虚函数的继承实现动态多态性 掌握纯虚函数及抽象类的使用 二 实验内容 设计复数类Complex xff08 请参照教材例题8 1的设计 xff09 xff0c 实现运算符
  • g2o_a_general_framework_for_graph_optimaization

    g2o A General Framework for Graph Optimization NONLINEAR GRAPH OPTIMIZATION USING LEAST SQUARES 机器人和计算机视觉中的许多问题都可以用下列方程的
  • P5644 [PKUWC2018]猎人杀

    P5644 PKUWC2018 猎人杀 题目大意 一开始有 n n n 个猎人 xff0c 第 i i i 个猎人有仇恨度
  • 【Linux基础系列之】platform虚拟总线

    linux当中大多数的设备都是以paltform虚拟总线挂载上去的 xff0c 这里以kernel drivers net dm9000 c为例子分析一下 xff0c platform设备挂在过程 xff1b xff08 1 xff09 d
  • ARMv8-AArch64简述

    ARMv8是ARM版本升级以来最大的一次改变 xff0c ARMv8的架构继承以往ARMv7与之前处理器技术的基础 xff0c 除了现有的16 32bit的Thumb2指令支持外 xff0c 也向前兼容现有的A32 ARM 32bit 指令
  • ARMv8-AArch64寄存器和指令集

    xff08 一 xff09 简述 AArch拥有31个通用寄存器 xff0c 系统运行在64位状态下的时候名字叫Xn xff0c 运行在32位的时候就叫Wn xff1b AArch32与AArch64寄存器对应关系 xff1a xff08
  • ION框架学习(一)

    第一章介绍 xff1a ION的框架和buffer的分配 xff1b 第二章介绍 xff1a 如何使用ION buffer xff1b ION是google在Android4 0 为了解决内存碎片管理而引入的通用内存管理器 用来支持不同的内
  • 高通Camera 驱动调试要点(一)

    本文主要介绍QCOM camera调试的重要参数 xff1b xff08 1 xff09 Lane assign 和lane mask 现在摄像头基本都是mipi接口类型 xff0c 因为前后摄都对应到平台这边不同的mipi接口 xff0c
  • 高通Camera 驱动调试要点(二)

    这篇文章主要介绍数据流这边Camera ISP这块所遇到的问题 xff0c 主要介绍bus overflow和sof freeze xff1b xff08 一 xff09 bus overflow 摄像头传感器时钟通道 即 MIPI DDR
  • c/c++代码性能效率

    一 尽量减少值传递 xff0c 多用引用来传递参数 boolCompare xff08 span class hljs keyword string span s1 span class hljs keyword string span s
  • 6.Docker定制镜像

    当我们从docker镜像仓库中下载的镜像不能满足我们的需求时 xff0c 我们可以通过以下两种方式对镜像进行更改 1 从已经创建的容器中更新镜像 xff0c 并且提交这个镜像 2 使用 Dockerfile 指令来创建一个新的镜像 Dock
  • 全球最大成人网站公布年度榜单!原来lsp最爱看的是这种片……

    前几天 xff0c 那个号称全球最大的成人网站P hub xff0c 发布了 2022年度报告 别惊讶 xff0c 这已经是P某发布年度报告的第9个年头了 正所谓 xff0c 知己知彼百战不殆 不发年度报告 xff0c 怎么总结过去 xff
  • ROS学习篇(三)ROS系统的串口数据读取和解析(组合导航系统)

    一 Ubuntu下的串口助手cutecom 下载 xff1a sudo apt get install cutecom 打开 xff1a sudo cutecom 查看电脑链接的串口信息 xff08 名称 xff09 xff1a dmesg
  • VScode 结合clangd 构建linux源代码阅读环境

    1 背景介绍 上一篇文章 xff1a VScode 结合Global构建linux源代码阅读环境 xff0c 介绍了在VS Code工具中通过remote ssh远程登陆到Linux远程服务器 xff0c 使用Global构建linux源代
  • 信号量 PK 自旋锁

    信号量可能允许有多个持有者 xff0c 而自旋锁在任何时候只能允许一个持有者 xff0c 当然也有信号量叫互斥信号量 xff08 只能有一个持有者 xff09 xff0c 允许有多个持有者的信号量叫 计数信号量 信号量适合于保持时间较长的情
  • 【FreeRTOS】FreeRTOS 源码学习笔记 (4) 任务创建xTaskCreate + 常用结构体TCB、xLIST

    1 引言 经过第一节的移植 xff0c 我们已经拿到了一个可以用的工程 经过第二三节的基础知识 xff0c 我们对基本的数据结构 xff0c 列表 队列这些也有了一个了解 接下来就可以单步跟踪了 xff0c 看一下系统是怎么运行的 使用Fr
  • 【FreeRTOS】FreeRTOS 源码学习笔记 (5) 任务调度器 + vTaskStartScheduler、xPortPendSVHandler、xPortSysTickHandler

    1 引言 FreeRTOS的任务调度是个大头 xff0c 也是一个操作系统的核心 其实个人理解 xff0c FreeRTOS调度规则很好理解 xff0c 原则就是 优先级高抢占 xff0c 因为FreeRTOS是一个抢占式实时内核 xff0
  • [Qt入门篇]8 Qt的属性系统——总结

    QT常用的属性READ WRITE MEMBER NOTIFY RESET 1 QObject子类中使用Q PROPERTY宏声明属性 xff1b 2 Q PROPERTY宏中不能使用逗号 xff08 xff0c xff09 xff0c 只
  • [GIT] git打标签tag和分支branch的区别

    tag代表了当前的提交点 xff0c 是个点 xff0c tag是当前提交点的一个记录 xff0c tag名字是不能重复的 xff0c 就代表了唯一的这个点 branch代表里新的支线 xff0c 是个线 xff0c 可以继续延展 当在某个
  • 从社区贡献者到加入核心团队,开源给他带来了这些变化

    作者 尔悦 采访嘉宾 谭雪峰 就在今年六月份 xff0c 又一位社区Contributor成功入职涛思数据 xff0c 他的身份也从TDengine的社区贡献者转变为专职的研发人员 在身份变换的同时 xff0c 他对于自身的成长和发展 对于