学生参与开源项目(教授的视角)

还没有读者喜欢这篇文章。
Participation text on a field

Opensource.com

首先,我必须感谢 Mel Chua 访问康涅狄格州,并启发/促使我更深入地思考开源和学术界如何协同工作以完成教育。我相信我现在对学生和学者参与开源项目有了更清晰的认识。

下载免费电子书乍一看,学生参与开源项目似乎应该相对容易实现。当然,从教学的角度来看,存在一些问题,例如选择项目、项目的学习曲线、寻找导师、确定学生可以参与的方式、弄清楚如何评分等等。但这些事情都是可以克服的。

但近年来,河流中出现了一些岩石,使得驾驭开源参与的潮流比最初看起来更加棘手。

当两个群体合作时,他们通常这样做是为了实现共同的目标或为了两个群体的目标而共同努力。在这种情况下,两个环境的目标不同。开源环境旨在创建满足用户需求的产品。学术环境旨在培养具有特定知识和技能组合的学生。为了使学术界和开源项目之间的合作取得成功,需要理解这些差异。

开源社区希望看到更多开发人员为其项目做出贡献(我也希望如此)。开源社区中的一些人将学生视为未来开发人员的潜在来源(我恰好同意)。学术界将开源视为学生获得现实世界经验、学习专业精神以及获得一些软件熟练程度证明的机会,他们可以向潜在雇主展示这些证明。做出贡献是有帮助的,但不是必不可少的。

开源和学术合作能否实现两个群体的目标?我认为可以,但是环境之间存在一些差异,这些差异带来了……嗯,我们称之为“学习机会”。为了使特定的合作取得成功,如果两个群体都理解这些差异,这将有所帮助。

在与 Mel 交谈时,很明显地看到了这两个环境在节奏、计划和约束方面的差异。开源方式非常具有机会主义和灵活性,而学术界则非常有计划性和结构性。开源方式强调短期优化和立即利用资源(例如,开发人员的专业知识、时间或资金)。资源在开源环境中可能会相对快速地出现和消失。由于资源和参与者的流动性,很难估计长期(一年或更长时间)的结果。这并不是说开源项目不做长期规划,而是说开发过程足够灵活,允许项目随着新机会的出现而改变路径或目标。

学术界围绕长期优化和随时间分配资源的概念而建立。学者们拥有一组相对固定的资源(例如:时间、教师、学生),这些资源在长期(几年到多年)内变化不大。此外,学者们在一系列约束下运作。学术资源受到时间限制,例如学期安排和课时。它们受到课程大纲、学习成果和评分的约束——有义务遵守这些规定。这些事情通常无法在三到四个月的时间范围内更改,有时甚至一年也无法更改。这限制了学术界利用开源自发产生的机会的能力。

这两个环境的节奏也不同。开源环境往往节奏快且不太可预测,努力模式是间歇性的,因为人们有更多或更少的可用时间来贡献。学术界的节奏要慢得多(有些人可能会说是冰川般的速度),可预测性更高。

学术日程安排当然是可预测的。课程表通常在学期开始前六到八个月制定。此外,课程计划涵盖学生在校期间的全部四年。因此,必须提供课程以满足学生入学时制定的课程。此外,课程更改通常在四年内分阶段进行。

显然,文化上也存在很大的差异。但我认为开源和学术领域之间的合作是可以奏效的,因为这两个群体之间也存在一些强大的共同点。开源和学术环境都渴望创造一些东西,生产出人们会使用的产品。这两个群体都热爱学习,并且都基于这样的理念,即某些东西(无论是知识还是软件)应该对所有人开放。这两个群体都渴望归属于一个专业群体,以专业人士的身份进行互动并参与持续的专业活动。有趣的是,我认为这两个群体都渴望自我指导并掌控自己所做的事情。

那么,作为一位试图让更多学生参与开源的教授,我还学到了什么?很多!

参与开源项目绝对对学生有益。我亲眼目睹学生获得了宝贵的专业知识和经验,通过参与开源项目,他们的技能得到提升,并形成了专业网络。许多学生受到参与开源项目的激励,这在传统课堂上是无法实现的。他们更好地理解了他们在课程中学到的那些看似深奥的东西的重要性。

