种子终会破土而出! | DevUI开源2022年中总结

avatar
前端组件库 @华为

「时光不负,创作不停,本文正在参加2022年中总结征文大赛

Kagol

从你的心中抽丝,织成布帛,仿佛你的爱者要来穿此衣裳。
热情地盖造房屋,仿佛你的爱者要住在其中。
温存地播种,喜乐地收获,仿佛你的爱者要来吃这产物。
这就是用你自己灵魂的气息,来充满你所制造的一切。
                                                                                                  ——纪伯伦

开源思考

在2021年的年终总结中,我把参与开源比做给果园的果树浇水。

大家参与开源项目更像是一起在给一个果园的果树浇水,参与了这个开源项目的人都是属于这个果园的。不同之处在于有些田主负责这一片果树,另一些田主负责那一片果树,有时我没时间,你可能会给我的果树浇浇水,我同样也会帮助你,这样大家一起维护一片果园。果树结了果实,大家也是一起收获和分享的。

这是从贡献者的角度看开源,有一定的道理,但这个观点不够成熟。

首先,大家都喜欢香甜可口的水果,但他怎么知道在你的果园给果树浇水,果树就会结出丰硕的果实呢?

其次,只是浇水,果树是很难结出硕果的,还需要除草、施肥、除虫等,大家都喜欢浇水,除草、施肥、除虫的事情谁来做?

再次,大家守着自己的果树就好,为什么要给别人的果树浇水?为什么要一起维护同一片果园?

最后,经过大家一起漫长的培育,果树最终硕果累累,大家如何一起分享收获的喜悦?

这些是我这半年一直在思考的问题,总结起来就是:

运营一个开源社区究竟意味着什么?

本文将从一个开源社区运营者的角度,尝试做出一些粗浅的解答,如有不当之处,希望大家在评论区指正,非常感谢!

参与开源的动机

先看第一个问题,社区开发者为什么会参与开源贡献?

贡献者对于开源社区来说是最关键的,有贡献者参与到开源项目中来,不断地为开源社区的繁荣和开源项目的成功做贡献,这就是开源社区存在的意义,没有开发者参与的社区就像一潭没有生气的死水。

但是开发者为什么要参与社区,而不是做别的事情?他们为什么要参与这个社区,而不是那个社区?

参与社区贡献是一种行为,它和别的行为发生的原因没有本质上的区别,受三个因素的影响:

  • 动机
  • 能力
  • 提示

能力是可以培养的,提示可以通过技术社区进行传递,动机才是最关键的。

我觉得开发者参与开源贡献主要有以下动机:

  • 实践:将开源社区当成一个实践的舞台,用来磨练自己某方面的技能,以方便未来找工作或解决现在工作中遇到的难题。
  • 社交:将开源社区当成一个结识朋友的机会,向社区优秀的开发者学习,以帮助自己快速成长。
  • 归属感:通过参与开源社区,获得成就感、自信心、荣誉感和归属感,增强自己的影响力,希望得到同行的认可和尊敬。
  • 商业合作:通过开源社区获得商业合作的机会,推广自己的品牌或者降低产品研发的成本。

实践

为了给简历添彩,为了找到更好的工作,这是一个最直接的目的,可能也是大部分开发者最初接触开源的动机。

很多公司在招聘时都会将参与开源项目当作加分项,在竞争激烈的市场环境下,求职者怎么才能够脱颖而出,除了扎实的技术基础之外,参与过知名开源项目的贡献,成为Contributor或Committer,这绝对会让面试官眼前一亮。

为了学习新技术,比如Vue3、TypeScript、组件库建设等,有些开发者想学某种新技术,但公司又没有类似的项目可以实践,参与开源项目是一个非常不错的选择,你可以任意选择自己想学的开源项目,参与其中,从修复一些文档书写错误,到慢慢修复一些简单的bug,再到成为核心特性的贡献者,这绝对是一个很好的实践机会。

以上动机确实能吸引很大一部分贡献者,但是这是不长久的,找到工作之后,贡献者很可能就会离开这个开源社区,新技术学会之后,他们也会选择离开,除非有别的东西吸引他们。

社交

我觉得社交是一个很重要的因素。

大部分开发者在公司做业务,只能接触到有限的同事,社交的圈子一般都很小。

他们希望与人分享自己的见解,希望遇到问题有人能够帮忙解答,希望得到前辈的指导,人都有社交需求,有讨论和交流的欲望,不一定跟技术相关。

虽然在公司也能与同事交流,在技术社区(比如掘金)和各种论坛也能与别人交流,但开源社区是一个通过代码和实践跟人交流技术的近乎完美的平台。

遇到问题或者有好的想法💡,你可以通过issue与别人讨论;通过检视别人的代码,可以学到别人做得好的地方,发现别人做得不好的地方,并通过提出检视意见,让对方获得改进机会;自己写的代码也会被别人检视,并以同样是方式让双方都受益。

