围绕谷歌编程之夏构建社区
作者:Pedro Giffuni
FreeBSD 每年都作为导师组织参与谷歌 Summer of Code(简称 GSoC),这是资助大学生参与开源项目的计划。这是让学生参与软件开发的好方式,同时帮助通常资源紧缺的社区获得开发资金。
就 FreeBSD 而言,我们非常幸运。没有多少项目能像我们这样年年入选。我们的成功部分无疑来自拥有一个极具影响力和创新性的优秀项目。另一部分成功则来自背后始终如一的管理员 Gavin Atkinson,以及一群愿意指导学生的出色导师。
我承认,自己是在帮助学生完成 GSoC 项目后成为 FreeBSD 提交者的。我不是导师,只是帮忙。真正的导师认为我可以成为好的提交者;如今 1300 多次提交之后,加上偶尔的失误,我希望他仍然这么认为。那个学生没有获得提交权限,但他找到了新工作,最终成为一个相关开源项目的主要贡献者,所以我认为这次经历对参与的每个人都很令人满意。过去三年我一直是谷歌编程之夏的导师,今年开始参与 GSoC 的管理工作。
那么真的值得吗,还是我们只是在从谷歌那里捞钱?
绝对值得,但可能不是大多数人想的那样。学生的代码很少能进入 FreeBSD 主代码仓库。FreeBSD 已成为极其复杂的项目,要达到将新代码纳入主仓库的代码质量并不容易。Bugzilla 数据库——如果你有勇气去看——有许多悬而未决的问题附带看似能修复的补丁,但如果我们盲目提交,会打开更多漏洞。
GSoC 让学生接触一个广泛部署和测试过的代码库,任务往往具有挑战性。作为 FreeBSD 开发者,我学到了许多书本上不教的东西,从这个意义上说,参与项目意味着作为专业人士不断学习和成长。
指导项目
任何 GSoC 项目的关键在于指导:没有导师就无法承担任何项目。事情就是这样,我们也没有多少简单的任务交给学生,因此有一位深入了解现有代码库的导师至关重要。
我有幸在大学层面教过书,GSoC 项目中与之相似的是,你在过程中学会教学/指导。和现实生活中一样,学生并不总是真正掌握他们自以为掌握的东西。和现实生活中一样,学生和导师并不总是相互理解,如果看不到对方的面孔更是如此。项目可能失败,但失败本身也有价值。
我的第一个项目失败了,虽然我认为这并非我的过错,但我仍然认为我们不应害怕失败。我们双方都在过程中学到了东西,即使学生并不认同自己表现不佳,他后来又申请了另一届 GSoC 加入我们,所以这远非无法恢复的创伤。就我而言,每次指导都让我不断学到新东西。
成功项目背后真正的关键不在于代码;关键在于回答这些问题:学生是否理解和学到东西?学生是否从参与社区中获得价值?以及偶尔冒出的——“如果我们尝试……会不会很有趣?”
当然,代码最终可能成形,而且总有可能其他人会觉得它有用。我个人曾从另一个项目的 GSoC 中拿来代码,经过大量努力后导入 FreeBSD。最终我回退了它,又重新修复并再次导入,但是……嗯……如果让我从零开始写,根本不会发生。
我们还努力让学生融入一种文化:让他们使用与我们相同的工具,大量使用版本控制,代码经过审查,并鼓励与其他社区成员互动。令人失望的是,有些其他项目——这里不细说——完成 GSoC 时没有状态报告,也没有任何作为项目一部分开发的代码痕迹,无论好坏。
我们注意到的另一件特别有意思的事是,当其他项目——可能是但并非一定是某个 BSD 变体——未能入选 GSoC 时,我们可能会迎来一批有那些项目经验的开发者涌入。这很棒,因为我们为自己的开发流程引入了重要的多样性:我希望我们能开始与其他 BSD 项目合作,也与相关的代码库 Illumos,或 Debian kFreeBSD、UbuntuBSD 等变体,甚至 Apache Cloudstack 等不同代码库合作。我们显然还没有穷尽所有可能。
我们如何选择
导师始终是关键:每年都有稳定的学生流入,但开发者不会凭空出现。选拔过程包括导师为他们最喜欢的提案投票,但最终取决于能否为项目找到导师。
随着我们在 GSoC 计划中不断前行,我们改进了早期指导等概念,即让潜在学生在公开场合讨论他们的提案,并在提案提交前与可能的导师讨论。我们确实偏好有 FreeBSD 社区经验的学生,以及已经有版本控制经验的人,无论是 subversion、git,甚至 perforce。如果学生已经使用过 FreeBSD,知道如何重新编译内核,或已经提交过补丁,也是个好迹象。
FreeBSD 当然相当特殊,因为它是一个完整的操作系统:虽然只影响内核或只影响用户空间的项目并不少见,但一个项目跨多个领域来实现目标也不意外。虽然我们不会放弃任何通用项目,但通常会偏向那些别处无法完成的项目,因此任何与 FreeBSD 特有技术(如 capsicum、netgraph、netmap、bhyve、Jail)相关的工作,甚至不太特有但相关的技术(如 ZFS 和 DTrace),都更可能引起我们的注意。
截至本文撰写时,我们收到 36 份提案,接受了 15 份。我们保守了一些,但我希望我们抓住了用户最希望在 FreeBSD 中看到的精华。
从 GSoC 毕业
我们有学生多次参与,他们认为这是一段很棒的经历,这最终决定了一个项目是否完全成功。最近谷歌决定学生只能参与两次该计划。这是可以理解且公平的,虽然我们因此失去了一个非常有趣的项目,但我们只需记住,我们不是为了钱,而是因为喜欢。当出现特别的项目时,我们终会找到其他方式资助。
让学生参与会议、与其他开发者互动,甚至帮助他们联系使用 FreeBSD 的公司,对社区至关重要,这是我们仍在学习的过程。
衷心感谢,谷歌!
Pedro Giffuni 是哥伦比亚国立大学的机械工程师。他在 14 岁左右开始接触计算机,那时他在 Tandy Coco 上 Microsoft Basic 的早期时代与 Intellivision 之间徘徊。Pedro 第一次接触 FreeBSD 是在 1997 年,他在波哥大的学校里通过当时“高速”的 19.2K 调制解调器下载软盘安装了 2.1.5-Release。那时他已经非常精通 Pascal 和 Fortran 编程,后来发现这些基本毫无用处。在乐趣远多于痛苦的探索后,Pedro 自那以后无需尝试其他类 Unix 变体。
最后更新于