「WeOpen Talk」是腾源会全新上线的“对话开源”内容专栏,每周为读者呈现一期与尖峰开源人物的精彩对话内容。在「WeOpen Talk」栏目中,我们将深刻诠释开源先锋者们的开源精神、开源理念及其眼中的开源世界,深度挖掘开源领军者们在实践、参与开源过程中的有效方法论、最佳经验。

郭炜,人称“大侠”。在技术和开源圈子里,他的头衔很多:Apache Software Foundation Member、ASF IPMC Member、Apache DolphinScheduler PMC、Clickhouse 华人社区运营者、腾讯云TVP、中国软件行业协会智能应用服务分会副主任委员、全球中小企业创业联合会副会长。

他从大学走进数据实验室,到毕业后相继在 Teradata(全球当时最大的数据仓库公司)、 IBM、中金、万达、联想、易观等多个大型企业从事相关工作,几十年如一日的投身于数据领域的探索与建设。后因接触开源,感受到开源为推动技术创新和发展带来的价值以及影响力,开始迈入了开源之路。

最近,郭炜也正式成为“腾源会导师”,为开源社区的发展贡献其才智与经验。借此机会,腾源会与这位热爱数据和开源的“大侠”展开了一场针对开源的深度地探讨与交流。他谈及了自己对于开源和开源发展趋势的理解,以及发起 Apache DolphinScheduler 项目和 ClickHouse 社区运营的方法论。本文将以第一人称自述的形式整理,带读者们走进郭炜的开源世界。

PART ONE

关于走上开源这条路

我最早接触开源还是 2010 年在中国国际金融公司的时候,当时的金融科技行业一直在用全球最领先的科技技术(一些传统的商业软件)来处理像自动化交易等需求。当时还没有比较好的分布式储存,一直存在着海量数据处理的问题。而开源社区 Hadoop 的分布式开源计算框架 MapReduce 却可以用 PC 机实现在 IBM 用大型机才能解决的数据问题,这远远超出其他传统商业软件的价值。

这个发现让我感受到了“开源”对推动大数据技术发展的重要性。所以就开始使用开源软件,后来在使用的过程中,发现了一些问题,就去提 issue、提 bug,慢慢的就玩起了开源。

后来在加入易观前,我也跟易观的 CEO 创始人老于(于杨)分享了我的两个技术价值观:第一是要支持开源,第二个支持云化,因为这两件事情是未来。

很多公司都只是守着自己的代码,觉得自己做得很好就可以了,其实这种想法是不对的。因为高手都在民间,让更多的人参与到项目里来,才能这个项目做得更好更牛。如果每个公司都总在重复造轮子,也是对社会资源极大的浪费,不如一起投入到一个开源组织或社区里(例如 Apache 社区)共同建设,对已有的技术进行更新与迭代,共享协作成果,才是未来更好的模式。

PART TWO

在开源的“波爬滚打”中不断获得成长的思考

成功的案例不容易复制,但失败的案例却可以借鉴。DolphinScheduler 能获得今天的成就,也离不开我们之前开源失败的项目的思考和总结。

例如我们16年开源的第一个项目 Backquarter( Kafka Message Synchronization),是一个跨云同步的组件。我们开源它的代码时非常地兴奋,并大力地宣传了一番,但是结果却并没有获得多少人真正的使用。后来我才意识到,当时我们对开源的理解并不透彻。那时我们觉得开源仅仅是代码开源,然而,代码开源其实并不是开源最核心的部分。

开源第一步应该是要确认项目的定位以及产品的理念和调性。你要清楚的明白这个项目能解决的痛点和它本身的理念是否能让其他人认同,这需要你对想开源的项目方向有着深度的理解,否则开源后没有人使用,其实也是一种社会资源的浪费。

第二是找到项目的第一个贡献者。Apache 有一句话叫做 「Community over code 」(社区大于代码),让其他开发者真正的参与进来,集思广益,才能将项目做的更好,如果没有社区维护,可能好的代码也会付之东流。

第三是需要具有开放心态,尊重给社区提否定意见的人。这个挺难做的,你好不容易做一东西,然后人家一通骂,这最很常见。特别是当新版本发布的时候,很多贡献者贡献的新 Feature在没有经过严格的测试下,就会存在一些 bug。有些用户用了新版本的后发现和期望值不一样就会提出否定的意见,有些意见会让你觉得刺耳和愤怒。但从另一个角度来讲,他们能为你的项目提出这些意见,说明他正在关注你的项目,而不是置之不理。所以我们要尊重这些提出反对意见的人,让他们也成为社区的一分子,社区才能不断的进步。