设定期望很重要。期望很重要——对于学生和开源社区都是如此。为了支持成功的合作,上述文化差异必须被两个群体理解。从学术界和开源的角度来看,参与项目的实际方法和方式可能看起来非常不同。

我可以更具机会主义。我首选的方法是提前周密计划。与 Mel 的谈话让我意识到,有很多机会是自发出现的。只要稍加努力,如果我愿意改变——或放弃——我的计划,我就可以利用这些机会。

例如,在提前两天通知的情况下,Mel 和我设立了一个 Hack Share,我们邀请了 Sebastian Dziallas 来现场进行黑客马拉松(现场和面对面),并教学生如何打包应用程序。我本来不会尝试自己做这件事,因为我假设我需要提前时间来宣传、获取资源、找到场地——所有细节。然而,Sebastian 的演讲非常受欢迎,并且在一个小范围内取得了巨大的成功。

我能获得更多人参加吗?当然可以!但不在我的机会窗口内。由于计划时间很短,Hack Share 只接触到少数人。但如果我因为机会的紧迫性而拒绝尝试,那么这个活动可能根本不会发生。权衡是在规模较小的情况下接触到较少的人,但却有更多的体验。我与 Mel 的对话——以及我们通过这个快速形成的活动取得的成功——鼓励我利用出现的各种机会。

学术界需要确保回馈开源社区。学生参与开源软件开发的一个非常真实的危险是,学生将从社区学习,从社区获益,然后不向该社区提供任何回报。这违反了开源之道,并且很容易破坏开源/学术合作。在我看来,教授有责任找到一种方法来为开源社区提供一些回报价值。这种价值不一定需要以代码的形式出现,并且可以很容易地采取文档、wiki 管理或其他需要的任务的形式。

我相信我们让学生参与开源项目的努力将在长期内为开源社区带来回报。可能需要很多年才能收获这些好处。我这样说有几个原因。首先,大多数学生主要专注于他们的学位,然后是找到工作。这些人(理所当然地)将大部分精力放在建立事业上。这意味着至少在毕业后一年(甚至更长时间),这些人可能没有时间为开源项目做出贡献。

其次,我相信学生们会为开源事业摇旗呐喊,但这需要时间才能让这种理念传播开来。请记住,学生不是专业人士,除了所有其他课程的材料外,他们还在学习如何公开参与。与经验丰富的开发人员相比,他们进入开源领域的时间通常要长得多。

最后,与开源世界相比,学术界的步调就像蜗牛一样缓慢。教授们需要时间来理解让学生参与开源所提供的机会——以及所需的社会义务。他们甚至需要更长的时间来改变自己的课程以纳入开源;更长的时间才能将开源整合到整个课程中。

这些观察结果对开源社区既有积极的影响,也有消极的影响。坏消息是,在不久的将来,不太可能出现大量熟悉开源之道的大学毕业生涌入开源开发人员行列。更糟糕的是,计算机专业的学生人数尚未从 2000 年代发生的急剧下降中恢复过来。

好消息是,可能会有少量受过大学教育的开发人员涓涓细流般涌入,并且这小股细流可能会持续多年。我希望随着口碑传播以及更多教授采用让学生参与开源项目的方法,这股细流将会增长。

我们努力使开源在大学校园中更加普及的一个重要优势是什么?计算专业的学生群体以及更广泛的人群对开源的意识已经日益增强。学生们对参与开源项目感到兴奋,无论它是如何引入的。希望这种兴奋能在学术界——在课堂内外——燃起星星之火。

标签
User profile image.
海蒂·埃利斯是西新英格兰大学计算机科学与信息技术系的教授兼系主任。她长期以来对计算机教育感兴趣,自 2006 年以来一直支持学生参与开源软件。

11 条评论

海蒂,这是一篇很棒的文章。感谢您分享您的想法和经验。

我想就您提到的一个方面向您提出质疑,即职业重点部分。

<cite>这些人(理所当然地)将大部分精力放在建立事业上。这意味着至少在毕业后一年(甚至更长时间),这些人可能没有时间为开源项目做出贡献。</cite>

如果学术界将参与开源与实际找到职业结合起来会怎么样?换句话说,学生为什么不应该通过贡献来获得经验和知识,以便添加到他们的简历中,从而找到一份好工作呢?

