蚊章汇 - 贡献
type: channel
link: https://linuxcn.bwsl.wang/tag/%E8%B4%A1%E7%8C%AE/
items: 我的第一个拉取请求被合并了！
items: 如何以非代码形式贡献开源
items: 成为为开源做贡献的技术写手的四个建议
items: 我的第一次开源贡献：做出决定
items: 《代码英雄》第二季（3）：准备提交
items: 如何提交你的第一个 Linux 内核补丁
items: 在开源项目中做出你的第一个贡献
items: Linux 如何成为我的工作
items: 8 种在你没有时间的时候为开源做贡献的方式
items: 如何向 Mozilla 开源社区做贡献

我的第一个拉取请求被合并了！
type: item
date: 2023-02-03T01:08:02+08:00
description: 体验为开源做出贡献的快乐。难以用言语形容我在收到合并通知（如下图）时的喜悦，当然这要归功于现在我上的工程学校 AltSchool Africa。在此之前，我曾多次接触过开源的概念，了解了它在技术领域的重要性，甚至参加过开源会议（比如 OSCAFest）。我曾多次跃跃欲试，但当打开 GitHub 来想创建些东西时，冒名顶替综合症就会冒出来。时间来到 2022 年 8 月 8 日星期一，当观看了 Bolaji 为开源做贡献的视频之后，我重新振奋起来。不过，想要把我学到的东西付诸实践，我注意到需要下面几个步骤：步骤：我要下定决心，做好为一个开源项目做出贡献的心理建设。我要根据我的技能水平进行筛选，我从一个站点（Good First Issues）寻找我开始的第一个项目。我不停地往下翻看，直到找到了一个符合心意的项目。我要确定自己掌握完成项目所需的 Git 和 GitHub 知识。LCTT 译注：“Good First Issues” 这个网站主要是针对那些想为开源软件做贡献，但不知道从哪里开始或如何开始的开发者。通过为开发者提供过滤器，该网站使他们能够根据自己熟悉的编程语言来浏览和选择问题和存储库。此外，他们还可以选择他们想要解决的问题的类型。项目经过长时间查找，我终于找到了一个名为 确保没有缺失的 alt 属性 的项目。我所要做的，就是为网站上的图片提供描述性的 alt 值。图片的 alt 值有助于提高网站的辅助功能，这样屏幕阅读器就可以向视障人士提供图像的详细描述了。这很简单，对吧？是的，但假如我没有下定决心想要作出贡献，我就不会找到这项目，在我心中开源仍将是个神话。我心潮澎湃，直到发现这个项目是来自 MDN 的。等等， MDN Mozzila 开发者网络 ？干和 Mozilla 的开发者一样的事儿？他们会合并我这么小儿科的贡献吗？冒名顶替综合症 又开始了。在检查这个议题时，我看到有人已经在提交贡献了，于是我鼓起勇气开始翻阅项目的内容。阅读和理解这个项目颇花费了我一些时间，而另一个要克服的，就是清楚处理这个议题我要怎么做。这个项目就像你想的那么简单。于是，我挑选了两幅图片着手尝试。我给它们的 alt 属性赋值，提交我的更改，然后发出拉取请求。从提交请求到收到批准邮件的这段时间，我充满了自我怀疑。我要不要关闭拉取请求？这可是 MDN 啊。好吧，这甚至都不算编程…… 如果请求没有被合并怎么办？我恐怕再也不会想为开源做出贡献了。不过，所有的疑虑都在我看到审阅者发来的这些邮件时烟消云散：我喜出望外，这激发了我去检查更多图片的热情，也给了我发请求解决其他议题所需的勇气。总结我希望你能从这篇文章中感受到以下几点：开源是面向所有人的。你在刚刚访问的那个网站上看到拼写错误了吗？你帮助订正了拼写错误，这就是为开源做出了贡献。没有任何技能是微不足道的。如你所见，我所做出的贡献，只需要对 HTML 最基本的了解。能阻止你做出贡献的只有你自己。要想让雪球滚起来，需要做的就只是提交第一个贡献。我衷心希望你能从我的经历中获得什么，并且今天就付诸实践。这也就是我想贡献的另一个领域，那么，我们下一篇文章见，也祝你开源愉快！这篇文章最初发布于 我的第一个拉取请求被合并，并经许可转载。via: https://opensource.com/article/22/9/first-pull-request-merged作者：Oluwaseun 选题：lkxed 译者：onionstalgia 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出