DolphinScheduler 加入 Apache 社区后,Apache的导师们为我们提供了非常多的帮助——例如社区的  Community over code 理念。

图注:Apache DolphinScheduler 项目基础介绍

在加入社区之前,我们会将 Star 数作为项目“好或坏”的重要评判标准。但 Apache 社区告诉我们,专注项目 Star 的增长是没有意义的,相对而言,长期的 Contibuter 和 Commiter 才更加的重要。因为获得 Star 的方式有很多,但获得贡献者却很难。

一个好的开源项目需要找到开发者,这才是社区真正的力量源泉。我们需要花更多的精力去吸引更多 Contributer,才能够成为 Apache 的顶级项目。

很多国内开发者都喜欢用中文去提 bug、写文档, 但 Apache 社区提倡的是必须使用英文,因为 Apache 的项目不属于任何一家公司,它是全人类凝结的智慧结晶,它的贡献者自全球的各个地区的公司。

这也让我们不断扩大对开源本质的理解,也就是要做好开源,必须给参与者们提供更公平的讨论环境,保持足够的开放。在后来的实践中,即使有国内开发者用中文提了一个非常好的 issue,在很难决策的情况下,我们还是会考虑将它关闭。这是我们必须要坚持的。

PART THREE

开源不是好的商业模式,是好的开发模式

很多小伙伴都认为开源是个很好的商业模式,我不同意这种看法。开源是一种开发模式,而非商业模式。

基于开源社区来做商业产品是有优势的,它的优势就是人,人的理念以及他的认知,这也是商业公司的核心竞争力,因为开源社区里的人的认知水平是经历了成百上千个用户打磨而成的,这种“认知”的核心竞争力远远超过某个软件和代码的能力。

在一个商业产品里,用户的信任和对产品的认知是最重要的。你需要考虑清楚自己对项目是否有足够的认知,是否有社区,有人能够足够支持,否则就很难做成功。所以说商业和开源是两件事,不是每一个开源的项目都可以去做商业,也不是每个开源的项目都有商业模式,探索商业化需要看重产品本身的商业价值及路径。

最近开源的投资热度也很高,各类媒体的过度宣传也给大家营造了一种“开源是银弹”的感觉。在此我也希望大家对开源能保持一个客观认识:开源不是万能药,并没有改变开发优秀软件产品的本质规律,也不是解决软件危机的银弹。

因为开源是一个需要长期投入才能做好的事情。无论是 DolphinScheduler 还是 ClickHouse 社区,它的成功并不是一蹴而就的,一个好的社区需要通过社区所有成员数年的时间和精力的投入才形成。像 Apache 基金会孵化毕业的顶级开源项目的平均毕业年限都在两年左右,就是因为项目需要通过两年的观察才能去做的更好。

PART FOUE

开源成功背后是几年如一日的付出

开源没有简单的事。

做开源社区和贡献需要投入大量业余时间,所以我在周末基本没有休息时间。所以当你看到我们项目做的不错的时候,其实它的背后是有着几年如一日的付出。

今年5月,我的小女儿降生。在妻子临产前的凌晨,北美举办的一场开源Meetup正在召开,我是受邀分享嘉宾。还记得当时在产房外焦急等待的我,也必须得抢着那些时间上线参与,所以就留下了下面这张珍贵的照片。我也给女儿取名为“开源小公主”。

图注:女儿出生时,郭炜正在门外参加美国凌晨5点的开源 MeetUp

也许很多人不能理解,也会心想,开源究竟能为你带来什么?

这之中我信奉一个词,叫“延迟满足”,因为现实中,可能开源并不能给你直接的回报,但是只要你在坚持,并且相信这个事情能为社会做一些贡献,它就有存在的价值。

相比于物质上的汇报,我从这些事情中获得的成就感,才是最大的价值。我十年如一日地支持开源,也仅仅是希望能够真的帮助到社会上更多的人,而不是想办法通过开源拿到更多的东西。

同时,我们也不应该提倡这种投机取巧价值观,例如目前经常出现的开源品牌纷争,未来也需要有更多的法律去保护,让它真正成为全人类的资产,也不是某个人某个公司牟利的工具。

