开源运营当论迹不论心

news/2024/7/7 14:31:51 标签: 人工智能, java, python, 编程语言, 区块链

e74097a9301eb8c041c7d33820364d0b.gif

最近跟不少朋友讨论 TDengine[1] 开源社区运营中的一些失误,详见参与 TDengine 代码灭虫计划,快速融入开发者社区[2] 早在 21 年 10 月就把这个活动列入了 开发者体验反模式:市场主导运营[3] 的列表中。

现在旧事重提是为了纠正舆论场上一些错误的认识,并提出我的看法。

灭虫活动没那么离谱

因为活动原文中一些不太谨慎的描述:

每周初,我们都有 5 ~ 8 个小“虫”的放出

不少同学把这个活动理解成维护者主动在代码中写入 bug,然后交给社区修复。实情并非如此,taosdata 没有做这么离谱的事情。

根据 TDengine good first issues[4] 来看,这个活动的实际情况是维护者在项目中找到一些简单,容易修复的 BUG,并给出具体的指导,并交给社区修复。以 Local variable loopCont is assigned only once…[5] 为例,维护者给出了具体的代码位置,解释了原因,并且说明了应当如何修复。

灭虫活动的错误不在于动机

灭虫活动的错误不在于动机不纯。首先动机不纯不是什么可耻的事情,其次批评动机不纯无助于社区的改进和开发者体验的提升。

我在这个活动中看到的问题是这些:

为什么会出现这些 BUG?

我简单地看了一下 TDengine 的 good first issue 列表,发现绝大多数问题都是简单的 UNUSED_VALUESTRING_OVERFLOW 等。

是否有更好的解决方案呢?

  • C/CPP 社区有没有 check/lint 工具可以自动检查,甚至自动修复这些错误?(我对 CPP 社区不了解,这种工具有吗?)

  • 在 PR 的时候是否有自动化的检查以避免不符合要求的代码被合入?

TDengine 没有配置 Github Actions,只有 Circle CI 的配置文件。从源码上看,Circle CI 也没有启用,只有一个简单的 welcome。自动的检查只出现在 PR merge 的时候有一个内部的 jenkins:continuous-integration/jenkins/pr-merge[6],外部帐户无法访问(不过看起来是开放注册的,不知道是安全漏洞还是预期的,为啥不搞一个 Github 登陆呢?而且只提供 HTTP 访问- -)

有理由相信在 TDengine 完善 CI/CD 这些基础设施工作之后,这些简单的 BUG 能够在 PR 的阶段就消除,不需要所谓的灭虫活动。

不尊重开源社区规律

对任何一家开源公司来说,贡献者数量都是一个重要的指标。众人拾柴火焰高,社区壮大了才有可能做更多的事情,触达更多的场景。但是公司需要想办法提升自己社区的吸引力,而不是通过市场运营手段强行把开发者推进来。

提升社区吸引力的手段包括但不限于

  • 解决实际问题:这是最核心的手段,只有你的项目能够解决开发者的问题,开发者才会持续参与到贡献中来。

  • 完善的文档手册:完善的文档能够降低开发者加入的门槛,从易用的 Get Started 到详细的设计文档。

  • 良好的 RFC 流程:开发者能够清楚的知道社区目前的前进方向以及方式,从而能够自己发现可以参与贡献的地方。

  • 优秀的开发体验:开发者能够获取快速的反馈,跟项目的维护者高效沟通,PR 的自动化测试能够提前检查出绝大多数简单的问题。

把简单的 typo 转化为 Issue 对社区吸引力是毫无贡献的,在短期的喧闹之后,社区只得到了一地鸡毛,因为阻碍开发者参与贡献的因素从来都不是 Issue 太难了。相反,贡献者往往能提出比维护者更具有创造性的方案,问题在于我们的社区是否具有足够的价值以吸引贡献者参与。

灭虫活动与 GSoC 的区别

那灭虫活动和 GSoC,CommunityBridge 等项目的区别和界限在哪里呢?同样是找 Issue 出来给开发者,GSoC 等项目甚至会直接发钱,不少开发者就是冲着奖学金参与进来的,从某种意义上看动机更加不纯粹。为什么灭虫活动人人喊打,而 GSoC 大家却喜闻乐见呢?这就是我今天想说的开源运营应当论迹不论心:我们要看这个活动创造出了什么价值,而不是活动组织者的动机。

灭虫活动有价值吗?有,但是只有一点点,跟维护者需要花时间去找 typo 的代价相比,这个活动的价值可能是负的。

回到 TDengine 项目的核心价值来看: High-Performance, Scalable Time-Series Database with SQL support:灭虫活动对这个价值有贡献吗?灭虫活动中的 Issue 有解决实际的问题吗?引导开发者学会使用 Github 是这个项目的核心目标吗?我看这些问题都是否定的:开发者可以通过 first-contributions[7] 更快更好的掌握 Github 的使用。

GSoC 等活动的价值呢?

活动中的项目都是实际的需求,项目都需要配备一名导师,贡献者可以获得来自导师的全程指导。通过参加 GSoC 项目,开源项目可以解决一些长期的需求,贡献者可以深入了解一个开源社区并做出自己的贡献。我就是 CNCF Community Bridge 计划的受益者,通过参与 TiKV 的暑期项目,我成为了 TiKV 的 reviewer 并且最终决定彻底投身于开源项目的行列。

总结

参与开源是一个大趋势,大家都在经历一个学习的过程,运营的过程中出批漏是一件非常正常的事情。即使是 PingCAP 的社区内也有着大量的反模式,TiDB/TiKV 的 CI 是我一直在批评和吐槽的点。一方面,开源社区要积极参与开源治理,听取大家的反馈,改进运营操作,反思运营思路;另一方面,评价运营中出现的问题要坚持论迹不论心的策略,不要把具体的运营问题上升到抽象的开源精神。

