首先,我必须感谢 Mel Chua 访问康涅狄格州,并启发/促使我更深入地思考开源和学术界如何协同工作以完成教育。我相信我现在对学生和学者参与开源项目有了更清晰的认识。
乍一看,学生参与开源项目似乎应该相对容易实现。当然,从教学的角度来看,存在一些问题,例如选择项目、项目的学习曲线、寻找导师、确定学生可以参与的方式、弄清楚如何评分等等。但这些事情都是可以克服的。
但近年来,河流中出现了一些岩石,使得驾驭开源参与的潮流比最初看起来更加棘手。
当两个群体合作时,他们通常这样做是为了实现共同的目标或为了两个群体的目标而共同努力。在这种情况下,两个环境的目标不同。开源环境旨在创建满足用户需求的产品。学术环境旨在培养具有特定知识和技能组合的学生。为了使学术界和开源项目之间的合作取得成功,需要理解这些差异。
开源社区希望看到更多开发人员为其项目做出贡献(我也希望如此)。开源社区中的一些人将学生视为未来开发人员的潜在来源(我恰好同意)。学术界将开源视为学生获得现实世界经验、学习专业精神以及获得一些软件熟练程度证明的机会,他们可以向潜在雇主展示这些证明。做出贡献是有帮助的,但不是必不可少的。
开源和学术合作能否实现两个群体的目标?我认为可以,但是环境之间存在一些差异,这些差异带来了……嗯,我们称之为“学习机会”。为了使特定的合作取得成功,如果两个群体都理解这些差异,这将有所帮助。
在与 Mel 交谈时,很明显地看到了这两个环境在节奏、计划和约束方面的差异。开源方式非常具有机会主义和灵活性,而学术界则非常有计划性和结构性。开源方式强调短期优化和立即利用资源(例如,开发人员的专业知识、时间或资金)。资源在开源环境中可能会相对快速地出现和消失。由于资源和参与者的流动性,很难估计长期(一年或更长时间)的结果。这并不是说开源项目不做长期规划,而是说开发过程足够灵活,允许项目随着新机会的出现而改变路径或目标。
学术界围绕长期优化和随时间分配资源的概念而建立。学者们拥有一组相对固定的资源(例如:时间、教师、学生),这些资源在长期(几年到多年)内变化不大。此外,学者们在一系列约束下运作。学术资源受到时间限制,例如学期安排和课时。它们受到课程大纲、学习成果和评分的约束——有义务遵守这些规定。这些事情通常无法在三到四个月的时间范围内更改,有时甚至一年也无法更改。这限制了学术界利用开源自发产生的机会的能力。
这两个环境的节奏也不同。开源环境往往节奏快且不太可预测,努力模式是间歇性的,因为人们有更多或更少的可用时间来贡献。学术界的节奏要慢得多(有些人可能会说是冰川般的速度),可预测性更高。
学术日程安排当然是可预测的。课程表通常在学期开始前六到八个月制定。此外,课程计划涵盖学生在校期间的全部四年。因此,必须提供课程以满足学生入学时制定的课程。此外,课程更改通常在四年内分阶段进行。
显然,文化上也存在很大的差异。但我认为开源和学术领域之间的合作是可以奏效的,因为这两个群体之间也存在一些强大的共同点。开源和学术环境都渴望创造一些东西,生产出人们会使用的产品。这两个群体都热爱学习,并且都基于这样的理念,即某些东西(无论是知识还是软件)应该对所有人开放。这两个群体都渴望归属于一个专业群体,以专业人士的身份进行互动并参与持续的专业活动。有趣的是,我认为这两个群体都渴望自我指导并掌控自己所做的事情。
那么,作为一位试图让更多学生参与开源的教授,我还学到了什么?很多!
参与开源项目绝对对学生有益。我亲眼目睹学生获得了宝贵的专业知识和经验,通过参与开源项目,他们的技能得到提升,并形成了专业网络。许多学生受到参与开源项目的激励,这在传统课堂上是无法实现的。他们更好地理解了他们在课程中学到的那些看似深奥的东西的重要性。
设定期望很重要。期望很重要——对于学生和开源社区都是如此。为了支持成功的合作,上述文化差异必须被两个群体理解。从学术界和开源的角度来看,参与项目的实际方法和方式可能看起来非常不同。
我可以更具机会主义。我首选的方法是提前周密计划。与 Mel 的谈话让我意识到,有很多机会是自发出现的。只要稍加努力,如果我愿意改变——或放弃——我的计划,我就可以利用这些机会。
例如,在提前两天通知的情况下,Mel 和我设立了一个 Hack Share,我们邀请了 Sebastian Dziallas 来现场进行黑客马拉松(现场和面对面),并教学生如何打包应用程序。我本来不会尝试自己做这件事,因为我假设我需要提前时间来宣传、获取资源、找到场地——所有细节。然而,Sebastian 的演讲非常受欢迎,并且在一个小范围内取得了巨大的成功。
我能获得更多人参加吗?当然可以!但不在我的机会窗口内。由于计划时间很短,Hack Share 只接触到少数人。但如果我因为机会的紧迫性而拒绝尝试,那么这个活动可能根本不会发生。权衡是在规模较小的情况下接触到较少的人,但却有更多的体验。我与 Mel 的对话——以及我们通过这个快速形成的活动取得的成功——鼓励我利用出现的各种机会。
学术界需要确保回馈开源社区。学生参与开源软件开发的一个非常真实的危险是,学生将从社区学习,从社区获益,然后不向该社区提供任何回报。这违反了开源之道,并且很容易破坏开源/学术合作。在我看来,教授有责任找到一种方法来为开源社区提供一些回报价值。这种价值不一定需要以代码的形式出现,并且可以很容易地采取文档、wiki 管理或其他需要的任务的形式。
我相信我们让学生参与开源项目的努力将在长期内为开源社区带来回报。可能需要很多年才能收获这些好处。我这样说有几个原因。首先,大多数学生主要专注于他们的学位,然后是找到工作。这些人(理所当然地)将大部分精力放在建立事业上。这意味着至少在毕业后一年(甚至更长时间),这些人可能没有时间为开源项目做出贡献。
其次,我相信学生们会为开源事业摇旗呐喊,但这需要时间才能让这种理念传播开来。请记住,学生不是专业人士,除了所有其他课程的材料外,他们还在学习如何公开参与。与经验丰富的开发人员相比,他们进入开源领域的时间通常要长得多。
最后,与开源世界相比,学术界的步调就像蜗牛一样缓慢。教授们需要时间来理解让学生参与开源所提供的机会——以及所需的社会义务。他们甚至需要更长的时间来改变自己的课程以纳入开源;更长的时间才能将开源整合到整个课程中。
这些观察结果对开源社区既有积极的影响,也有消极的影响。坏消息是,在不久的将来,不太可能出现大量熟悉开源之道的大学毕业生涌入开源开发人员行列。更糟糕的是,计算机专业的学生人数尚未从 2000 年代发生的急剧下降中恢复过来。
好消息是,可能会有少量受过大学教育的开发人员涓涓细流般涌入,并且这小股细流可能会持续多年。我希望随着口碑传播以及更多教授采用让学生参与开源项目的方法,这股细流将会增长。
我们努力使开源在大学校园中更加普及的一个重要优势是什么?计算专业的学生群体以及更广泛的人群对开源的意识已经日益增强。学生们对参与开源项目感到兴奋,无论它是如何引入的。希望这种兴奋能在学术界——在课堂内外——燃起星星之火。
11 条评论