我正在考虑 Google 的 Summer of Code,甚至考虑学术招聘部门是否可以开始在开源贡献和职业发展之间架起桥梁。

这甚至可能是另一篇文章的好主题。

嗨,Jason,

好观点!我知道学生们肯定利用了他们的开源经验,在求职时产生了积极的影响,开源经验已成为他们简历上的亮点。不幸的是,我也看到一些高年级学生在毕业后为了专注于工作需求而退出开源项目,尤其是当公司不太支持开源时。我希望发生的事情是,这些人一旦在他们的职业生涯中站稳脚跟,就会重返开源世界。我不确定如何从学术角度支持这种转变。

感谢您提供更多思考素材!

>而学术界则非常有计划性和结构性。开源方式强调短期优化和立即利用资源

开源方式立即利用资源,否则你最终会像学术界一样——一个项目拖延很久,太慢,永远不会完成,而且从设计角度来看,它往往结构过度。或者用外行的话来说,数学和计算机科学专业的学生所学的抽象思维使他们不必要地重新实现已经存在的东西,并添加冗余层。
例如:即使在 [ http://www.cs.waikato.ac.nz/~tcs/tmp/thething.html ] 这样的项目(仅对教学有用)中,您也会注意到学生倾向于将类(例如,在 C++/Java 实现中)的数量驱动到几乎荒谬的程度,以至于没有专业程序员会这样做。

哦,同意。学术界是最慢的实体之一,也许只比政府稍好一点 :-) 让学生参与开源项目的目标之一是尝试在开源开发中使用实用和现实世界的方法来教授计算,而不是教授将在开源或行业中使用的计算概念。让学生通过榜样来学习,可以这么说。

海蒂

我不清楚学术界是否像您的文章所暗示的那样缓慢地发展,当然也不是以结构化的方式发展——无论是好是坏,如今许多学术机构都比您描绘的图景更加混乱。
兼职讲师和其他短期教学人员的兴起,以及预算不确定性、对相关性和创新的压力,导致了节奏缓慢的“象牙塔”学术领域的瓦解。在我工作的地方,我 постоянно 需要处理在最后一刻被临时安排到课程中的新兼职讲师,而这些课程几乎是在时间表印刷之前才决定的。课程 постоянно 变化,并辅以课程,课程主题基本上是讲师即时定义的,有时是在与学生聊天了解他们的需求之后。甚至在二十年前,我还记得与一位教授讨论我想上她的莎士比亚课程的愿望,但由于已经上过本科莎士比亚课程(涵盖不同的剧本),因此无法获得学分。她为我定义了一门以《哈姆雷特》为重点的特殊研究课程,瞧!我能够上她的莎士比亚课程。我至今仍记得我为她写的长篇《哈姆雷特》论文。
其中一些发展是积极的,另一些则不然。也许不同的机构在它们变得更加快速和灵活的程度上有所不同,以及它们在多大程度上沦为按件计酬的教学。

更多来自 FLOSS 社区的评论

http://lwn.net/Articles/418368/#Comments

这是很棒的信息。我最近写了一篇关于开源参与对学生的好处的文章,您强调了在我发表我的观点后变得清晰的许多困难。

一些注意事项

>首先,大多数学生主要专注于他们的学位,然后是找到工作。

从经验和招聘的角度来看,我认为大多数学生会发现,如果他们参与开源项目,他们的时间会花得很值。在开源项目中发布代码(记录错误、编写文档……)是简历的绝佳补充,任何未能看到这些努力价值的组织都不是您应该寻求就业的组织。

>这两个环境的节奏也不同。

这让我想起了一篇关于“Tae 博士”(滑板运动,前物理学教授)的文章。他在 <a href="http://www.chicagoreader.com/chicago/yung-tae-kim-tony-hawk-shred-game-physics/Content?oid=2699227">这里</a> 被引用,将学习滑板描述为更好的教育模式,“学校是人为的和病态的东西,”[Tae] 说。“滑板运动所需的毅力和奉献精神——这才是我们需要教导的。没有人对蹒跚学步的孩子说,‘你只有十周的时间来走路,如果你不能,你就会不及格,并且不允许再尝试走路了。’这很荒谬,对吧?”