动机无法证实也无法证伪:讨论某个活动是否只是为了完成开发者数量的 KPI 无助于开发者体验的改进,但是讨论具体的运营问题能够让更多的有志于开源社区的项目和个人了解到这样做是不好的,从而减少这种低效运营操作的出现。更何况,动机不纯从来就不是什么丢人的事情:开源机制的优秀正体现在它能够把有各自诉求的开发者力量凝聚到一起从而创造更大的价值。

@tison[8] 一直倡议开发者在开源运营领域发出自己的声音,我也鼓励大家多聊聊自己的看法和观点。大家所处的位置和思考的角度不同,得出的结论也各不相同。只有参与讨论的角度足够多样化,我们才能够得到更好的开源运营实践~ (当然,要是 TDengine 也来参与讨论而不是删除微信公众号文章就更好了)

参考资料

  • 👉参与 TDengine 代码灭虫计划,快速融入开发者社区

  • 开发者体验反模式:市场主导运营[9]

引用链接

[1]

TDengine: https://github.com/taosdata/TDengine

[2]

参与 TDengine 代码灭虫计划,快速融入开发者社区: http://web.archive.org/web/20220403062947/https://mp.weixin.qq.com/s/mssWF5AoUG-vt-b5_QMtRA

[3]

开发者体验反模式:市场主导运营: https://dx.phodal.com/docs/anti-patterns/marketing-drive-developement.html

[4]

TDengine good first issues: https://github.com/taosdata/TDengine/issues?q=label%3A%22good+first+issue%22+

[5]

Local variable loopCont is assigned only once…: https://github.com/taosdata/TDengine/issues/9128

[6]

continuous-integration/jenkins/pr-merge: http://ci.bl.taosdata.com:8080/job/NewTest/job/PR-11242/1/display/redirect

[7]

first-contributions: https://github.com/firstcontributions/first-contributions

[8]

@tison: https://github.com/tisonkun

[9]

开发者体验反模式:市场主导运营: https://dx.phodal.com/docs/anti-patterns/marketing-drive-developement.html

原文链接:https://xuanwo.io/reports/2022-13/

17e20a38199b05472005b7644af25517.gif

f63c63e9052d318b03bb0a50e360d646.png

你可能还喜欢

点击下方图片即可阅读

ac02ca44c7e4774f60f289ec85cbaa68.png

为 Kubernetes 集群启用 Pod 安全策略

3cb2607556ecaee2c24d8f9aee27841d.gif

云原生是一种信仰 🤘

关注公众号

后台回复◉k8s◉获取史上最方便快捷的 Kubernetes 高可用部署工具,只需一条命令,连 ssh 都不需要!

b4e4590b6f6714e5b91d5d7125217e30.gif

78fc96e0c8eb870bce11b5e0a38970a0.gif

点击 "阅读原文" 获取更好的阅读体验!

发现朋友圈变“安静”了吗?

0b3b87889c14be277897b3cbec5ab23b.gif


http://www.niftyadmin.cn/n/1749343.html

相关文章

android beacon微定位,开源:基于Android的室内定位WiFi,iBeacon数据采集和定位脚本...

最近有同学联系我,也在一些群里看到有新手同学挣扎在怎么获取定位数据,不知从何下手。所以整理并开源这个基于Android的数据采集软件和基于python的KNN定位demo,算是为新手同学建立一个Baseline.Github库摸这里, 另外,我司在大力…

织梦CMS5.7SP1文章列表页调用带链接的TAGS

为什么80%的码农都做不了架构师?>>> 众所周知dedcms默认在文章列表页是不能调用带链接的TAGS的,需要手动增加一个函数才可以。 我们找到在include/helpers/archive.helper.php用工具编辑新建GetTags_list函数:如下加到代码最下面…

GoBGP 原理与实践

GoBGP 是使用 Go 语言开发的,运行在 Linux 系统上的开源工具,可以提供 BGP 协议的控制平面功能。与 Quagga/FRRouting 相比,GoBGP 的性能更好,收敛时间更短,可以适用于更大规模的网络,比如充当 IXP 路由器。…

linux 安装rabbitmq 简易记录

2019独角兽企业重金招聘Python工程师标准>>> yum 居然不能用……只好各种下载了。 1.输入 python 判断是否安装了python 2.安装simplejson wget https://pypi.python.org/packages/source/s/simplejson/simplejson-3.3.0.tar.gz tar -zxf simplejsonXX.tar.gz cd s…

android 切换碎片布局,android 开发 入门_碎片Fragment布局Demo

packagecom.example.lenovo.myfragmentdemo2;//注意Fragment的依赖库importandroid.support.v4.app.Fragment;importandroid.support.v4.app.FragmentManager;importandroid.support.v4.app.FragmentTransaction;importandroid.support.v7.app.AppCompatActivity;importandroid…

教育对人的改变有多大?

我有个弟弟,亲的,小我八岁。五年前他面临中考,我已经本科毕业,在北京工作了半年多了。那时他的成绩在我家县城的中学,大概是 400/600 左右。至于我家县城的教育水准?这么说吧,自打我上了中学起…

android json html标签,Android: Parsing HTML tags in JSON

问题can anybody help me parsing HTML tags in JSON?I got tags like , , etc. on the values of my JSON file. And I want to be able to parse them, so the text which is displayed on my app is shown based on the HTML tags.heres my JSON parsing code:void examine…

Java集合框架:TreeMap

TreeMap定义 package java.util; public class TreeMap<K,V>extends AbstractMap<K,V>implements NavigableMap<K,V>, Cloneable, java.io.Serializable{ } public interface NavigableMap<K,V> extends SortedMap<K,V>{} TreeMap继承AbstractMa…