曾经,有一个团队呕心沥血做了四年的开源项目,结果被另外一家公司恶意的抢注了他们的开源项目品牌,并给他们发了封邮件说这品牌归公司,让他立即把项目封掉,这种类似的事件一直在发生。

很多开源爱好者都比较专攻于技术,不了解如何去维护自己的权益。他们想要去为开源去做一些事情,有着非常好的初心,但是因为目前的法律法规对开源的支持还不够,或者说对开源这个场景适配程度还不高而出现的一些问题,导致这些真正热爱开源,想去贡献的一些纯粹的爱好者受到一些伤害,甚至对开源这件事感到无奈和失望,这是非常可惜的。

所以这也是我为什么会鼓励大家加入 Apache 基金会,因为 Apache 会提供一套成熟的法律保护机制以及相关的人来保护你的项目。对于开发者来讲,如果你真的觉得自己的项目不错,欢迎来找我或找到任何一个 Apache 项目Member,把你带入到基金会里面来。有基金会的保护和指引,其实就能协助你把项目做得更好,这样也能避免一些法律法规上出现的问题。

当然目前光有基金会的支持目前也是远远不够的,如果要去更好的发展、推进开源,国内也需要有更多的法律法规去支持才能创造更好的环境。

目前国内仍在活跃着这批开源人,我觉得应该只能算作第二代开源者。最早第一代开源人目前在媒体上已经不那么活跃了,目前只剩下像适兕(李建盛,开源之道主创,Linux 基金会 APAC 开源布道者)等还在坚持的一群人在十年前就开始支持推广开源了,所以其实我们都是站在“巨人”的肩膀上。

像我曾经说过的一句话:“关于开源这件事,这一代开源人是不是能真的成功我不知道。但我相信我们这一代开源人,会和所有开源的卫道者——无论是投资的人,商业的人还是开源社区的贡献者们,一直向成功的城池努力冲锋,即使最后我们这一代人最终没有冲进城去,我们也会用尽全身最后一滴鲜血,倒在离城门口最近的那五米,让我们下一代的开源人学会我们的经验,踏过我们的尸体,最后走进成功的大门。

Interaction

有奖互动

留言互动赢好礼

看了本文,你有什么想对郭老师说的或者想要进一步了解的呢?转发本文到朋友圈,并在文末留言你想说的话或者想要和郭老师探讨的话题。

12月17日中午12:00点前,我们将从留言区选出原创的精彩留言且点赞数量超过20以上的前3名,每人送腾讯周边礼品1件哦!另外被郭老师翻牌的提问和探讨,前3位我们也会送上礼品1件哦。

(*以上礼品随机赠送,以实物为准)

获奖情况将于12月17日在本篇文章留言处公布,尽请关注。

领奖时需提供转发截图哦,请大家遵守游戏规则

扫一扫,添加腾小源童鞋微信

进开源技术交流群,与众多合同行一起交流!

  往期阅读推荐

  • 我在 IBM 从事开源工作的十一年

  • 我的9年开源之路:395 Patch、20+Feature,背后只有努力与热爱

  • Envoy 代理开源五周年,创始人 Matt Klein 亲述开源心路历程及经验教训

  • 开源投资回报率高达4倍!欧盟委员会全力推动开源软件发展

腾源会是腾讯云成立的汇聚开源项目、开源爱好者、开源领导者的开放社区,致力于帮助开源项目健康成长、开源爱好者能交流协助、开源领导者能发挥领袖价值,让全球开源生态变得更加繁荣。

欢迎关注「腾源会」公众号,期待你的「在看」哦~