我们课程的安排可能比将开源和教育结合起来更困难,但我认为您的观点和 Tae 的观点突出了教育难以与开源结合的原因之一可能是因为我们的教育技术过于受限。尽管如此,您还是强调了适当的困难和推动努力前进的合理途径(缓慢但肯定地)。再次感谢您的精彩文章。

我认为您必须首先对学生参与开源项目设定一些期望。这包括对学生、他们的教授以及他们可能与之互动的项目的期望。我们当然读到过各种各样的人,他们在本科期间自己想出了一些想法,开发了它,然后走向现实世界并取得了成功。通常,似乎这些人放弃了获得学位的想法,以便他们可以成立一些初创公司。这不是人们想要在本科生中提倡的事情。
学术界是否了解全球范围内为开源项目做出贡献的人是谁?他们不是失业的无家可归者,出于某种绝望的心态而进行开源开发。很明显,他们并不期望从这些活动中变得富有。
他们是试图以无私的方式为社会做出贡献的人,为了某些智力上的刺激,让他们在全球范围内建立联系,与世界各地志同道合的人交朋友。
这与分析某人为何会成为大学教授有什么不同?显然不是为了财富。
大学教授面临的挑战是了解学生可能正在从事什么工作,看看这在智力上是否有效。但将此与他们在课堂上可能做的练习进行比较,以评估他们的技能,这些练习很容易评分,但在分配分数后就会消失。
学生可以从开源中获得的一件事是,他们可以永久地指出某个项目中的某些代码并说:“那是我做的。”

<cite>学生参与开源软件开发的一个非常真实的危险是,学生将从社区学习,从社区获益,然后不向该社区提供任何回报。这违反了开源之道,并且很容易破坏开源/学术合作。在我看来,教授有责任找到一种方法来为开源社区提供一些回报价值。</cite>

<p>或者,开源可以将其视为投资,就像他们为其他可能最终不会加入和参与项目的人提供支持时所做的那样。并非每个人都会这样做。 </p>

<p>但作为一项长期投资是有意义的,因为新一代程序员将拥有开源文化方面的经验,因此将来更有可能在企业中采用它。事实上,这可能是最终将所有软件开发转移到开源作为软件开发的主要首选方法的策略。</p>

<em> 我相信我们让学生参与开源项目的努力将在长期内为开源社区带来回报 </em>

海蒂,我也抱有这个希望。正如您通过参与 GNOME a11y 所知,我们在 Project:Possibility 很高兴看到一些 USC 和 UCLA 的学生在去年的 SS12 比赛期间在 GNOME Caribou 上工作。虽然学生们总是很高兴参与辅助功能项目,但代码是以开源许可证“转储”的。我们渴望提供参与真实开源项目的机会,以实现互惠互利。

当时的 Caribou 负责人 Ben Konrath 真正挺身而出,在比赛之前、期间和之后指导了他们。他引导他们完成了补丁提交,Stormy Peters 也为他们提供了贡献证书。这两者都旨在鼓励他们更多地参与 FOSS 社区活动。在 2 天的黑客马拉松中,如果您没有先前的经验,这种参与是很难的。

因此,GNOME Caribou 学生赢得了比赛决赛,并在圣地亚哥的 CSUN 辅助功能大会上进行了展示。现在他们已经各奔东西,没有人继续活跃在 GNOME a11y 社区中。

然而,我希望他们会汲取一段美好的回忆,这段回忆通过经验赋予了他们新的技能。也许在未来的某个时候,当合适的机会出现时,他们将为开源项目或 a11y 项目做出贡献。希望他们会选择 GNOME a11y。

我们可能永远无法确切知道。

我知道 Project:Possibility,以及 USC 和 UCLA 的学生为 Caribou 所做的巨大努力。我希望在未来几年内,我们将看到这项努力的回报,尽管我注意到,将最近的努力与几年前提供的动力联系起来可能很困难。仅仅拥有更多参与 OSS 的人将是一个迹象。

很好的想法!

Creative Commons License本作品根据知识共享署名-相同方式共享 3.0 未本地化许可协议获得许可。
© . All rights reserved.