一般有一定规模的开源社区会组织一些线上线下活动,让开发者之间有更多的连接,促进彼此之间的了解。

DevUI开源社区之前就组织过田主大会,每次都会邀请一些田主一起讨论组件设计的思路,或者是DevUI组件库后续的一些规划,或者是分享一些新技术。

这一块后续需要继续保持和深化,让大家有更多交流和学习的机会,有机会也会约一些线下的沙龙和面基,请大家喝喝咖啡,“一杯咖啡吸收宇宙能量”。

image.png

归属感

实践和社交,吸引开发者加入社区,并感觉良好,但让开发者长久留在社区的,一定是别的东西。

随着开发者逐渐融入社区,彼此之间不断产生连接,参与社区的互动,会形成这个社区独特的文化氛围,这个氛围对于凝聚开发者至关重要。

在社区中实践、贡献、成长、与人互动,除了让人产生成就感、荣誉感之外,也能让人获得自信,当你的想法获得社区的认可,你的优点被看见和被鼓励,你的善意得到回馈,这种感觉会让人对社区产生归属感,这种归属感会让人想要留下来。

归属感让人觉得自己是属于这个社区的,是其中的一员,在社区,自己的价值和潜力能得到最大程度的发挥,为社区做贡献,让社区变得更好,帮助其他人成长,这是社区的使命,也是社区成员的使命。

商业合作

前面的动机都是针对个人开发者的,商业合作则是针对企业开发者,有些企业会通过参与和自己业务息息相关的开源项目的贡献,为的是通过开源共建,降低内部研发成本,或者提升自己企业的产品竞争力。

贡献的另一面

代码是一个开源项目的核心,既然参与开源有那么多好处,开发者会不会只想做核心的事情,即提交代码?

这是开源社区要面临的很常见的问题。

开发了多少特性,提交了多少代码,似乎只有这些才是真正有价值的事情。

我觉得这就像是果实🍒和叶子🍃的关系。

对于一棵树🌲来说,每一个组成部分都是至关重要的,树根要扎得深才能汲取更多水分和养料,树皮起保护和输送养分的作用,叶子进行光合作用和呼吸作用为树提供能量,果实为树提供繁育下一代的种子,只有每一个部分都健康,树才能不断成长、不断繁荣。

开源社区也是一样的。

  • 代码是产品提供服务的基础
  • 单元测试为产品提供质量防护网
  • CICD等基础设施提升产品开发和发布的效率
  • 代码检视让社区成员之间产生更多连接,让大家可以相互学习和成长
  • 文档让产品更能被用户接受和使用
  • 推广文章让产品得到传播,让更多用户接触到产品

每个环节都为开源项目的成功和开源社区的繁荣提供助力,开源社区不能只有代码。

协作为什么是可能的

参与开源也可以像在公司开发业务一样,每个人负责自己的模块,有自己的一亩三分地,但这样其实削弱了开源的力量。

开源的本质是通过协作达到思想的交流和碰撞,从而启发创意和创新,但是大家为什么要协作呢?

我觉得原因在于开放性,开源项目的几乎一切都是透明公开的,我们可以看到别人的代码,能看到哪些地方做得好,哪些地方做得不好,正是因为有做得不好或不完善的地方,我们才有贡献的机会。

自己有时很难看到自己的问题,你优化一点,我改进一点,集思广益,通力协作,才能让开源项目变得更好。

另外就是开源社区的文化氛围,如果开源社区是鼓励协作和交流的,大家都会愿意一起协作。

收获和贡献成正比

在开源社区,每个人都是平等的,不管你的国籍、肤色、性别、年龄、背景、宗教信仰如何。

在开源社区只看贡献,谁贡献大,谁的话语权高。

这里的贡献不仅仅是代码,包含很多方面,任何有益于项目成功、有益于社区繁荣的事情,都是贡献。

贡献不是一簇而成的,而是经过时间的积累,慢慢形成的,贡献会随着时间的积累慢慢形成社区的影响力。

开源总结

接下来给大家同步下 DevUI 开源社区近半年取得的一些成果吧。

最让人惊喜的是:

  • Vue DevUI 实现Table/Tree/DatePicker/Form等复杂组件突破,达到v1.0版本发布要求
  • React DevUI 完成从0到1的突破,目前已有32个组件
  • Ng DevUI 周下载量突破 1000

掘金

上半年发布15篇文章,掘力值从 6975 增加到 9507,快升级Lv5啦,冲鸭!

image.png

指标项指标值
等级Lv4
文章数113
掘力值9,507
关注者2,446
点赞数5,020
阅读数448,803

以下是掘金内容数据:

文章数据.png

Ng DevUI