如何以非代码形式贡献开源
type: item
date: 2022-04-27T03:01:38+08:00
description: 事实上，有无穷无尽的方法来为开源做贡献，其中一个简单的方法就是回答我们的投票问题。你是如何参与开源贡献的呢？我们组织了一个投票，结果如下：提交错误报告 - 67 票（35%）解答用户的问题 - 39 票（20%）写作（指南、故事、文档等） - 73 票（38%）其他 - 12 票（6%）我的第一次开源贡献可以追溯到 20 世纪 80 年代中期，当时我们的机构第一次连上了 UseNet，在那里我们发现了贡献代码，以及在其开发和支持过程中和别人分享的机会。在今天，我们有无尽的贡献开源的机会。无论是贡献代码，还是制作一个视频教程，都是贡献的一种途径。不过，我将直接跳过整个贡献代码的部分。诚然，我们中有许多写代码但不认为自己是开发者的人，他们也可以 贡献代码。但是，我更想提醒大家，还存在很多 非代码形式可以贡献开源。接下来，我会谈到其中的三种。提交错误报告有一种重要而具体的贡献形式，它可以被描述为“不要畏惧 提交一个像样的错误报告”以及 与此相关的所有后果。有时，要 提交一个像样的错误报告 是很有挑战性的。比如说：某些错误可能很难记录或描述。当计算机启动时，屏幕上可能会出现又长又复杂的信息，其中包含各种不能理解的代码。或者屏幕上可能显示有一些“异常行为”，但是却没有提供具体的错误信息。某些错误可能很难重现。它可能只发生在某些特定的硬件/软件配置上，或者它可能很少被触发，或者错误的产生场景不明确。某些错误可能与一个非常特殊的开发环境配置有关，但是这个配置庞杂混乱，无法分享，需要先耗费大量精力创建一个精简后的例子才行。当向发行版报告一个错误时，维护者可能会建议将该错误提交给上游，这有时会需要付出大量的工作，因为发行版所提供的版本不是上游社区感兴趣的主要版本。（当发行版提供的版本落后于官方支持的发布和开发版本时，就会有这种情况发生）。尽管如此，我还是鼓励那些潜在的错误报告者（包括我）继续努力，并尝试让错误得到完整的记录和确认。但如何开始呢？你可以使用你最喜欢的搜索工具寻找类似的错误报告，看看它们是如何描述的，它们被归档在哪里，等等。你也可以留意你使用的发行版（例如，Fedora、openSUSE、Ubuntu）或软件包（LibreOffice、Mozilla）的错误报告页面，它们定义了正式的报告机制，你可以按步骤为他们报告相关错误。解答用户的问题我潜伏在各种邮件列表和 论坛 里，偶尔也会冒个泡，例如 Ubuntu 质量控制团队 和 论坛、LinuxQuestions.org，以及 ALSA 用户的邮件列表 等。在这里，我的贡献可能与错误报告的关系不大，更多的是记录复杂的用例。不过，看到有人热心帮助他人，解决他人在某个问题上的遇到的麻烦，对每个人来说，这都是无疑一种很棒的体验。从事开源相关的写作最后，另一个我非常喜欢贡献的领域是 撰写 关于使用开源软件的文章。无论是使用指南，还是对某一特定问题的不同解决方案进行比较评估，或者只是笼统地探索一个感兴趣的领域（就我而言，是使用开源音乐播放软件来享受音乐）。一个类似的选择是制作一个教学视频。你很容易就可以做到边演示一些复杂的桌面操作（比如用 GIMP 创建一个绚丽的标志），边 录制桌面。而那些精通两种或多种语言的人，也可以考虑将现有的使用指南或视频翻译成另一种语言。（LCTT 译注：读了这篇文章，你是不是想要马上投身于开源贡献呢？那么请考虑加入“Linux 中国翻译组（LCTT）”吧！我们有能帮助你快速上手翻译的 维基，有热心友爱的 QQ 群，你甚至还能够在我们的官网上获得属于自己的译者专页……心动了吗？那就立刻行动起来吧！阅读 维基 以了解如何加入我们。）via: https://opensource.com/article/19/4/contribute-without-code作者：Chris Hermansen 选题：lkxed 译者：lkxed 校对：校对者ID本文由 LCTT 原创编译，Linux中国 荣誉推出

成为为开源做贡献的技术写手的四个建议
type: item
date: 2021-11-11T18:08:11+08:00
description: 你的开源贡献将会向潜在雇主表明，你会主动寻求学习、成长和挑战自我的机会。不管你是一个对技术写作有所涉足的技术爱好者，还是一个想要转职为职业技术写手的成熟技术专家，你都可以构建你的技术写作作品集，并将你的开源贡献作为作品集的一部分。为开源项目写作是一件有趣、灵活且低风险的事情。按照自己的时间安排来为你感兴趣的项目做贡献，你将会为社区是多么热情或你对社区产生影响的速度而感到惊喜。你的开源贡献将会向潜在雇主表明，你会主动寻求学习、成长和挑战自我的机会。和任何事情一样，你需要从某个地方开始。为开源项目做贡献可以让你在展示你的才华的同时学到新技巧、新技术。另外，为开源项目写作能让你接触到新的社区、跨越时区与新鲜面孔合作，并建立你的社交网络。当你挖掘到新的开源机会后，你的简历将更抢眼，让你在其他候选人中脱颖而出。以下是为开源做出贡献的四个建议，这可以让你走向技术写作的职业生涯。学习行业工具作为开始，我建议先熟悉 Git，并建立 GitLab 和 GitHub 帐号，然后寻找一个趁手的文本编辑器。我个人喜欢使用开源工具 Atom。关于 Git，它能从网络上获取到丰富的免费学习资源，包括一些优秀的互动教程。你不需要成为一个 Git 高手才能深入开源世界。我建议先学习一些基本操作，然后让你的技能随着你的贡献逐渐成长。找到一个项目为开源做贡献最难的部分大概是找到一个项目来做贡献。你可以查看 Up For Grabs 并找一些感兴趣的项目。First Timers Only 有更多的起步资源。别犹豫，联系项目维护者来了解更多有关于项目的东西，并了解他们在何处需要帮助。请坚持下去。找到一个适合你的项目可能会花费一些时间。告别“冒充者综合症”一个常见的误区是你必须是一个程序员才能为开源项目做贡献。作为一个没有工程或计算机科学领域有关证书的、自学成材的贡献者，我能保证事实并非如此。文档往往开发项目中最价值但最被忽视的部分。这些项目经常缺少人手和资源来建立完善的、高质量的文档。这给你展现了一个绝佳机会来参与提交拉取请求或归档该项目的议题。你可以做到的！（LCTT 译注： 冒充者综合症 Impostor Syndrome ，又称自我能力否定倾向，指个体按照客观标准评价为已经获得了成功或取得成就，但是其本人却认为这是不可能的，他们没有能力取得成功，感觉是在欺骗他人，并且害怕被他人发现此欺骗行为的一种现象。）从小处开始查看你感兴趣的项目的仓库，找到可能存在的贡献指南并遵循。然后，寻找更新 README 文档或提交修改错别字的机会。没有什么贡献是微不足道的。项目维护者可能会为这些帮助感到高兴，而你也将会因把你提交的第一个的拉取请求收录进你的技术写作作品集而感到愉悦。via: https://opensource.com/article/21/11/technical-writing-open-source作者：Ashley Hardin 选题：lujun9972 译者：yingmanwumen 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出

