What is the DS (Dev Success) in OSS?

2023-06-30

G6这两天发布Beta版本了,和G6的缘分非常奇妙,从五月份逛他们官网帮她们修了几个typo,到后面偶然撞见发布了issue hunt悬赏令随手接了一个,直到今天已经陆陆续续合入了22个PR了。G6是我第一个参与的开源社区,一个来自蚂蚁AntV的图可视化开源项目,写篇水文记录一下在做开源过程中的一些感悟。

Background

五月底,第一个项目已经步入了落地收尾阶段,马上要开启第二个子项目。这个项目听起来非常难,大致内容是做一个渐进式增量布局,用户在点击一个节点时,要将这个节点变为一个凸包,包裹着这个节点底下的子节点,凸包包裹着凸包。即包含了增量布局技术,又需要支持无限的层级下钻。甲方让我们基于svg给一个解决方案,这无疑在布局和渲染上都面临巨大的挑战。

搜集资料阶段,逛G6官网发现了G6有一个叫Combo的可视化方案挺符合我们的要求的,初步玩了一下他们的demo,就知道我们要找的就是这个。但是因为一些懂得都懂的原因,我们不能直接用G6,而且G6 v4的ComboLayout在大规模点边图上容易出现重叠。在浏览官网的过程中,发现了几处demo有404 not found error。于是我想着哎这好修,那我给他们修一修吧!

因为是第一次提PR,在敲commit信息的时候我非常谨慎,在写PR信息的时候我也非常谨慎,认认真真检查每一个单词,还检查了语法什么的,最后提交。一个修复文档的PR花了我一晚上。

第二天,PR被合入,作者在我的PR下评论:非常感谢你的PR。我很兴奋,因为我在目前国内大型的可视化开源框架里有了我的第一条commit。

image-20230905000322235

非常机缘巧合,过了几天,G6推出了Issue Hunt计划,帮助他们完成功能的迁移和一些新Feature,就能够得到奖金。

起先我不敢认领,因为之前从没参与过开源工作,也很害怕耽误事儿,自己完不成任务怎么办。但是我挺想做的,首先是想参与一下开源,其次是G6是图可视化领域非常有名的库,我的硕士研究方向就是图可视化,而且开源经历对于学生来说还蛮宝贵的,以后也很想进入蚂蚁的可视化团队工作。

前3个Issue,我都是先做的差不多了,再写认领信息,然后认认真真地把PR写好,commit信息规规整整的写好,提交。好在有一些canvas开发基础,上手也比较快,写起来效率很高也很得劲。

到后面因为我写了很多Item迁移的工作,觉得和简单写起来也很快,于是就把这部分工作个人包圆了。在写的期间帮忙修了一些小bug,最后在Beta发布前几天还帮忙把Item部分的函数注释完善了下,生成API文档。

Dev Success

Dev Success,我译为开发者成就感,这是我认为开源社区作者需要思考的一个点。意思是在维护一个开源社区的时候如何让开发者借助你的项目成功,也就是吸引开发者来贡献代码吧。

我觉得G6的Issue Hunt就挺好的,至少对于我来说挺好的,既能参加开源项目,还有点小零花拿,还能认识行业的前辈,真好~!

但是当然不是所有开源项目都应该拿钱来吸引人了,这里想了想其他的办法(意思是我有开源项目,我会这么做:)

  • PR评论区/社交媒体上的感谢,对我来说收到一位敬重的行业前辈的一句感谢会挺开心的【成本:低】
  • 评选年度最佳贡献开发者,邮寄一些周边。这点似乎许多社区都会做【成本:中】
  • 【成本:高】的不建议,不建议在Dev Success上花费太多,因为这似乎有点违背开源精神

羊腿学习法与Contributor学习法

羊腿学习法来自大圣:

image-20230906004234541

我还有一个Contributor学习法:如果想要在社区里找一个师兄,可以先帮他的项目提一些PR,做一些贡献。等到有一定的存在感了,约一顿饭就显得没有那么奇怪了。如下:

image-20230906004403071