对于Nimish Jain来说,这个夏天参与FreeBSD的工作意味着近距离观察他长期以来一直好奇的事情:大型、复杂的软件是如何协同工作的。
“我一看到‘FreeBSD’这个词,就决定必须申请,”他说。
这个决定让他度过了一个在操作系统多个领域工作的夏天,向经验丰富的FreeBSD贡献者学习,并看到自己的代码进入了一个被全世界使用的项目。
Nimish并不记得有某个特定时刻激发了他对系统编程的兴趣。相反,这种兴趣源于他对软件更广泛的好奇心。
“我一直好奇大型软件是如何协同工作来完成一项任务的,”他说。
这种好奇心,加上他使用FreeBSD的经验,让基金会的实习项目立刻脱颖而出。这次实习也让Nimish有机会参与项目的多个领域。整个夏天,他的工作包括升级虚拟化驱动、研究通过网络连接文件系统的方法,以及将Raspberry Pi安装程序移植到FreeBSD。
这种多样性让他不仅有机会编写代码,还能更好地理解大型操作系统不同部分之间的交互方式。
对Nimish来说,实习中最有成就感的时刻出现在他提交工作并等待反馈之后。
“这次实习最有成就感的部分,就是醒来看到一封邮件说有人审查了你的工作,”他说。
代码审查成为学习过程中的重要组成部分。观察经验丰富的贡献者如何处理同一个问题,常常让他接触到未曾考虑过的解决方案。
“当别人指出我遗漏的优雅方法时,我常常感到欣喜,”他说。
当然,还有一个许多开发者都熟悉的特别令人满足的时刻:代码一次运行成功。
在操作系统内工作也让 Nimish 接触到了大规模软件开发中最大的挑战之一:复杂性。
由于系统中有太多内容需要理解,他花了大量时间阅读 FreeBSD 内部实现并提问。
编写代码本身是一个迭代的过程。
“你先写一个草稿,然后完善,再反复审视,直到你认为逻辑合理为止,”他说。“经历所有这些阶段既艰难又有趣。”
这个过程帮助他认识到,为大型项目做贡献不仅仅是立刻知道正确答案。它需要花时间理解现有代码、提出问题、测试想法、吸收反馈,并不断完善解决方案,直到它能在更大的系统中正常工作。
今年夏天,Nimish 还参加了 BSDCan 和 FreeBSD Developer Summit,在那里他有机会结识贡献者,并聆听关于项目未来的讨论。
“看到这么多对 FreeBSD 感兴趣的人分享他们对未来发展的想法,真是太棒了,”他说。
他特别喜欢黑客休息室里的编码冲刺活动,贡献者可以在正式会议之外一起工作并交流想法。
其中一个引人注目的演讲探讨了即使机器宕机也能保持 SSH 连接存活的方法。但对 Nimish 来说,最大的收获之一就是结识社区中的其他成员,并了解他们如何解决问题。
“结识不同的人,了解他们对我所关心问题的看法,这帮助我决定要做什么以及如何着手解决。”
了解开源如何协同运作
在实习之前,Nimish 倾向于将开源项目视为相对独立的个体。参与 FreeBSD 的工作改变了这种看法。
“这次实习让我意识到开源生态系统有多么庞大,”他说。“别说不同的项目了,FreeBSD 本身就有那么多子系统!”
他在代码库中越深入,就越能看到不同组件之间的联系。一个区域的改动可能依赖于另一个子系统、影响另一个项目,或者需要在多个地方进行更新才能让一切按预期运行。
“一切都紧密相连,我们往往没有意识到让一切正常运作需要什么。”
这种相互关联性成为他实习中最大的收获之一,也是让大规模参与 FreeBSD 工作如此有价值的原因之一。
对于有兴趣首次为 FreeBSD 做贡献的学生,Nimish 建议从好奇心出发,而不是担心自己是否事先了解一切。
“我会说,花时间去探索这个系统,”他说。
阅读代码往往是过程的起点。
“通常是在阅读代码的过程中,你开始向自己提问,”他说。“这些问题会引发讨论、协作、困惑和开发。”
对 Nimish 来说,这些问题正是参与 FreeBSD 这类项目令人着迷的部分。总有另一个子系统需要理解,另一个关联需要发现,或者另一个值得探索的问题。
Nimish 计划在实习结束后继续为 FreeBSD 做贡献,尤其是在虚拟化方面。他也有兴趣最终探索 FreeBSD 的虚拟内存子系统。
展望更远的未来,他计划继续从事分布式系统编程,同时也为另一个长期兴趣留出空间:计算机视觉。
无论这条路将他引向何方,他的实习都给了他一些在课堂上难以复制的东西:编写成为主流操作系统一部分的软件的体验。
“看到你编写的代码被部署到主流操作系统中,并准备好被全球成千上万人使用,这太棒了,”他说。“在大规模环境下工作的技术挑战,在其他地方极为罕见。”
Nimish 也感谢那些帮助促成这段经历的人。他感谢 Siva Mahadevan 和 Ed Maste 提供了这个机会,并在整个实习期间解答他的问题,同时也感谢 Mark Johnston 审阅了他的大部分工作。
同样重要的是围绕工作本身的环境。
“这里的每个人都非常乐于助人,向任何人请教都不会觉得有障碍,”他说。
自由探索是他这段经历的另一个决定性部分。
“我认为这种情况也极为罕见。”
当被要求用一个词来形容他在 FreeBSD 基金会的工作经历时,Nimish 选择了一个简单的词:卓越。
对于一个在夏天开始时对复杂软件如何协同工作充满好奇的学生来说,这次实习提供的机会不仅仅是研究这种复杂性。它让他有机会深入其中,为之做出贡献,并帮助塑造未来的发展方向。
转载声明:本文为转载整理,原文版权归原作者及原站点所有。
原文来源:FreeBSD Journal
原文作者:Florine Kamdem;如有侵权,请联系管理员删除。