开源走进校园 是由 OpenHatch 运营的系列活动,旨在向大学生介绍开源工具、项目和文化。每当我们在活动中收到新的问题时,我们都会将其记录下来,并在我们的博客上更全面地回答。以下是“不常问的问题”的集合,这些问题与开源项目的新手尤其相关。
问:我担心自己会成为项目的负担,因为我是新手。一个项目需要付出什么样的努力才能建立一个开源社区?
答:首先,您应该知道,像 Linus Torvalds 这样的开源社区建设专家也理解这种在新贡献者培训和现有维护者指导他们所需时间之间的紧张关系。我将引用 Linus 在 Linux 内核列表上 2004 年发布的帖子 中的两段话
2004 年 12 月 21 日星期二,Jesper Juhl 写道
我应该停止尝试进行这些微不足道的清理/修复/任何补丁吗?它们是噪音大于收益吗?我对 lkml 上更有技能的人来说是不是很麻烦,或者大家可以忍受我有时非常无知的补丁?我确实尝试从我收到的反馈中学习,并且我喜欢认为我的补丁正在逐渐变得更好,但如果我弊大于利,我最好还是停止。
Linus 回复说
对我来说,小补丁的最大意义不一定是补丁本身。我认为比补丁更重要的是,人们习惯了他们可以更改内核的概念——不仅仅是在智力层面上(“我理解 GPL 意味着我有权更改我的内核”),而是在更实际的层面上(“嘿,我做了那个小改动”)。
另一个要记住的事情是,对于大多数项目来说,项目负责人是唯一的贡献者 (来源)。考虑一下:作为一个新手,用问题打扰他们可能会让他们对整个项目更加热情!
如果建立一个易于访问的开源社区是微不足道的,那么几乎所有项目都会这样做。这需要付出一些努力。当然,许多使项目对新手友好的工作——良好的文档和设置指南、维护良好的问题跟踪器、积极的开发、社区行为准则——使项目对每个人都更好。但这确实需要时间和精力,许多项目社区不愿意付出这些。这就是 OpenHatch 存在的原因!我们知道有些项目在欢迎贡献者方面付出了更多努力,我们希望帮助您找到这些项目。
欢迎新手的项目类型不会将您视为负担。他们将您视为巨大的帮助——即使您正在努力理解问题跟踪器中的错误或设置开发环境。当您向开源项目的成员寻求帮助时,这会让他们了解项目的哪个部分令人困惑或不正确。您提出的问题和您需要的指导让他们知道以后如何帮助其他人。当然,一旦您熟悉了该项目,您将能够提供更多帮助。合适的项目会看到您身上的潜力,并希望与您合作来实现这一目标。
对于那些担心自己太麻烦的人(包括我们自己,有时!)两条经验法则:首先,如果邮件列表或错误跟踪器上的人没有告诉您停止说话,那么您可能没问题,即使他们还没有回复您。其次,如果您想要另一个意见,只需加入 #openhatch IRC 频道并询问我们。
问:开源项目如何审查更改?这些更改与 Wikipedia 之类的流程有何不同?
答:Wikipedia 的一个关键文化要素,至少在其历史上的大部分时间里,是任何人对英文 Wikipedia 的编辑都会立即成为百科全书的实时版本的一部分。相比之下,为了保持质量,开源项目通常只允许少数人直接合并更改到主项目中。因此,提交的更改需要经过审查。
不同的社区有不同的标准和流程。有时,根本没有审查,只有维护者自动合并。在其他情况下,例如 Linux,提交会发送到邮件列表 进行审查。另一些,例如 OpenHatch Web 应用程序,使用基于 Web 的工具,如 GitHub pull requests。更复杂流程的一个很好的参考是 OpenStack Gerrit 工作流程文档页面。
问:当您是一个忙碌的学生时,如何抽出时间为开源做贡献?
答:通过简单地使用开源程序,您就可以在帮助其他用户方面处于独特的地位。不要忘记,帮助人们使用软件是对社区的重大贡献!通过成为您使用的任何程序的专家,您还将获得知识,以帮助将他人提交的错误转换为主要开发人员可操作的报告。一旦您达到那个程度,您可能会发现修复问题更容易!
也就是说,在已经塞满了课程、有偿工作和学生生活的日程表中添加另一项活动可能会让人望而生畏。接近开源的一种方法是将它看作是您教育的一部分,而不是做功课的替代品。对于计算机科学专业的学生来说,开源项目是练习您在课堂上学到的概念的好方法。在其他科学领域,学习如何使用和贡献 R 或 Octave(或 ImageJ 或 PsychoPy 或 JMARS)等开源工具可以帮助您在进行实验室工作时脱颖而出,并且在您的简历上看起来很棒。即使在艺术和人文学科中,学习 Processing 等开源工具也可以帮助您取得成功。
对于在校期间工作的学生来说,开源项目可能是潜在的雇主。您可以申请 Google Summer of Code 或 GNOME Outreach Program,并在开源项目进行带薪实习。与开源合作的个别公司可能会雇用表现出足够兴趣和能力的学生。您甚至可以使用开源来雇用自己——例如,您可以使用 WordPress 和 Drupal 等开源工具进行自由职业网站和应用程序制作。
您也可以将开源作为您社交生活的一部分。加入(或启动)您校园的 Students For Free Culture 分会,或邀请朋友参加“错误修复派对”。
最后,请记住,您对开源的贡献可以根据您的意愿大小而定。如果您每月只有时间花几个小时编写文档或修复项目中的小错误,那也很棒——如果您决定更多地参与其中,您正在学习的技能和建立的联系将对您大有裨益。
问:面向开发人员的源代码下载和面向用户的下载之间有什么区别?什么是稳定版本?
答:开源项目通常以几种不同的方式发布程序。通常,如果您尝试做出贡献,您将需要从项目的版本控制系统中克隆或“检出”最新的源代码。如果您只是想使用该程序,您通常需要面向用户的下载。
许多程序的源代码不能直接在计算机上执行——它必须被“编译”,这将其从人类可读的文本转换为机器可执行的二进制文件。Java、C 和 C++ 是这种情况最常见的语言。因此,对于想要运行像 OpenOffice 这样主要用 C++ 编写的项目的人来说,最有用的下载是特定于其操作系统的已编译版本(例如,特定于 Windows 的版本)。相比之下,如果您想为该程序做出贡献,您应该像主要开发人员一样行事——也就是说,通过在可编辑的程序文本(源代码)上使用版本控制系统。
另一个重要的概念是稳定版本。在开发过程中,人们会做出破坏程序、与其他更改冲突或只是未完成的贡献。在任何给定点,最新版本都可能完全无法使用。因此,维护人员定期致力于发布(名词),这些版本经过测试以确保它们可用。如果它们可用,维护人员就会发布(动词)它。
因此,如果您是用户,您将需要最适合您的操作系统和计算机的稳定版本。如果您想做出贡献,您将需要最新的、未编译的版本。
问:所有开源项目都欢迎新手吗?您如何判断项目周围的社区是否充满了混蛋?
答:并非所有开源项目都欢迎新手。并非所有开源项目都需要欢迎新手。有些项目受益于保持社区小而经验丰富。而且,有些维护者只是没有精力和意愿来指导新人。
这没什么错,但当新手试图参与一个对他们不感兴趣的项目时,这很可惜。这对每个人来说都是令人沮丧的经历,而且当有很多人很乐意与他们合作时,这是没有必要的。
那么,您如何为自己(新手)找到一个好的项目来贡献呢?以下是一些好的迹象
- 一个庞大而活跃的社区更有可能拥有可以抽出时间指导的成员。这也意味着贡献将更快地得到处理。
- 良好的文档和演示意味着开发人员已经考虑过如何向人们介绍他们的项目。
- 一些项目有 行为准则/多元化声明,这表明社区正在努力成为一个安全和友好的空间。
- 作为 Google Summer of Code 或 GNOME Outreach Program for Women 一部分的项目已经承诺成为新手的良好环境。
在 OpenHatch,我们尝试识别对新手特别有益的项目。我们还在开发 OpenHatch 附属项目列表,这些项目正在与我们合作,尽可能简化对其项目的贡献。(如果您想出现在该列表中,请告诉我们!)随时联系我们并向我们询问建议,或询问某个特定项目是否以对新手友好而闻名。
当然,没有时间和精力帮助新手与积极地刻薄甚至辱骂之间是有区别的。如果您遇到后者并且可以放心地告诉我们,我们将尽力支持您。OpenHatch 的人总是愿意为加入项目提供建议,无论是帮助您找到美好的体验,还是最大限度地利用糟糕的体验。在 IRC 上(irc.freenode.net 上的 #openhatch)或通过电子邮件 hello@openhatch.org 找到我们。您也可以加入 Systers 或 Empowermentors Collective 等团体,这些团体可能会帮助您驾驭自由软件社区。
更多资源
本文是在“开源走进校园”活动期间收集的信息汇编
在我们的博客上阅读更多关于此系列活动的帖子。
有关参与 OpenHatch 的博客文章,请阅读我们两位贡献者的经历:Britta 和 Mandar。
2 条评论