我的第一次开源贡献：做出决定
type: item
date: 2020-10-30T19:24:01+08:00
description: 一位新的开源贡献者告诉你如何加入到开源项目中。先前，我把我的第一次开源贡献的拖延归咎于冒牌综合症。但还有一个我无法忽视的因素：我做出决定太艰难了。在成千上百万的开源项目中选择时，选择一个要做贡献的项目是难以抉择的。如此重负，以至于我常常不得不关掉我的笔记本去思考：“或许我改天再做吧”。错误之二是让我对做出决定的恐惧妨碍了我做出第一次贡献。在理想世界里，也许开始我的开源之旅时，心中就已经有了一个真正关心和想去做的具体项目，但我有的只是总得为开源项目做出贡献的模糊目标。对于那些处于同一处境的人来说，这儿有一些帮助我挑选出合适的项目（或者至少是一个好的项目）来做贡献的策略。经常使用的工具一开始，我不认为有必要将自己局限于已经熟悉的工具或项目。有一些项目我之前从未使用过，但由于它们的社区很活跃，或者它们解决的问题很有趣，因此看起来很有吸引力。但是，考虑我投入到这个项目中的时间有限，我决定继续投入到我了解的工具上去。要了解工具需求，你需要熟悉它的工作方式。如果你想为自己不熟悉的项目做贡献，则需要完成一个额外的步骤来了解代码的功能和目标。这个额外的工作量可能是有趣且值得的，但也会使你的工作时间加倍。因为我的目标主要是贡献，投入到我了解的工具上是缩小范围的很好方式。回馈一个你认为有用的项目也是有意义的。活跃而友好的社区在选择项目的时候，我希望在那里有人会审查我写的代码才会觉得有信心。当然，我也希望审核我代码的人是个和善的人。毕竟，把你的作品放在那里接受公众监督是很可怕的。虽然我对建设性的反馈持开放态度，但开发者社区中的一些有毒角落是我希望避免的。为了评估我将要加入的社区，我查看了我正在考虑加入的仓库的 议题 issue 部分。我要查看核心团队中是否有人定期回复。更重要的是，我试着确保没有人在评论中互相诋毁（这在议题讨论中是很常见的）。我还留意了那些有行为准则的项目，概述了什么是适当的和不适当的在线互动行为。明确的贡献准则因为这是我第一次为开源项目做出贡献，在此过程中我有很多问题。一些项目社区在流程的文档记录方面做的很好，可以用来指导挑选其中的议题并发起拉取请求。 Gatsby 是这种做法的典范，尽管那时我没有选择它们，因为在此之前我从未使用过该产品。这种清晰的文档帮助我们缓解了一些不知如何去做的不安全感。它也给了我希望：项目对新的贡献者是开放的，并且会花时间来查看我的工作。除了贡献准则外，我还查看了议题部分，看看这个项目是否使用了“ 第一个好议题 good first issue ”标志。这是该项目对初学者开放的另一个迹象（并可以帮助你学会要做什么）。总结如果你还没有计划好选择一个项目，那么选择合适的领域进行你的第一个开源贡献更加可行。列出一系列标准可以帮助自己缩减选择范围，并为自己的第一个拉取请求找到一个好的项目。via: https://opensource.com/article/19/11/my-first-open-source-contribution-mistake-decisions作者：Galen Corey 选题：lujun9972 译者：chenmu-kk 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出