郭炜:就算倒在离开源成功最近的五米,也要让下一代开源人坚定前行相关推荐

  1. 【金猿人物展】Apache郭炜:数智新元,向内打破——开源星星火,燎原新科技...

    郭炜 本文由Apache Foundation Member郭炜撰写并投递参与"数据猿年度金猿策划活动--2021大数据产业趋势人物榜单及奖项"评选. 数据智能产业创新服务媒体 - ...

  2. 程序设计与算法郭炜老师的课堂笔记2

    程序设计与算法郭炜老师的课堂笔记2 枚举 完美立方 生理周期 称硬币 熄灯问题 递归 求阶乘 汉诺塔 N皇后 逆波兰表达式 表达式求值 上台阶 放苹果 算24 二分算法 找一对数 分治 归并排序 快速 ...

  3. 程序设计与算法郭炜老师的课堂笔记3

    程序设计与算法郭炜老师的课堂笔记3 从C到C++ 引用 引用作为函数参数 引用作为函数返回值 常引用 const关键字 定义常量 定义常量指针 定义常引用 动态内存分配 用new开内存 用delete ...

  4. 【科创人】易观CTO郭炜:数据是事业更是信仰 裁员是管理者的成人礼

    与数百位科技创业者一同关注科创人成长心路 - 文| babayage 编辑 | 笑 笑 1 在数据混不进IT鄙视链的年代 他决定一生ALL IN 科创人(以下简科):您认为自己人生中第一个重要的节点是 ...

  5. 郭炜:CTO、技术VP、技术总监、首席架构师的区别?

    同样是技术最高负责人,为什么有人叫CTO.有人叫技术总监.技术VP.有人叫首席架构师?他们之间的差别是什么?怎样才能成为一个合格的CTO?这些问题通过CTO核心能力管理系列文章分享一些自己思考,也重新 ...

  6. 程序设计与算法郭炜老师的课堂笔记1

    程序设计与算法郭炜老师的课堂笔记1 基础 与或非 位运算 字符串操作库函数 strtok尝试 字符串0新认识 void 指针无定义 快排 变量 排序 Vector vector示例 用**vector ...

  7. 采访ClickHouse 布道者郭炜

    点击上方 "大数据肌肉猿"关注, 星标一起成长 点击下方链接,进入高质量学习交流群 今日更新| 950个转型案例分享-大数据交流群 作者 | 李慧文 采访嘉宾 | 郭炜 Click ...

  8. 易观CTO郭炜:如何构建企业级大数据Ad-hoc查询引擎

    凭借多年大数据平台建设经验,易观 CTO郭炜为大家分享了易观在大数据实时查询引擎建设过程所获经验与挑战,以及大数据人员如何快速建立自己的大数据查询引擎套件,让自己的数据人员不再是"表哥表妹& ...

  9. xmuoj《C++与Python语法入门练习(By郭炜老师)》python参考代码

    目录 前言 xmuoj对应链接 Pycharm安装 代码 001 输出第二个整数 002 字符菱形 003 打印ASCII码 004 打印字符 005 整型数据类型存储空间大小 006 浮点型数据类型 ...

最新文章

  1. android控件ems,Android登录等待效果
  2. 1.Eclipse创建普通java工程
  3. 【好书推荐】《Web全栈工程师的自我修养》
  4. 屠龙之路_坚持就是胜利_NinthDay
  5. 操作系统进程管理实验java_计算机考研操作系统进程管理
  6. Java设置edittext光标,如何改变的EditText光标高度?
  7. python36_第36 p,就这几个方法,Python中文件的操作
  8. EasyUI实现两个列表联动
  9. Tomcat关闭失败,SEVERE: Could not contact localhost:8005. Tomcat may not be running.
  10. 面试:Java线程有哪几种状态,它们之间是如何切换的
  11. 【M25】将构造方法和非成员方法虚化
  12. 动态绑数据(GridView控件Header和ItemTemplate)
  13. Delphi7中默认没有安装的官方控件
  14. 将txt格式的地图导入到ArcMap
  15. 打开桌面计算机投屏到扩展屏,无线投屏新玩法——Windows电脑扩展屏幕投屏
  16. 使用YUI3创建Popup弹出层
  17. html 整个页面淡入浅出,css3网页的淡入淡出效果
  18. matlab四足仿真,基于MATLAB的四足机器人建模与仿真.docx
  19. 解决visio和office365冲突,无法安装visio问题
  20. QCM2290 充电指示灯 —— CHG_LED_SINK

热门文章

  1. 【速记】React解决IE浏览器svg标签不支持innerHTML操作的问题及相关拓展知识
  2. educoder实训平台----简历表页面的制作
  3. 学无止境!iOS上超好用的5个自学APP!建议收藏
  4. 倪健中在深圳全球元宇宙大会致辞:元宇宙充满巨大空间
  5. torch.mannul_seed()使用和踩坑总结
  6. 维基百科 mysql_把维基百科首页词条的数据导入mysql【Python】
  7. raid 物理盘缓存状态_Dell PowerEdge系列服务器RAID和物理磁盘开机自检错误信息及说明...
  8. ABAC - 基于属性的访问控制 - 复杂场景下访问控制解决之道
  9. ACL / RBAC/ABAC
  10. Windows下Bonobo.Git.Server服务器的搭建