传统软件开发课程中一般使用小型、简单的项目来进行训练,学习者接触不到真实的软件项目。在课程中引入开源软件可以改善这个问题。有大量的开源软件,不同领域、规模、复杂度;展示真实世界问题的成熟度和广度;著名的开源软件是由积极的全球社区和开发者来维护的。

在教学中,给予学生选择开源软件项目的自由是很重要的。也要考虑项目和课程的适配。参与开源软件不止提高了技术能力,还提高了社交能力。课程的时间限制会对学生参与项目造成影响。

目前这个领域关注的问题有:如何选择适当的项目(不宜过于大和复杂,也不宜过小和简单),项目的规模是学生参与的明显障碍;使用的项目应当有活跃的问题跟踪,使用版本控制系统,有代码审查;每个项目至少要有一位导师;学生评分机制,评分可以基于个人努力,包括实施、排错、测试,还有架构,评分也可以基于团队(演讲,代码分析)和个人(代码审查,项目参与)。

如何选择一个好的开源软件项目?给学生选择的自由度,但要注意项目的活跃程度、流行程度、相关性;项目维护人员的响应速度对学生完成任务很重要;寻找一个导师,例如项目里的人员。

学生接触开源软件的好处。接触真实的项目,提高技术能力;接触到当前流行的技术和工具;获得对不同框架和API的经验;在和社区沟通中学习和发展社交技巧;在开源项目中掌握的工作能力可以为真实工作做准备;开源软件项目可以激励学生,做贡献使人感觉良好;增加个人简历的专业背景,更容易获得工作机会;新一代的学生对于真实项目更感兴趣,有助于老师提高课程效果。

使用开源软件的挑战。如何选择项目是一个问题,需要识别学生可以完成的任务,列出一个清单;寻找项目、理解代码、寻找做什么是正确的、提交和接受审查、放到项目中,这都是学生面临的阻碍;时间是一个问题,如何让学生更快的参与项目。