《代码英雄》第二季（3）：准备提交
type: item
date: 2020-09-11T07:22:32+08:00
description: 代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。什么是《代码英雄》 代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽（Red Hat）精心制作的原创音频播客，讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。本文是《代码英雄》系列播客第二季（3）：准备提交的音频脚本。导语：想进入开源领域但不知道从哪里开始？你是一个贡献者，想知道为什么只有一些 拉取请求 Pull Request 被接受？或者，你是一个感觉有点不知所措的维护者？这一集将探讨投身于一个开源项目的意义。我们将跟随我们的英雄们，跟着他们在开源贡献者的角色中不断进步：从寻找项目并为其做出贡献，到建立和维护繁荣的社区。Shannon Crabill 在 2017 年的 Hacktoberfest 上分享了她是如何开始从事开源工作的，而 Corinne Warnshuis 则介绍了将来自各种背景的人纳入到创造优秀软件的过程中是多么重要。为开源做出贡献的方式有很多。让我们一起来了解一下。00:00:03 - Nolan Lawson：在我刚开始做软件开发的时候，我基本上只做些让自己开心的小项目，像小应用程序、命令行小工具之类的。00:00:12 - Lindsey Tulloch：我只是真的不知道作出贡献那么容易。而且你不需要解决 P = MP 那样的难题，你的投入依然可以是很有价值的。00:00:21 - Kanika Muraka：本地社区使我有了足够的信心去做出贡献。00:00:28 - Saron Yitbarek：当我还完全是个编程新手的时候，我和我的朋友 Dan 一起发起了我的第一个开源 拉取请求 Pull Request （PR），这也是我的第一次开源贡献。00:00:42：我听过很多为开源做贡献的故事，说它有多么神奇，有多么可怕。我很清楚，并非所有社区都和善，也不是所有维护者都很友好。00:00:57：那个项目本身对新手来说相当不错。我们只是添加了一个 JavaScript 库，让人们可以在线预览网站。这是一个很好的适用范围很广、自成体系的项目。而且如果这玩意儿不起作用，我基本上确信它不会毁掉整个网站。00:01:18：然而，我对这个 PR 非常紧张。我和 Dan 阅读了这个库的文档，埋头于写我们的代码。我仍记得当我们最终完成的时候，只是互相看着彼此，好像在说：“就这样吗？”我们发起了 PR。它被审查，然后合并，我想我至今还是对这一切感到惊讶，我还是不知道这些机制是怎么运行的。00:01:43：这并不是什么只有他们才能做到的，也不是什么神秘或神奇的事情。我意识到我确实也可以对开源作出贡献。这是我们在这一集中想要传递的一点知识 —— 为开源做出贡献并不神奇，它也不一定可怕。我们将带你一起走过这个过程。00:02:05 - Lindsey Tulloch：这是一个突破性的认识，这些项目实际上是完全开放的，我也可以做出贡献。00:02:15 - Saron Yitbarek：在这一场的开场白中，你会听到像你一样的代码英雄在加入开源行列时，经历着同样的恐惧。他们分别是 Nolan Lawson、 Lindsey Tulloch、 Kanika Muraka，这些是今天来做客的代码英雄。00:02:34：你正在收听的是红帽公司的原创播客节目《代码英雄》。我是主持人 Saron Yitbarek。00:02:47：这是一个关于两个代码英雄的故事，他们只是想在广阔的开源世界中，做出更好的东西。他们其中一个人是贡献者，另一个人是维护者。他们都不是真实存在的人物，而是两个虚构人物，用来代表所有的贡献者和维护者，他们和我们分享了他们的故事。希望你也可以在他们的历程中看到一些你自己的影子。00:03:16：首先来见一见我们的朋友 —— 贡献者。她是个新手，就像曾经的我们那样。她不确定基本的工作流是什么，但是她看到了一个需求，并且认为她可以添加一个功能来提供帮助。我们这个虚构的贡献者很想提交代码，但是该怎么做呢？00:03:44 - Corinne Warnshuis：你一直在成长，学习新技能。而且你不一定必须在孩提时代拆过电脑，才有资格在成年后学写代码。00:03:52 - Saron Yitbarek：这位是 Corinne Warnshuis，一个名叫“Girl Develop It” 的很棒的组织的执行董事。该组织的目的是帮助那些可能不太敢提问的，或在聚会中觉得自己不太受欢迎的女性。00:04:07：Girl Develop It 意识到…

