这是一个在开源社区内部教授大学课程的故事。去年秋天,我在波士顿郊外的一所工程学院奥林工程学院向一小群本科生教授了发布工程。目标是教会他们如何在不编写任何代码的情况下成为开源项目的功能性技术贡献者。为了激励其他人教授类似的课程,我将我们的经验写成了一个案例研究,分为三个部分:文化、技术和“实战”。
文化方面
我的学生都来自不同的背景,因此我们从学期开始就深入研究开源社区的一些文化特性,阅读了诸如《大教堂与集市》之类的文章。查看我们的阅读清单和第一次会议的笔记。
我们探讨了诸如“解决你自己的痛点”、“完全透明”和“尽早发布,频繁发布”等概念。(查看更详细的概念列表。)经验丰富的开源贡献者每天都在实践这些文化规范,并且常常认为这些规范是理所当然的,但是规范因社区而异,对于新手来说可能并不立即显而易见。当进入新环境时,重要的是要知道如何不冒犯他人。
技术方面
本课程的技术核心以一种奇怪的形式出现:打包——将应用程序放入发行版存储库的艺术。尽管打包任务是每个 Linux 发行版的核心,但在开源世界之外却很少见,因此许多(如果不是大多数)计算机专业的学生将永远不会体验到它。那么为什么要教打包呢?这是一项复杂的任务,它取决于了解和使用发布工程中的大量关键技能,但它也可以在很短的时间内完成,只需几个小时或几天——您不必等待整个 6 个月以上的发布周期。
例如,需要跟踪依赖项并使其保持最新,这意味着学生很快就会获得第一手知识,了解当开发人员独立决定破坏兼容性的 API 更改时会发生的混乱。需要维护补丁的准确性。需要切除捆绑的库,而不会损坏实际的应用程序。“文档”和“版本控制”以及“模块化设计”之类的东西变得痛苦地相关,而不是学生知道他们“应该”遵循但看不到原因的抽象价值观。但是,我想指出的是,这些材料旨在由经验丰富的打包人员和发布工程师教授;与许多艺术一样,工程最好通过学徒制来教授。自从我 16 岁以来,我一直在主要的开源项目(包括我的学生工作的 Fedora 项目)中从事发布工程,所以我能够指导他们完成。计算机科学教授可能希望找到一个或多个社区联络人来指导他们的学生完成这些活动。
真实项目和互动
作为他们的主要项目,我的学生打包了编程语言 io。为了方便团队合作,我要求他们使用 Etherpad(一种协作文本编辑器)编写配置文件。这样,他们可以随时查看其他学生在做什么,提出问题并展开对话。控制权不仅仅掌握在持有计算机的单个学生手中。这个实验效果很好。他们带着一套非常精确的问题和一个几乎完整的配置文件回来了,这比我预期的要远。我们最终发现该软件包已经是 Fedora 的一部分。(阅读更多详情。)
到学期末,我的学生主要通过 IRC 与开源社区互动,但我也想向他们展示线下活动也很有价值。因此,当 Fedora 工程经理 Tom Callaway 在附近的西新英格兰大学发表演讲时,我们组织了一次实地考察。Tom 的演讲“这就是你失败的原因”(灵感来自 《开源之道》的这一章)非常受欢迎。让其他人向我的学生解释现在不要做错事是很有力量的。西新英格兰大学的学生似乎也这么认为。
感谢许多老师
教授开源最好的部分之一是您的学生可以向许多人学习,而不仅仅是您。我要感谢 Tom "Spot" Callaway 和所有在线回答我学生问题的 Fedora 贡献者,以及 Allen Downey、Heidi Ellis 和 Zhenya Zastavker 教授,感谢他们成为我教学的榜样和导师。
3 条评论