由于国内 Angular 生态不佳,Ng DevUI 从2019年开源到现在,3年多时间,数据一直都不行,虽然我们已经很努力地在社区进行推广,也为Ng布道:

Ng很好用,很规范,上手门槛也没有那么高,顺便还可以学习下 TypeScript 和 RxJS 这些流行和先进的技术。

不过参与贡献的开发者寥寥无几,贡献者的数量一直未超过20,周下载量也是常年100的量级。

Ng DevUI 作为整个华为云DevCloud商用业务、以及众多内部服务的体验基座,已经被广泛使用五六年了,是一个经过时间和大量用户考验的相对比较成熟的Ng组件库,为什么那么少人用呢?

今年上半年终于实现了一个小小的突破:

npm 周下载量超过 1000

虽然和material-ui/ng-zorro-antd这些业界优秀的Ng组件库相比,还有很大的差距,不过也算是这三年来最大的一次鼓励啦!

我们还专门写了一篇文章表达喜悦之情:

Ng DevUI 周下载量突破1000啦!🥳

以下是 Ng DevUI 下载量趋势图: image.png

Vue DevUI

Vue DevUI 从2021年开源到现在,一直比较受欢迎,社区活跃度也很高。

这半年来:

  • Contributor 数量从 54 增加到 72
  • Star 数从 110 增加到 361
  • PR 数从 411 到 1102
  • Commit 数从 1712 到 2587
  • Download 数从 1366 到 3989

v1.0正式版本近期也将发布,尽请期待!

好不好用,试了才知道哦,觉得好用可以给我们点个星星Star🌟

Vue DevUI:100多位贡献者持续530多天,写了近60000行代码,这个新鲜出炉的 Vue3 组件库你不想尝试下吗?

不好用,也欢迎给我们提issues

更欢迎你加入进来一起共建:

vue-devui.github.io/contributin…

image.png

React DevUI

React DevUI 是由 DevUI 开源组织 PMC 成员 Xie Jay 发起的开源项目,目前已经有32个组件啦!

欢迎大家体验和参与共建,以下是React DevUI官网:

react-devui.com/

想了解更多 React DevUI 的信息,可以参考我们之前发布的文章:

React DevUI:React 18 还没正式发布,我们已经开发了一个基于 React 18 的组件库

也可以添加 DevUI 小助手微信:devui-official,拉你进我们的技术交流群。

image.png

种子终会破土而出

给大家分享一个小故事,我是一个绿植爱好者,2017年我家有一位新的绿植🪴成员加入,它刚来的时候是这样的:

image.png

这些年来我们不断地有添置新绿植,有很多都枯萎了,唯有这一株,经历了起起伏伏,不断地有叶子枯萎凋谢,又不断地在来年绿叶成荫。

今年对它来说似乎是最困难,我不断地看到它的叶子在枯萎,一片、两片,从最初的20多片叶子🍃,到最后只剩半片叶子。

中间也尝试抢救过很多次,浇水、施肥、搬位置、换土、移花盆,依然不见好转,叶子依然一片一片地凋零🥀。

当我摘除它的最后一片金黄色的枯叶🍂时,我自己都对它失去信心,放在阳台不再去管它。

我只记得过了很久很久,我最后一次看它的时候,它只剩最后半片叶子(真的是半片叶子,有图为证)。

直到前两天我去给别的植物浇水的时候,突然发现这株绿植竟然神奇地长出了新芽!

惊喜之余,我给它拍了张照片,它现在长这样(拍摄于2022年7月9日):

image.png

不知道这株植物的种子在黑暗潮湿的土壤中经历了什么,等待了多久,只知道它最终突破而出了,而且坚信它最终又将会绿叶成荫🍃。

我们有时和这株绿植其实是很相似的,有些事情很困难、模糊、未知,也不知道有没有结果,有时甚至不知道该做什么才能有结果,我们会想放弃。

我们知道放弃是很容易的,我们不能轻易放弃,我们想到了自己的初心,我们为此付出了很多,我们必须坚持到底,我们知道:

种子终会破土而出,迎接它的是温暖的阳光、湿润的雨露和成长的喜悦!

最后,给大家分享一个非常硬核的荒野求生系列视频:女生无工具求生东南亚丛林100天,来自B站Up主麻雀喳喳野行记

除了渣爷真实的、硬核的100天荒野求生过程本身之外,还有以下几点非常打动我:

  • 脱口而出的诗经、经典的唐诗宋词、现代诗,关键这些诗句都非常应景
  • 丰富的中草药知识,每种草药的形态特性、作用如数家珍,弹幕都说渣爷是“行走的本草纲目”
  • 对大自然和生命的敬畏,在荒野求生过程中抓到蛇、鸟等动物都会放生,自己只吃鱼虾蟹、野果等
  • 最关键的是坚定的信念、惊人的毅力和强大的心理素质,以及在绝望中表现出来的乐观、自信

image.png