如何提交你的第一个 Linux 内核补丁
type: item
date: 2018-10-13T07:23:11+08:00
description: 学习如何做出你的首个 Linux 内核贡献，以及在开始之前你应该知道什么。Linux 内核是最大且变动最快的开源项目之一，它由大约 53,600 个文件和近 2,000 万行代码组成。在全世界范围内超过 15,600 位程序员为它贡献代码，Linux 内核项目的维护者使用了如下的协作模型。本文中，为了便于在 Linux 内核中提交你的第一个贡献，我将为你提供一个必需的快速检查列表，以告诉你在提交补丁时，应该去查看和了解的内容。对于你贡献的第一个补丁的提交流程方面的更多内容，请阅读 KernelNewbies 的第一个内核补丁教程。为内核作贡献第 1 步：准备你的系统。本文开始之前，假设你的系统已经具备了如下的工具：文本编辑器Email 客户端版本控制系统（例如：git）第 2 步：下载 Linux 内核代码仓库。git clone -b staging-testing git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git复制你的当前配置：cp /boot/config-`uname -r`* .config第 3 步：构建/安装你的内核。make -jX sudo make modules_install install第 4 步：创建一个分支并切换到该分支。git checkout -b first-patch第 5 步：更新你的内核并指向到最新的代码。git fetch origin git rebase origin/staging-testing第 6 步：在最新的代码库上产生一个变更。使用 make 命令重新编译，确保你的变更没有错误。第 7 步：提交你的变更并创建一个补丁。git add <file> git commit -s -v git format-patch -o /tmp/ HEAD^主题是由冒号分隔的文件名组成，跟着是使用祈使语态来描述补丁做了什么。空行之后是强制的 signed off 标记，最后是你的补丁的 diff 信息。下面是另外一个简单补丁的示例：接下来，从命令行使用邮件（在本例子中使用的是 Mutt）发送这个补丁：mutt -H /tmp/0001-<whatever your filename is>使用 get\_maintainer.pl 脚本，去了解你的补丁应该发送给哪位维护者的列表。提交你的第一个补丁之前，你应该知道的事情Greg Kroah-Hartman 的 staging tree 是提交你的 第一个补丁 的最好的地方，因为他更容易接受新贡献者的补丁。在你熟悉了补丁发送流程以后，你就可以去发送复杂度更高的子系统专用的补丁。你也可以从纠正代码中的编码风格开始。想学习更多关于这方面的内容，请阅读 Linux 内核编码风格文档。checkpatch.pl 脚本可以帮你检测编码风格方面的错误。例如，运行如下的命令：perl scripts/checkpatch.pl -f drivers/staging/android/* | less你可以去补全开发者留下的 TODO 注释中未完成的内容：find drivers/staging -name TODOCoccinelle 是一个模式匹配的有用工具。阅读 归档的内核邮件。为找到灵感，你可以去遍历 linux.git 日志去查看以前的作者的提交内容。注意：不要与你的补丁的审核者在邮件顶部交流！下面就是一个这样的例子：错误的方式：Chris, Yes let’s schedule the meeting tomorrow, on the second floor. > On Fri, Apr 26, 2013 at 9:25 AM, Chris wrote: > Hey John, I had some questions: > 1. Do you want to schedule the meeting tomorrow? > 2. On which floor in the office? > 3. What time is suitable to you?（注意那最后一个问题，在回复中无意中落下了。）正确的方式：Chris, See my answers below... > On Fri, Apr 26, 2013 at 9:25 AM, Chris wrote: > Hey John, I had some questions: > 1. Do you want to schedule the meeting tomorrow? Yes tomorrow is fine. > 2. On which floor in the office? Let's…

在开源项目中做出你的第一个贡献
type: item
date: 2018-07-03T19:09:48+08:00
description: 这是许多事情的第一步有一个普遍的误解，那就是对开源做出贡献是一件很难的事。你可能会想，“有时我甚至不能理解我自己的代码；那我怎么可能理解别人的？”放轻松。直到去年，我都以为是这样。阅读和理解他人的代码，然后在他们的基础上写上你自己的代码，这是一件令人气馁的任务；但如果有合适的资源，这不像你想象的那么糟。第一步要做的是选择一个项目。这个决定是可能是一个菜鸟转变成一个老练的开源贡献者的关键一步。许多对开源感兴趣的业余程序员都被建议从 Git 入手，但这并不是最好的开始方式。Git 是由许多有着多年软件开发经验的超级极客维护的。它是寻找可以做贡献的开源项目的好地方，但对新手并不友好。大多数对 Git 做出贡献的开发者都有足够的经验，他们不需要参考各类资源或文档。在这篇文章里，我将提供一个对新手友好的特性的列表，并且给出一些建议，希望可以使你更轻松地对开源做出贡献。理解产品在开始贡献之前，你需要理解项目是怎么工作的。为了理解这一点，你需要自己来尝试。如果你发现这个产品很有趣并且有用，它就值得你来做贡献。初学者常常选择参与贡献那些他们没有使用过的软件。他们会失望，并且最终放弃贡献。如果你没有用过这个软件，你不会理解它是怎么工作的。如果你不理解它是怎么工作的，你怎么能解决 bug 或添加新特性呢？要记住：尝试它，才能改变它。确认产品的状况这个项目有多活跃？如果你向一个暂停维护的项目提交一个 拉取请求 pull request ，你的请求可能永远不会被讨论或合并。找找那些活跃的项目，这样你的代码可以得到即时的反馈，你的贡献也就不会被浪费。这里介绍了怎么确认一个项目是否还是活跃的：贡献者数量： 一个增加的贡献者数量表明开发者社区乐于接受新的贡献者。 提交 commit 频率： 查看最近的提交时间。如果是一周之内，甚至是一两个月内，这个项目应该是定期维护的。维护者数量： 维护者的数量越多，你越可能得到指导。聊天室或 IRC 活跃度： 一个繁忙的聊天室意味着你的问题可以更快得到回复。新手资源Coala 是一个开源项目的例子。它有自己的教程和文档，让你可以使用它（每一个类和方法）的 API。这个网站还设计了一个有吸引力的界面，让你有阅读的兴趣。文档： 不管哪种水平的开发者都需要可靠的、被很好地维护的文档，来理解项目的细节。找找在 GitHub（或者放在其它位置）或者类似于 Read the Docs 之类的独立站点上提供了完善文档的项目，这样可以帮助你深入了解代码。教程： 教程会给新手解释如何在项目里添加特性 （然而，你不是在每个项目中都能找到它）。例如，Coala 提供了 小熊编写指南 （进行代码分析的 代码格式化 linting 工具的 Python 包装器）。分类的 讨论点 issue ： 对刚刚想明白如何选择第一个项目的初学者来说，选择一个讨论点是一个更加困难的任务。标签被设为“难度/低”、“难度/新手”、“利于初学者”，以及“ 触手可及 low-hanging fruit ”都表明是对新手友好的。其他因素维护者对新的贡献者的态度： 从我的经验来看，大部分开源贡献者都很乐于帮助他们项目里的新手。然而，当你问问题时，你也有可能遇到一些不太友好的人（甚至可能有点粗鲁）。不要因为这些人失去信心。他们只是因为在比他们经验更丰富的人那儿得不到发泄的机会而已。还有很多其他人愿意提供帮助。审阅过程/机制： 你的拉取请求将经历几遍你的同伴和有经验的开发者的查看和更改——这就是你学习软件开发最主要的方式。一个具有严格审阅过程的项目使您在编写生产级代码的过程中成长。一个稳健的 持续集成 continuous integration 管道： 开源项目会向新手们介绍持续集成和部署服务。一个稳健的 CI 管道将帮助你学习阅读和理解 CI 日志。它也将带给你处理失败的测试用例和代码覆盖率问题的经验。参加编程项目（例如 Google Summer Of Code）： 参加组织证明了你乐于对一个项目的长期发展做贡献。他们也会给新手提供一个机会来获得现实世界中的开发经验，从而获得报酬。大多数参加这些项目的组织都欢迎新人加入。7 对新手友好的组织coala (Python)oppia (Python, Django)DuckDuckGo (Perl, JavaScript)OpenGenus (JavaScript)Kinto (Python, JavaScript)FOSSASIA (Python, JavaScript)Kubernetes (Go)关于作者Palash Nigam - 我是一个印度计算机科学专业本科生，十分乐于参与开源软件的开发，我在 GitHub 上花费了大部分的时间。我现在的兴趣包括 web 后端开发，区块链，和 All things python。…

Linux 如何成为我的工作
type: item
date: 2018-03-12T06:31:37+08:00
description: IBM 工程师 Phil Estes 分享了他的 Linux 爱好如何使他成为了一位开源领袖、贡献者和维护者。从很早很早以前起，我就一直使用开源软件。那个时候，没有所谓的社交媒体。没有火狐，没有谷歌浏览器（甚至连谷歌也没有），没有亚马逊，甚至几乎没有互联网。事实上，那个时候最热门的是最新的 Linux 2.0 内核。当时的技术挑战是什么？嗯，是 Linux 发行版本中旧的 a.out 格式被 ELF 格式代替，导致升级一些 Linux 的安装可能有些棘手。我如何将我自己对这个初出茅庐的年轻操作系统的兴趣转变为开源事业是一个有趣的故事。Linux 为乐趣为生，而非利益1994 年我大学毕业时，计算机实验室是 UNIX 系统的小型网络；如果你幸运的话，它们会连接到这个叫做互联网的新东西上。我知道这难以置信！（那时，）“Web”（就是所知道的那个）大多是手写的 HTML，cgi-bin 目录是启用动态 Web 交互的一个新平台。我们许多人对这些新技术感到兴奋，我们还自学了 shell 脚本、Perl、HTML，以及所有我们在父母的 Windows 3.1 PC 上从没有见过的简短的 UNIX 命令。毕业后，我加入 IBM，工作在一个不能访问 UNIX 系统的 PC 操作系统上，不久，我的大学切断了我通往工程实验室的远程通道。我该如何继续通过 Pine 使用 vi 和 ls 读我的电子邮件的呢？我一直听说开源 Linux，但我还没有时间去研究它。1996 年，我在德克萨斯大学奥斯丁分校开始读硕士学位。我知道这将涉及编程和写论文，不知道还有什么，但我不想使用专有的编辑器，编译器或者文字处理器。我想要的是我的 UNIX 体验!所以我拿了一个旧电脑，找到了一个 Linux 发行版本 Slackware 3.0，在我的 IBM 办公室下载了一张又一张的软盘。可以说我在第一次安装 Linux 后就没有回过头了。在最初的那些日子里，我学习了很多关于 Makefile 和 make 系统、构建软件、补丁还有源码控制的知识。虽然我开始使用 Linux 只是为了兴趣和个人知识，但它最终改变了我的职业生涯。虽然我是一个愉快的 Linux 用户，但我认为开源开发仍然是其他人的工作；我觉得在线邮件列表都是神秘的 UNIX 极客的。我很感激像 Linux HOWTO 这样的项目，它们在我尝试添加软件包、升级 Linux 版本，或者安装新硬件和新 PC 的设备驱动程序撞得鼻青脸肿时帮助了我。但是要处理源代码并进行修改或提交到上游……那是别人的事，不是我。Linux 如何成为我的工作1999 年，我终于有理由把我对 Linux 的个人兴趣与我在 IBM 的日常工作结合起来了。我接了一个研究项目，将 IBM 的 Java 虚拟机（JVM）移植到 Linux 上。为了确保我们在法律上是安全的，IBM 购买了一个塑封的盒装的 Red Hat Linux 6.1 副本来完成这项工作。在 IBM 东京研究实验室工作时，为了编写我们的 JVM 即时编译器（JIT），参考了 AIX JVM 源代码和 Windows 及 OS/2 的 JVM 源代码，我们在几周内就有了一个可以工作在 Linux 上的 JVM，击败了 SUN 公司官方宣告花了几个月才把 Java 移植到 Linux。既然我在 Linux 平台上做得了开发，我就更喜欢它了。到 2000 年，IBM 使用 Linux 的频率迅速增加。由于 Dan Frye 的远见和坚持，IBM 在 Linux 上下了“一亿美元的赌注”，在 1999 年创建了 Linux 技术中心（LTC）。在 LTC 里面有内核开发者、开源贡献者、IBM 硬件设备的驱动程序编写者，以及各种各样的针对 Linux 的开源工作。比起留在与 LTC 联系不大的部门，我更想要成为这个令人兴奋的 IBM 新天地的一份子。从 2003 年到 2013 年我深度参与了 IBM 的 Linux 战略和 Linux 发行版（在 IBM 内部）的使用，最终组成了一个团队成为大约 60 个产品的信息交换所，Linux 的使用涉及了 IBM 每个部门。我参与了收购，期望每个设备、管理系统和虚拟机或者基于物理设备的中间件都能运行 Linux。我开始熟悉 Linux 发行版的构建，包括打包、选择上游来源、开发发行版维护的补丁集、做定制，并通过我们的发行版合作伙伴提供支持。由于我们的下游供应商，我很少提交补丁到上游，但我通过配合 Ulrich Drepper （将一个小补丁提交到 glibc）和改变时区数据库的工作贡献了自己的力量（Arthur David Olson 在 NIH 的 FTP 站点维护它的时候接受了这个改变）。但我仍然没有把开源项目的正式贡献者的工作来当做我的工…

8 种在你没有时间的时候为开源做贡献的方式
type: item
date: 2017-07-15T00:32:33+08:00
description: 在忙碌的生活中抽出时间回馈给你关心的项目。人们不给开源做贡献（或不能做更多贡献）的最常见的原因之一是缺乏时间。人艰不拆，有这么多的优先的事情争夺你有限的注意力。那么，如何才能在忙碌的生活中为你关心的开源项目抽出时间呢？为了充分披露，我需要提醒你，我延误了把这篇文章给编辑的时间，因为我抽不出时间写它，所以是否接受我的建议，请自行承担风险。找出你所关心的贡献的第一步是弄清楚你正在做些什么。你有一个你自己的为之努力的项目吗？有没有一个你想要帮助的具体项目？或者你只是想做某个事情？弄清楚你正在做的事情将帮助你决定你的生活中的优先事项。找出其他的方法贡献编写新功能可能需要数小时的设计、编码和测试。这对于那种只有几分钟时间就得离开，然后再从原来的地方重新开始的情况下并不容易。如果你没有办法进行长于 30 分钟的无中断工作，当你试着完成一个大的任务时，你或许会感到沮丧。但还有或许可以满足你的需求的其它贡献方式，可以让你利用起来空闲的时间。其中一些可以通过智能手机快速完成，这意味着人们可以避免在通勤上浪费时间，并将其用于开源贡献。以下是可以在小块时间中完成的一些事情列表：Bug 分类： 所有的 bug 报告都有必要的信息来诊断和解决它们么？它们是否妥善提交（给出正确的范围，正确的严重程度等）了么？邮件列表支持： 用户或其他贡献者在邮件列表中提出了问题？也许你可以帮忙。文档修补： 文档经常（但不总是）可以比代码用更小块的时间来处理。也许有几个地方你可以补充一下，或者也许是时候浏览一下文档并确保它们仍然准确了。营销： 在社交媒体上谈论你的项目或者社区。写一篇快速入门博文。在新闻聚合里投票和评论。与你的老板交谈你可能会认为在上班时间里你不能在开源项目上工作，但是你有问过么？ 特别是如果这个项目以某种方式与你的日常工作相关，那你或许可以和你的老板谈谈，让你可在工作时做出贡献。请注意，这可能存在一些知识产权问题（例如，谁拥有你在工作时间内提供的代码的权利），因此首先做一下研究并以书面形式获得授权。设置最后期限我所学到的最佳时间管理建议可以归纳为两个规则：如果要完成，它必须有一个截止日期可以更改最后期限这篇文章有一个最后期限。它没有特别的时间敏感性，但最后期限意味着我定义了什么时候想完成它，并给编辑一个什么时候可以提交的感觉。是的，如上所述，我错过了最后期限。但你知道发生了什么事么？我设定了一个新的期限（二手才最棒！）。如果有些事是时间敏感的，在你需要返工一两次时，设置最后期限也可以给你一些空间。将它放到你的日程上如果你使用日历安排你的生活，那用它安排一些时间来开展你的开源项目，可能是完成此项工作的唯一方法。你计划多少时间取决于你自己，但即使你每周只用一小时作为开源时间，这仍会给你每周一小时的开源时间。这有一个秘密：有时候，如果你需要时间去做别的事情，或者什么都不想做，那么可以自己取消它。开拓未使用的时间你在通勤中感到无聊吗？你晚上睡觉困难么？也许你可以利用这个时间来贡献。现在我认为“每周完全投入工作 169 个小时”的生活方式是一件非常可怕的事情。也就是说，有些夜晚你不能入睡。也许你已经意识到了可以做贡献，而不是躺在床上看看你的 Twitter 上的朋友在世界的另一边做了什么（如我做的）。但是不要养成放弃睡眠的习惯。停止有时，贡献最好的方式是一点不贡献。你是一个忙碌的人，不管你是多么的棒，你不能避开你的生理和心理的需要，它们会找上你。花点时间来休息，这也许可以提高你的生产力，使你的工作更快，突然间你就有时间去做那些你一直想做的开源贡献了。说“不”我不擅长这个，所以我做的并不好。但是没有人能做到任何想做的事情。有时候，你可以做的最好的事情是停止贡献，就像以前一样，或者没有贡献（参见上文）。几年前，我领导了 Fedora 文档团队。团队的传统是，在每次发布结束时, 领导会主动提出下台。我已经做了一两次，没有人想要替代我，所以我继续保持着这个角色。但是在我的第二或第三次发布之后，我明确表示，我不会继续担任团队领导了。我还是很喜欢这份工作，但我有一份全职的工作，而且在研究生读到一半时，我的妻子怀了我们的第一个孩子。我没有办法做到始终如一的努力，所以我退出领导了。我继续做出贡献，但是在要求较低的能力的位置中。如果你正在努力抽出时间来满足你的义务（自我强加的或者不是），那么也许现在是重新考虑你的角色了。这对于你自己创建的或者已经大量投资的项目来说很困难，但有时你不得不这么做——为了你自己好以及项目本身。其他还有什么？你如何找到时间作出贡献？ 让我们在评论中知道。（题图： opensource.com）作者简介：Ben Cotton - Ben Cotton 是一个培训过的气象学家和一个职业的高效计算机工程师。 Ben 在 Cycle Computing 做技术传教…

如何向 Mozilla 开源社区做贡献
type: item
date: 2017-02-14T18:08:00+08:00
description: 千里之行，始于足下 （ The journey of a thousand miles begins with one step ） —— 老子参与开源工作有很多好处，可以帮助你优化和加速技术生涯，包括但不仅限于提高现实中的技术经验和拓展你的专业人脉。有很多你能做贡献的开源项目，无论是小型、中型、大型，还是不知名或知名的项目。在这篇文章里我们将专注于如何为网上最大、最有名的开源项目之一 ，Mozilla ，做出贡献。为什么要向 Mozilla 做贡献？现实经验Mozilla 是网络上最大的开源项目之一，其也托管了许多其他的开源项目。所以，当你为像 Mozilla 这样的大型开源项目做贡献时，你能真正接触到技术领域中的事物是如何工作的，能增长关于技术术语和复杂系统功能的知识。最重要的是，你能理解如何将代码从本地系统移动到实际的代码仓库里。你将会学习在管理大型项目时，贡献者们使用的许多工具和技术，如 Github 、Docker、Bugzilla 等。社区联系社区是任何开源项目的核心。向 Mozilla 做贡献将你与 Mozilla 的员工和顾问、资深 Mozilla 贡献者（又称 Mozillians）以及你当地的 Mozilla 社区相互联系在一起。社区里有着同样关注并致力于改善开源项目的志趣相投的人们。你也能有个机会来建立在 Mozilla 社区里的专属身份，激励其他 Mozillians 同伴。如果你想的话，最后你也能指导其他人。活动和酷物件没有点充满乐趣的活动和小礼品的社区是不完整的。Mozilla 也不例外。向 Mozilla 做贡献能给你机会参加 Mozilla 的内部活动。一旦你成为熟练的 Mozilla 贡献者，你将能主持你当地的 Mozilla 活动（Mozilla 或许会予以资金支持）。当然，会另外提供些小礼品 —— 贴纸，T恤，马克杯等。根据 CC BY-SA 4.0 协议分享，印度 2016 Mozilla 聚会， Moin Shaikh 提供。如何向 Mozilla 做贡献不管您是编程人员、网页设计师、品质控制测试者、翻译，或者是介于之间的任何职业，都有许多不同的方式向 Mozilla 做贡献。让我们看看以下两个主要方面：技术贡献和非技术贡献。根据 CC BY-SA 3.0 协议分享， Mozilla.org 供图。技术贡献技术贡献是给那些喜欢编程，想要用他们的代码来弄出点动静的人。有不同的用特定编程语言的项目可供施展能力。如果喜欢 C++ ，你能向火狐的核心层和其他 Mozilla 产品做贡献。如果喜欢 JavaScript、HTML 和 CSS ，你能向火狐的前端做贡献。如果你懂得 Java ，你能向火狐移动端、火狐安卓版和 MozStumbler （LCTT 译注：MozStumbler 是 Mozilla 开源的无线网络扫描程序）做贡献。如果你懂得 Python ，你能给网络服务，包括 火狐同步 （ Firefox Sync ） 或者 火狐账户 （ Firefox Accounts ） 做贡献。如果你懂得 Shell、Make、Perl 或者 Python ，你能给 Mozilla 的编译系统和发布引擎和自动化做贡献。如果你懂得 C 语言，你能给 NSS、Opus 和 Daala 做贡献。如果你懂得 Rust 语言，你能给 RustC、Servo（一个为并行、安全而设计的网页浏览器引擎）或者 Quantum （一个将大量 Servo 转化为 Gecko 的项目）做贡献。如果你懂得 Go 语言，你能给 Heka 做贡献，这是一个数据处理工具。要获取更多信息，可以访问 Mozilla 开发者网络 Mozilla Developer Network （MDN）的开始部分来了解不同的贡献领域。除了语言和代码，积极测试火狐浏览器的各个部分、火狐安卓浏览器和 Mozilla 的很多网络组件，例如火狐附加组件等，这样也能贡献你的品质保证（QA）和测试能力。非技术贡献你也可以给 Mozilla 提供非技术贡献，专注于以下领域：品质保证（QA）测试，文档翻译，用户体验/用户界面（UX/UI）设计， Web 识别 （ web literacy ） ， 开源宣讲 （ open source advocacy ） ，给 Mozilla 的火狐用户、雷鸟用户提供支持等。品质保证（QA）测试： Mozilla 的 QA 团队遍及全世界，有着庞大且活跃的社区，他们深入参与到了火狐及 Mozilla 的其他项目中。QA 贡献者早期介入到各种产品，探索新的特性，记录漏洞，将已知漏洞分类，编写并执行测试用例，进行自动化测试，并从可用性角度提供有价值的反馈。想开始或者了解更多 Mozilla QA 社区资源，请访问 Mozilla …