马道长和开源之夏的故事

开源之夏 2024

我可能是唯一一个作为活动组织方、参与社区负责人和项目导师三重身份参与过历届开源之夏活动的人,对于开源之夏的感受(感情)颇深。 这样一个大型的开源活动能坚持至今实属不易,各种辛酸只有经历过的人才知道,写一些想法希望开源之夏越办越好。


2020 年我回到华为负责 openEuler 社区的运营,这时候中科院软件所找到我希望和 openEuler 社区开始合作举办开源之夏活动,当时想法也比较简单,是希望参照 Google Summer of Code(GSoC) 的模式针对中国高校学生开展参与开源社区的培养,毕竟国内的学生想参与 GSoC 的难度非常搞。万事开头难,在开源社等国内一众活跃社区的支持,活动还是启动起来。但是理想和现实之间的差距还是有很大,经过几年的摸索逐渐成型。从默默无闻到成为国内最具有影响力的开源编码活动,我个人最敬佩的是软件所同事始终坚持初心,把教育高校学生参与开源社区作为活动的第一位,努力培养国内开源生态发展的基石。 这份初心保护了活动始终坚持在自己的道路上前行,没有盲目扩大,始终把学生培养和项目质量放在首位。

当然逐渐国内也出现了一些模仿的活动,很多类似的活动都有背后自己的目的,有的是为组织方赚声誉的,有的是为了推自己代码托管平台的,当然更多的是带着商业目的在里面。能坚持初心做好一件事情实属不易,中国科学院软件研究所算是当前国内开源生态中的一股清流,成为国内开源社区的一面旗帜和中流砥柱。当然还有 “一生一芯” 等活动都搞得相当不错,清华大学陈渝老师每年的操作系统竞赛和训练营也是搞得风生水起,相比其它高校的竞赛让人真心觉得国内计算机教育和科研的落后是有原因的。


作为参与社区的负责人,我觉得开源社区有这样活动的机会非常难得,但一定要正确看待活动给社区带来的价值。 参与开源之夏,并不是要借此机会找到免费的劳动力完成社区项目中某个特性的开发,而很多社区的参与者都是这样想,也有把它作为完成社区运营指标的一个方式这更让人心痛。我觉得作为项目方是要利用活动的影响力找到对社区项目感兴趣的学生,让学生能够借此机会和社区有更充分的接触,在完成社区任务的同时和社区建立起感情,能在活动结束后留下来成为社区的中坚力量。社区(Community) 是由人组成的,更多有共同兴趣的人长期聚合在一起才能形成社区发展的动力。Linux 社区也再尝试引入 Rust 语言,希望能够吸引更多的年轻人参与到社区中来是其中一个重要的原因。

所以对于社区的导师我有几个建议,

  1. 不要在意学生简历中所在学校是 985 还是 211,还有一些无谓竞赛的成绩,目标是找到合适的人。 选择学生之前,最好导师和每个同学开一个小时的会议, 让学生充分介绍一下自己,挑一个对技术感兴趣、有学习能力、爱分享和有热情的同学。开源之夏活动后,这样学生有希望留下来成为社区的一个长期贡献者。 当然不是每次都能看对人,但是每年都有一个选择的机会。
  2. 在开发的过程中,每周和同学通过会议进行沟通。 根据我的经验,每周抽出一个小时和同学开个视频会议即可。让参与的同学感受到导师有真正的辅导, 而不是在任务最后只 Review 提交的代码。 只有人与人真正的交流,才能让同学感受到开源社区,才能有机会让学生留下来成为长期贡献者。社区(Community)是人和人的交集,只有交流才能让学生真正理解开源、社区这种开发形式的魅力。
  3. 既然是导师,就有培养学生的目标,不要把参与项目的同学当做是外包。 要把方案的设计权交给学生,让他们有 Research 的机会, 让学生提出解决思路,通过充分的讨论确定方案。让他们通过这次活动掌握如何学习和解决问题的方法,成长为一名合格的开发者,而不是一个完成任务的机器人,要让学生感受到导师的指导和信任。
  4. 因为 3 ,项目的任务要有一定的难度,简单的任务并没有必要放在开源之夏活动中。 在项目的开发目标中分解出一个有意义、有难度和需要探索的任务,这样的任务更合适培养学生参与。 即使最后同学没有完成任务,参与其中的学习过程也会其对成长有非常大的帮助。教书育人,育人远比教书更重要。

作为项目的导师,也有一些话想对参与的同学讲,

  1. 开源之夏是不是一个竞赛。如果有明确的就业和升学目标的同学,参与开源之夏是性价比非常低的。 去年我在南京大学参加 CCF 开源校园行的活动中,我非常认可其中一位老师的观点,参与开源对于一些名牌学校学生来讲是性价比非常低的事情,对就业和升学都没有明确的帮助。也许这也是高校老师少参与开源社区的原因吧,对于其发论文拿项目没有啥帮助。
  2. 开源之夏是适合大三、研一的同学参与。大三如果确定不考研,希望能早点接触到这个行业,开源之夏是非常好的一个渠道,有机会通过开源社区同行业中的精英人群接触,对于今后的发展是非常有价值;对于研一的同学, 已经有自己的科研方向,在学习和科研任务完成有余力的情况下最适合参与开源之夏活动, 可以在目标的领域里面寻找合适的项目和社区,通过更多的接触实际生产了解行业或产业的发展。
  3. 开源之夏是一个学习的机会,要利用这个机会培养自己学习和研究问题的能力,而不是当做一个竞赛,拿名次得奖金。 要提出解决问题的思路,根据导师的建议学习相关的知识,掌握学习方法培养解决问题的能力才是最关键。
  4. 开源之夏是一个培养社交能力的机会。在一个开源社区里面的发展有很多基本技能,譬如正确的编写文档,简洁的描述问题,面对面沟通技巧等都是可以通过和导师的活动学到很多。

今年我依旧作为导师参与,当然前期筹划的时候我也有一些参与。希望能继续和同学一起在 Mega 项目上做一些有意思的尝试。