8 月 16 日,ALC Beijing 的首次线下沙龙活动 —— 《开源到底有多难?》在微软大厦如期举行。本次沙龙主要是分享开源开发经验、探讨如何让开源项目更加茁壮成长,以及分享 ASF 管理和运作开源项目的成功之道。
Apache 软件基金会成员、Apache 软件基金孵化器导师、ALC Beijing 发起人姜宁;Apache Flink 社区 PMC member 李钰;Apache DolphinScheduler 项目负责人、易观 CTO 郭炜;ASF Member、阿里巴巴 Tech Lead 孙金城(花名:金竹);Apache APISIX PMC member、深圳支流科技创始人温铭;ALC Beijing member、开源布道师李建盛分别在本次活动中进行了分享与探讨。
Apache Flink 社区 PMC member 李钰在活动中以《Apache Flink 中文社区的发展与挑战》为题进行了分享,以下为整理后的文字版本。
《Apache Flink 中文社区的发展与挑战》
大家好,今天我主要是代表 Flink 中文社区的同学们,给大家介绍一下社区在发展过程中的挑战,以及我们应对这些挑战的做法。
大数据和 AI 是互联网和计算机领域目前非常火的两个方向。在大数据的方向上,除了数据量和多样化之外,在 4V 模型上主要是向实时化发展,从而获取更多的价值。
我今天分享的 Flink,一般定义为第三代的流计算引擎。
流计算引擎从 2010 年发展到现在已经有三代了,其中第一代主要是以实时化为目标,但在数据一致性和正确性上面存在一些缺陷。著名的 lambda 架构就是通过 Storm 做实时化,但仍需要批量计算来修正结果。
第二代一般以 Spark-Streaming 为代表,对一致性的缺陷做了修正,但在实时性上仍有缺陷。Flink 作为第三代引擎,是以流为基础的计算引擎,支持流批一体的架构。
Flink 的发展历程类似于 Spark,都起源于大学和研究所。Spark 于 2009 年诞生在伯克利大学的 AMPLab, Flink 也是于 2009 年由柏林工业大学联合其它机构发起的研究项目,并且在 2014 年成为 Apache 的顶级项目,发展至今已经有十年历程。整体来说Flink 的发展历程和 Spark 是比较像的。
我们看到 Flink 实际上是起源于欧美、起源于欧洲的开源项目,所以我们建立中文社区的过程其实是一个欧美项目本土化的过程。在这里我们引申一下,开源项目我个人觉得可以按照起源地来划分,一种是欧美起源并在中国本土化,另一种是我们本土起源的社区,这两类项目现在面临的挑战和困难有一些不同。
下面我们来看一下 Flink 的应用场景,主要是针对实时化的一些场景 —— 比如实时大屏、风控、广告、实时推荐、视频分析等等。
Flink 在国内的应用目前非常广泛,这是一个 Logo 墙,我们看到包括 BAT、TMD 等很多一线的公司都在使用。
我们前面提到,这是我们为了把 Apache Flink 在国内本土化组建的一个社区。这个社区也得到了 Apache Flink 项目的官方授权,从 2018 年 6 月正式运营,期间也组织了非常多的线下活动。
在运营思路上,我们觉得一个欧美社区的本土化工作需要一个专门的团队来运营。所以 Flink 中文社区背后有一个专门的运营团队,我们介绍的这些内容所对应的实际工作都是由运营同学们在完成,在团队中每个人有各自不同的负责方向。
介绍完了这些基本的信息,那么做一个项目本土化主要的挑战在哪些方向?
首先非常显著的一点,因为这是一个起源于欧美的项目,所以在 Flink 中文社区成立之前,无论是入门资料或者是视频的教程,都是以英文为主,缺乏中文内容。这就导致国内的同学在学习的时候相对比较困难。
另外一方面,2018 年的时候实时计算的概念在国内处于一个早期的阶段,大家都刚刚开始考虑是否从 Lambda 架构上转型。
因为 Flink 有一个比较高的学习门槛,导致大家缺乏一个集中式的学习和交流的平台,网络上沉淀下来的内容相对比较零散,而这又进一步的增加了初学者的入门门槛,形成了一个恶性循环。我们建立中文社区,主要也是为了解决这些问题。
那我们采取了哪些方式呢?我觉得主要是两大部分。
第一大部分,我们面向开发者进行了一个沉淀,给了大家一个比较顺畅的交流方式。一方面大家可以相互交流,另一方面我们可以把大家的提问和回答,以及学习和分享的内容,进行沉淀。我觉得这个很重要。
另外一部分,我们会组织线上或线下的活动,让整个的圈子有一个扩展。我们面向的群体也主要是两个部分,第一个部分是开发者,我们希望开发者能够有一个更低的、更容易的入门门槛,有更多的开发者来加入 Flink 这个项目。另外一方面面向的是用户,用户拿到更多的案例和资料,能够更便利地去使用 Flink。
这两者之间,其实也是可以有一个正向反馈的,使用的用户越多,那我们开发者的成就感就越大;而我们的开发者越多,我们的用户使用软件的信心也会越高。我们能够通过左边的手段去做到右边的用户增长,从而把恶性循环转到正向循环。
下面再给大家介绍一下我们的做法和遇到的困难,以及是怎么样去解决的。
从整体来看,我们在开发者沉淀这部分,做了这四件事情:
首先我们使用钉钉先去创建了一个社区的交流群,这个群主要是用来进行技术直播,并且给大家一个更方便交流的空间。
第二,我们创建了一个微信的公众号,公众号会有一些比较新的有关社区的资讯和相关的技术类文章。
第三,我们把这些直播和公众号文章沉淀下来,组织成了一个中文学习的网站,作为一个统一的入口来解决中文资料少、内容分散等相关问题。
第四方面,我们通过 Apache Flink 项目官方渠道创建了中文的文件列表,这样我们可以把问答相关信息进行沉淀。
接下来我们分别来看一下这四件事里都有哪些坑、我们遭遇过哪些困难。
因为 Apache 的项目层出不穷,如果其它的小伙伴也希望将一些新生的欧美项目本土化去推广和落地,那我们之前所面临的、遇到的困难,或者踩到的一些坑,大家都可以避免。
首先在学习网站的建立部分,我觉得是把欧美的项目本土化的一个非常典型的过程,我们在这里也犯了一些很典型的错误,所以重点向大家介绍一下。
首先最开始创建这个网站的时候,我们其实没有拿到官方的授权,也就是运营的不合规。我们当时的名字叫 Flink China,所以接到了 Apache 软件基金会的警告邮件。
这是一个很典型的问题,我们有一个热切的心,想做一件很好的事情,但还是需要合理合法的途径跟手段。Apache 软件基金会有非常充分的流程,它也很鼓励大家去做本土化然后进行推广。所以在收到网站警告后,我们开始和社区交流,申请官方的授权,包括之后网站的运营等相关的情况,我们都会跟社区进行交互。
那这个过程中,有关网站的条件和标准也还是有很多相关要求的,比如建网站需要什么条件,要使用 Apache 项目的 logo 需要什么流程等等。这个是网站的第一个阶段,虽然创建了网站但由于运营不合规经历了用户的流失,也算是踩过的一个坑了,但这对我们也很关键,促使了我们在后续的中文社区建设过程当中,更频繁地和官方的社区进行互动。
第二个坑,是当时我们把服务器放在了中国香港,没有放在内地。当时的考虑是这个中文的网站也不只是大陆的同学们会看,可能海外的一些同学们也会看,但服务器放在外面的问题是会被墙掉。这也是一个经验,当时我们的日访问流量已经达到5000,但是不得不换掉一个域名。
第三个就是域名,ververica.cn。这里头的问题实际上是说,当有一个公司在后面支撑运营的时候,使用了 ververica 这个商业化的名称,那在这个域名里面就既有开源的内容,又有一些商业化的信息,因此这个定位存在着不清晰的问题。
关于这点,我们也是跟 Flink 的官方社区进行了讨论,从今年的 7 月份开始,全新的推出了 flink-learning.org.cn 域名。这个 Flink-learning 网站是社区正式投票通过的一个域名,而且这个域名有中英文两个不同的版本,主要提供 Flink 学习相关的资料,分成技术资料和企业实践,包括文字和视频。另外就是还会承载社区的一些活动。
所以我们从学习网站的建设来看,是有一个非常典型的过程。从一开始我们有一些"游击队"式的打法,然后逐渐地积累经验,换成正规的方式。
第二个方面,我认为是钉钉群的建设。当然用微信群也是没有问题的,但钉钉的一个好处是同时可以发起和进行直播。我们现在整个中文社区在钉钉群上面,两个大群总计应该会有 15000 人左右的规模。我们在钉钉群上主要用来做答疑、直播、互动,包括一些线上线下的信息传递,这个是我们建设钉钉群的目的。
第三个方面,是建立了中文邮件列表。我们发现在钉钉群里有很多同学问技术相关的问题,但这种即时通讯的群有个问题,就是聊天刷屏的人比较多比较快,信息混杂,我们用钉钉群进行这种Q&A的沉淀和积累,其实并不是特别的合理。
通过搜索聊天记录查找一个问题非常难,并且聊天记录保留的有限。所以我们和官方社区讨论,如果只有英文的邮件列表,很多在语言上有差异的同学可能就不想问了。
所以我们建立了中文邮件列表来做技术沉淀,并且让国内的开发者或者是使用者,能够感受到更多官方的参与感,而不是说中文社区只是自己玩儿自己的和官方社区脱节。我们可以看到在 Flink 的中文邮件列表里已经沉淀了 1600 多个相关的话题,如果大家对Flink 有兴趣的话,有一些问题也可以到上面先进行查询。
第四方面,是举办一些社区的活动。我们前面讲的三个方面,主要是为了降低入门的门槛,并且给大家建立一个交流沟通的方式、一个阵地。
而社区活动则是另外一个维度,是为了扩大整个相关社群的影响力,让更多的人能够知道有 Apache Flink 这么一个很先进的计算引擎。另外也是让大家有面对面交流的机会。
由于疫情影响,大家现在只能通过线上交流,并且效果也还不错。但我们认为人毕竟是一个社会的动物,线下的交流很有必要,因此我们尝试通过一系列的活动,来对整体社群进行推广和扩充。我们组织的社区活动主要有以下的几个方式,大家也可以参考。
第一个是 Apache 官方的会议。Apache 为了推广在全球的影响力,在全球有不同的分舵,欧洲会议、亚洲会议等等。官方会议是一个非常重要的渠道,因为带着“官方”字眼的都会让大家觉得更加的正式和更加有意愿去参与。除此之外,我们还会组织一些小型的 Meetup 会议,不需要太多人,大家进行一些简单的交流。
第二个方式是我们会组织一些挑战赛。会议也好、Meetup 也好,主要还是面向用户群体来介绍社区未来的发展规划、新功能,或者大厂的使用经验、遇到哪些问题、解决的方案是什么等等。这些都更多的是偏向于用户层面。
而我们的挑战赛更多的是面向开发者、面向没有毕业的学生群体。学生是行业或者说祖国的未来嘛,我们其实也是在做开发者的培养。为了让挑战赛有更好的效果,我们也会配套的做一些训练营。这些都相当于对 Flink 本身的技术层面进行一个相关的推广。
通过上面一系列的工作之后,我们拿到了一些比较不错的成果。
这张图显示的是中文社区建立之后,Apache Flink 的 GitHub Star 增长速度。这里并不是说完全是因为我们的推广大家才会 star 我们的项目,但这个也可以从一个侧面反映,在有一个中文的社区后,会给整体的 Apache 官方社区所带来的影响力上面的提升。
另外的话,我们可以看到 Flink 官方网站的访问量中国已经超过美国了,大家去谷歌或者百度 Trend 上去看,也能看到 Flink 在中国的热度是非常高的。
在最新的 ASF 2020 财年报告上,我们可以看到 Flink 应该是连续第三年蝉联最活跃的 Apache 邮件列表,而访问量和提交的次数也是在所有项目里排名第二。这是我们取得的一个成果。
现在我们回顾一下发现,做中文社区相当于是将欧美或者海外的项目本土化,而首先最需要解决的问题是怎么样能够把入门的门槛降低。
我们采取的手段,就是建立社交群体,让开发者和用户有一个交流的阵地,然后组织一些相应的直播,让大家有一个中文的相关的知识的获取的方式。
另外就是通过微信公众号,去传播一些技术类的文章,并且还建立了一个中文的学习网站,但如果不是专门的组织后者团队可能相对困难。
大家也可以通过公众号加上B站等视频网站的方式,去进行资料的沉淀。因为我觉得最主要的还是怎么样沉淀资料,而且有一个统一的入口让一些初学者或者爱好者能够方便的获取到信息。这里还有一个很重要的点,就是一定要走官方的渠道,一定要和官方的社区联系。
另外就是面向我们的用户和开发者群体,组织一系列线上线下的活动,来不断扩大项目在本土的影响力,形成开发者和用户群体同步扩充的正向循环。
最后稍微打一打广告,Apache Flink 中文社区在今年的下半年,还会组织一系列的社区的活动,包括我们现在正在进行的挑战赛,还有在各地的 Meetup 希望大家来参加。
另外我们社区也在招募一些志愿者,也期待着更多的同学们来帮忙,进行Flink社区英文的翻译以及技术文章整理等相关的工作。
相关阅读:
活动回顾丨ALC Beijing 首场 Meetup:《开源到底有多难?》
易观CTO郭炜:开源,不是天才的甜点,而是勤奋者的盛宴
活动中更多嘉宾的分享以及圆桌讨论内容,近期会于 SegmentFault 社区以及 ALC Beijing 官方渠道陆续进行发布,敬请期待。
SegmentFault 作为本次活动以及 ALC Beijing 的媒体合作伙伴,一直非常重视开源文化以及开源生态的传播与建设,并于今年 5 月份推出了「SFOSSP - 开源项目扶持计划」,目前已经助力数十余个开源项目进行宣传推广。
后续也将和 ALC Beijing 以及其他开源社区、开源项目团队、开源从业者共同打造开源生态,解决开源过程中的实际问题,敬请期待。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。